Bitcoin Bot 「招き猫.py」 目次

概要

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

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

(中)DOS画面LOG出力。

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


準備

取引所はどこがいい? (IT後進国的規制により)国内の取引所は全滅です

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

  1. Bitflyer ◎普通はサーバー早い、手数料無料。情報も多く開発やテストにはここが良い。
    しかし突然SFD。 レバ2倍の場合、毎回掛金の0.5%取られる。200回の売買で資産が0に!
    -(《元金✕レバ2倍》✕《0.0025(0.25%)》)=0.005(2百分の1)。BOT運用は無理
  2. liquid by quoine ○多機能だし良UIだがもっさり。手数料とスプレッドが高コストで勝てない。情報・コードはかなり少ない。微妙。
  3. GMOコイン 頑張ってる。国内主戦場になりつつある。
  4. TAOTAO ×API公開なし。画面は良い。
  5. BITMEX ◎情報めちゃ多い。日本人BAN(出禁)(2020/5月以降)
  6. bybit 海外一番人気、個人のコード類多い。かといっってイージーというわけでもない。
  7. バイナンス 経営主体に問題が有るらしい(社会的BAN状態)
  8. 取引所まとめ(API有り) reon777氏
  9. 取引所まとめ(現物送付)まちゅけん氏まとめ
  10. 取引所まとめ(裁量) ひろぴー氏まとめ

ボット作成

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

ボット作成のフロー

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

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

基本はこんな感じです。

まずはAPIの解説から

APIの種類 HTTP APIとRealtime API /(それぞれに) Public API(パスワード不要)とprivate API(厳しい個人認証あり)

APIの種類

(方式1) HTTP API : webにデータ要求のリクエストを出すと、データを返してくれる

(方式2) Realtime API(websocket) : ビットコインで言えば、今現在刻々と変わるデータを渡し続けててくれる。

(一般公開) Public API(パスワード不要)

(認証済み個人のみ) private API(厳しい個人認証あり)

bitflyer APIの解説

pybitflyer bitflyerAPIを、使いやすくクラス化(関数化)してくれたもの。
個人情報であるprivate APIの認証を裏でやってくれるので、ソースを見た目スッキリにできる。など。

パブリック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

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にする
  6. 重要なことを忘れていた、スプレッド負けしているので、方向を見て指値にしなければ
  7. トレーリングを改良、損小利大追求
    • スタートは 順側大きく 逆側小さく
    • 利確範囲に到達したら小さいトレール幅で利食い優先
    • 想定より伸びたら幅拡大でどこまでも伸ばす

必要なスキル

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

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

タイトルとURLをコピーしました