bitcoinbot 「招き猫」ポジションと価格のグラフをdiscordで送信する

BitcoinBot「招き猫」目次に戻る

赤の水平線がショートポジション

緑色が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()

 

 

 

 

 

 

 

BitcoinBot「招き猫」目次に戻る

amazon 本日のタイムセール Time Sale
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 動画290本28.5時間 \24,000
楽天モバイル、妻がiphone SE2、息子がiphone11で使ってます。一番安くて通信品質イマイチ
コロナ感染施設の人体に無害な消毒と抗菌処理ならESS消毒社(東京都)
タイトルとURLをコピーしました