[Python3] [CCXT] UKI さんの元祖ドテン君(修正)

元祖ドテン君とは、AKAGAMI さんのドテン君の名前の元になった bot で、こちらの記事で公開されてるやつのことです。

先日公開した note では逆指値を使いましたが、実は本家のロジックのほうがパフォーマンスが良かったことが分かりました。

懺悔じゃないですが修正版を公開します。前回の note の「def main():」から「if __name__ == '__main__':」の前までを次のコードで置き換えると良いです。1つ前の足がレンジをブレイクしてたら成行でエントリーします。

def market_order(side):
    positions_size = fetch_positions_size()
    if side == BUY and positions_size > 0 or side == SELL and positions_size < 0:
        # 同じ方向には注文しない
        return

    # 約定後 POSITION_SIZE_USD のポジションを持つ
    order_size = POSITION_SIZE_USD + abs(positions_size)
    mex.create_market_order(BTCUSD, side, order_size)


def main():
    chart = BitMEXChart(resolution_m=RESOLUTION_M)
    range_mean = np.mean([h - L for h, L in zip(chart.high_values(), chart.low_values())][-WINDOW_SIZE-2:-2])
    open_value = chart.open_values()[-2]
    high_value = chart.high_values()[-2]
    low_value = chart.low_values()[-2]

    up_break = high_value > open_value + range_mean * K
    down_break = low_value < open_value - range_mean * K

    positions_size = fetch_positions_size()
    # 買いポジション持ち
    if positions_size >= 0 and down_break:
        market_order(SELL)
    # 売りポジション持ち
    if positions_size <= 0 and up_break:
        market_order(BUY)

もしよくわからないところがあれば分かる範囲でお答えしますので、Twitter (@ycrypthon) やコメントでお知らせください。もしよろしければ♡やシェアをしてくださると喜びます\( 'ω')/

こちらの note もどうぞ\( 'ω')/

ご覧いただきありがとうございます!