bitflyer用のBOT雛形作ったよ!pythonのソースコード(各種発注関数付)

かぴぱら(@kapipara180)です。

今回はbitflyer用のBOT雛形を作成しました。色々なストラテジーを組むうちに、ストラテジーを入れ込む型が固まってきたので公開します!

BOT雛形の構成要素は以下の通りです。ひとつでも今実装していないもの、コーディングに詰まっているものがあれば有用だと思います。(一部は無料でソースを公開!)

・保有ポジションの取得関数

def POSITION(): # 保有ポジションの方向・数量を取得
                # LONGを持っている場合は建玉をプラスで返し、SHORTを持っている時はマイナスで返す
    try:
        ret = api.getpositions(product_code="FX_BTC_JPY")
    except Exception as e:
        logger.error("Error!")
        logger.error(e)
        return {'side': pos['side'], 'size': pos['size']}
    if len(ret) == 0:
        side = 'NO POSITION'
        size = 0
    elif ret[0]['side'] == 'BUY':
        side = 'LONG'
        sum = 0.0
        for o in ret:
            sum = sum + o['size']
        size = sum
    else:
        side = 'SHORT'
        sum = 0.0
        for o in ret:
            sum = sum + o['size']
        size = sum * -1.0 # SHORTはポジションをマイナスとみなす
    return {'side': side, 'size': size}

・残高取得関数

def BALANCE(): # 残高の取得 pnlは未実現損益 jpyは証拠金残高
    try:
        ret = api.getcollateral()
        pnl = ret['open_position_pnl']
        jpy = ret['collateral']
        return {'pnl': pnl, 'jpy': jpy}
    except Exception as e:
        logger.error("Error!")
        logger.error(e)
        return {'pnl': pnl, 'jpy': jpy}


・最大ロット取得関数

def GET_LOT(price_now):  # 建てられる最大ロットを取得
    Last_btc_value = price_now
    Free_jpy = BALANCE()['jpy']
    Free_levaraged = Free_jpy * leverage
    Capacity = Free_levaraged / Last_btc_value
    lot = float(Decimal(Capacity).quantize(Decimal('0.01'), rounding=ROUND_DOWN))
    logger.info('ロットサイズ:%f '% lot)
    return lot

・成行注文関数
・ストップ注文関数

def STOP(side, price, size): # 逆指値注文を発注
    size = float(Decimal(size).quantize(Decimal('0.01'), rounding=ROUND_DOWN))
    price = float(Decimal(price).quantize(Decimal('0'), rounding=ROUND_DOWN)) #priceは整数
    o = api.sendparentorder(order_method="SIMPLE", parameters=[{"product_code": "FX_BTC_JPY", "condition_type": "STOP", "side": side, "trigger_price": price,"size": size}])
    logger.info('新規STOP注文:%s %s %d %f' % (o,side,price,size))
    return price

・ストップリミット注文関数
・トレーリングストップ注文関数
・ATR計算関数(簡易版)
・クロスオーバー、クロスアンダー関数

def CROSSOVER(x,y): # xがyを上抜いたことを確認する(返値はbool)
    modori = x[-1] > y[-1] and x[-2] < y[-2]
    return modori

def CROSSUNDER(x,y): # xがyを下抜いたことを確認する(返値はbool)
    modori = x[-1] < y[-1] and x[-2] > y[-2]
    return modori

・ログの出力
・cryptowatchからの1分足の取得
・1つ前が陽線なら買いエントリー、1つ前が陰線なら売りエントリーをするセットアップ(雛形なのでこの上なく簡単なロジックにしました)
・決済ロジック(LONGで持っているときに売シグナルが出た際にドテン。とその逆)
・発注ロジック(ノーポジションの場合にシグナルが出たら発注)

以上の要素を整形し、コメントもふんだんに付けました。この雛形があれば、python初心者の方でもBOT作成にチャレンジできます!BOT作成初心者の方はぜひこの雛形から学び、最強のBOTを作成してください!

プロンプトの出力結果は ↓ のようになります。

以下ソース。解説はコメントを参照!それでもわからない場合はdiscordかノートにコメントをください!返せる範囲で迅速に返します。

この続きをみるには

この続き:7,168文字

bitflyer用のBOT雛形作ったよ!pythonのソースコード(各種発注関数付)

kapipara180

1,500円

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

ありがとうございます!
31

kapipara180

bot

1つのマガジンに含まれています
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。