Bitcoin Bot 「招き猫.py」 目次

読むだけで出来る? Bitflyer ボットトレード

最新機能、ビットコイントレードボット「招き猫」召喚画像
左の猫(ソラ)を押すとビットコインボット.pyが起動する
右の猫(レオ)を押すとグラフ出力.pyが起動する。

(中)DOS画面LOG出力。

(下)チャートとリアルタイム損益

取引所はどこがいい?
開発はコードが大量に公開されているBitFlyerが吉か(ただしSFD厳重注意)

  1. Bitflyer ◎普通はサーバー早い、手数料無料。情報も多く開発やテストにはここが良い。
    しかし突然SFD。 レバ4倍の場合、毎回掛金の1%取られる。100回の売買で資産が0に!
    -(《元金✕レバ4倍》✕《0.0025(0.25%)》)=0.01(百分の1)。BOT運用は無理!
  2. liquid by quoine ○多機能だし良UIだがもっさり。情報・コードはかなり少ない。
  3. TAOTAO ×API公開なし。画面は良いがここでトレードする理由はない。
  4. BITMEX ◎情報めちゃ多い。日本人BAN(出禁)(2020/5月以降)
  5. バイナンスの攻略が進むなら期待はかなり大だが、誰もやる気がない。頑張れ(他人事)
  6. その他 まともなところはないと思われ

ボット作成

Python入門はこちら(準備中)

ボット作成のフロー

  1. 取引所の価格情報APIをコールして価格を取得
  2. 価格情報を指標化(チャートの無いインジケーターを作る感じ)
  3. 戦略を決めてコード化
  4. 売買のAPIをコールして売買を行う

取得価格をアルゴリズムで意味づけ、売買戦略を作ってAPIのやり取りで実行する。

基本はこんな感じです。

まずはAPIの解説から

API
HTTP APIとRealtime API (それぞれに) Public APIとprivate API

bitflyer APIの解説

pybitflyer bitflyerAPIを、使いやすくクラス化(関数化)してくれたもの。

パブリクAPIを一つづつ叩いてみる

  1. 取扱コイン一覧を得るgetmarket
  2. 板一覧を得るgetboard
  3. 値段を得るTicker
  4. 約定一覧を得るexcutions
  5. 板の状態を得るgetboardstate
  6. 取引所gethealth
  7. チャットを読むgetchat

プライベートAPIで、自分の状態を得る、取引をする

pybitflyerを使ってget系の関数全部を一覧から選んで実行する簡易なプログラム

    1. 自分の資産状況を得るgetbalance
    2. 証拠金の状態を取得getcollateral
    3. 証拠金の変動履歴を取得getcollateralhistory
    4. 預入用アドレス取得getaddresses
    5. 仮想通貨預入履歴getcoinins
    6. 送金sendcoin
    7. 仮想通貨送付履歴etcoinouts
    8. 銀行口座一覧取得getbankaccounts
    9. 入金履歴getdeposits
    10. 出金withdraw
    11. 出金履歴getwithdrawals
    12. 新規注文を出すsendchildorder
    13. 注文をキャンセルするcancelchildorder
    14. 新規の親注文を出す(特殊注文)sendparentorder
    15. 親注文をキャンセルするancelparentorder
    16. すべての注文をキャンセルするcancelallchildorders
    17. 注文の一覧を取得getchildorders
    18. 親注文の一覧を取得getparentorders
    19. 親注文の詳細を取得getparentorder
    20. 約定の一覧を取得getexecutions
    21. 建玉の一覧を取得getpositions
    22. 取引手数料を取得gettradingcommissio

BOT作成への戦略策定

スキャルピング

ボットに限らず裁量(手動)でも同じだが、建玉(タテギョク)、ポジションとも言う、を保有している時間が長い順に、

  1. スイング、建玉の保持期間が、数時間から数日、ビットコインは数ヶ月もある
  2. スキャルピング、建玉の保持期間が、数十秒から、数十分くらい。
  3. mm(HFT)、玉を建てないで、数十分の1秒から数秒の間に、僅かな鞘を何度も取る。まさにチリツモ。

今回のボットは2で作成する。
感情を排した瞬間の判断力でプログラムのIF文にかなう奴はいない。
任せてみよう。

最重要課題 「利確」

  1. 細かく取る(今は「成り行き売買」なのでスプレッド(マイナスになる)が厳しいので、指値型に要改良)
  2. 取れるときに大きく取る(反転までは「放任主義」)

重点テクニカル課題 「損切」

  1. 損切り、ドテンは瞬間芸。優柔不断の(*´・ω・)には無理 ∴BOTこそ適任
  2. 勝率五割でブレークアウトを取ればトータルで勝ァァァつ!!!

以上の戦略を詰め込んだボットが完成しました。(損益はこちら 弱ボットです)

スロースキャボット 「招き猫」 manekineko.py(本体ソース)

追加してある便利機能

スロースキャBOT「招き猫」にライン通知とdiscored通知を追加する     

外出先でも見れる、プッシュ通知なので精神的に開放される

スロースキャBOT「招き猫」のログをCSVファイルに出力する        

パラメータのの調整は画面logではなく、CSVにしてエクセルで分析がGOOD

「ltpとポジションのグラフ」定期的にdiscordにプッシュ通知

やはりグラフは分かりやすい

ボット起動画面を作った(暇つぶし)                   

tkinterモジュールに慣れるのは良いことだ

 

↓デスクトップにグラフ《リアルタイム更新)
青線が上に、赤線が下に伸びるほど勝ってる。

↓スマホ版Discordにログとグラフをプシュ通知(LINEでも可)


今後の改良予定

A:エントリー(特に方向を捉える)時トレンドを掴む

  1. 過去の価格データから分析するため価格データを蓄積する
  2. websocket受信し価格データをDBに蓄積し、随時取り出しては利用する
  3. 長期移動平均、長期BB、中期移動平均、中期RSI、短期RSIを使った価格トレンドのパラメータ化
  4. ボリュームによる重み付け(大口の小金稼ぎかトレンド転換か)
  5. 使いやすく汎用性の高いBOTにする

必要なスキル

  • websocketのmulti thread化 [現在地—+———-]
  • sqlite、どうせならmysqlでデータ蓄積 [現在地-+————-]
  • pandasでデータ出し入れ [現在地—+——]
  • talibか自前(web先輩)でインジケータの計算 [現在地–+———–]
  • GUI化、EXE化、パラメータBOX開閉 [現在地–+———–]
  • pybitflyerじゃなくてccxtにしよう。thread標準仕様だし、対応取引所も多いし。

どうやら先は長い。もしかしたらライフワークレベルなのか?
少し落ちついてサイクリングに行ったほうがよいな。