赤の水平線がショートポジション
緑色がFX_BTCのLTP(最新価格)
ショートしたとたん価格が上昇しているので含み損が膨れ上がっています(/_;)
discordなので、スマホで見ることも出来る
グラフ改良型
(ロジックもチマチマ判定するように変更)
改良型
ソース
mocakoさんのmatplotib描画を参考
import numpy as np import matplotlib.pyplot as plt import json import requests import urllib.parse import logging import logging.config import csv import time, datetime import datetime import os from config import Config from pprint import pprint import pybitflyer#ラッパー cfg = Config() api = pybitflyer.API(api_key=cfg.api_key, api_secret=cfg.api_secret) data=[] def get_ticker(): try: response1=requests.get('https://api.bitflyer.com/v1/getticker?product_code=FX_BTC_JPY').json() time.sleep(2) position= api.getpositions(product_code='FX_BTC_JPY')#[0]['price'] if position: if position[0]['side']=='BUY': response2=position[0]['price'] response3=response1['ltp'] else: response3=position[0]['price'] response2=response1['ltp'] else: response2=response1['ltp'] response3=response1['ltp'] return (response1['ltp'],response2,response3) except: time.sleep(2) response1=requests.get('https://api.bitflyer.com/v1/getticker?product_code=FX_BTC_JPY').json() time.sleep(2) position= api.getpositions(product_code='FX_BTC_JPY')#[0]['price'] if position: if position[0]['side']=='BUY': response2=position[0]['price'] response3=response1['ltp'] else: response3=position[0]['price'] response2=response1['ltp'] else: response2=response1['ltp'] response3=response1['ltp'] return (response1['ltp'],response2,response3) def init(): firstdata = requests.get('https://api.bitflyer.com/v1/getticker?product_code=FX_BTC_JPY').json()['ltp'] initialdata=(firstdata,firstdata,firstdata) print ('initialdata',initialdata) #最初は同じ値(tick)で埋める for x in range(500): data.append(initialdata) def discord(image):#discord 画像送信 # Discordで発行したWebhookのURLを入れる discord_webhook_url = cfg.discord_token #data = {"content": " " + message + " "} file={'upload_file':open(image,'rb')} #requests.post(discord_webhook_url, data=data) requests.post(discord_webhook_url, files=file) #discord('ファイル名') def pause_plot(): count=0 inp=int(input('何回廻すズラ?')) fig, ax = plt.subplots(1, 1) ''' numpy.arange([start, ]stop, [step, ]dtype=None) Pythonのrange関数とほぼ同じ関数ですが、返り値がlistではなく np.arrayである 要素に小数(0.1など)を使いたい場合は、np.linspaceの方が適しています。 ''' x = np.arange(0,500,1) y1 = [] y2 = [] y3 = [] for z in data: y1.append(z[0]) y2.append(z[1]) y3.append(z[2]) # 初期化的plot #color="b"(青), "g"(緑), "r"(赤), "c"(シアン), "m"(マゼンダ), "y"(イエロー), "k"(黒), "w"(白) lines3, = ax.plot(x, y1, label="SHORT",color='r') lines2, = ax.plot(x, y2, label="LONG",color='g') lines1, = ax.plot(x, y3, label="BTC",color='c') plt.legend() # ここから無限にplot while count<inp: print(count,end='') # plotデータの更新 lastdata = get_ticker() pprint(lastdata) y1.pop(0) y1.append(lastdata[0]) y2.pop(0) y2.append(lastdata[1]) y3.pop(0) y3.append(lastdata[2]) # 描画データセット lines1.set_data(x, y1) lines2.set_data(x, y2) lines3.set_data(x, y3) #最大値を求める(ここダサいby mocako) ynp = np.array(y1) ynp = np.append(ynp, y2) ynp = np.append(ynp, y3) # x軸,y軸の範囲修正. ax.set_xlim((x.min(), x.max())) ax.set_ylim((ynp.min()-5000, ynp.max()+5000)) ax.grid(b=True,axis='y') plt.pause(3) #2秒毎 count+=1 if count==inp: inp2=input('続けますかy/n ---') if inp2=='y'or inp=='Y': inp=int(input('何回廻す(defo=1200)?')) count=0 if (count % 500) == 0: today = datetime.datetime.fromtimestamp(time.time()) filename='images\BFpnl'+today.strftime('%Y-%m-%d-%Hh%Mm')+'.png' plt.savefig(filename) discord(filename) today = datetime.datetime.fromtimestamp(time.time()) filename='images\BFpnl'+today.strftime('%Y-%m-%d-%Hh%Mm')+'.png' plt.savefig(filename) discord(filename) if __name__ == "__main__": init() pause_plot()