概要
読むだけで出来る? Bitflyer ボットトレード
最新機能、ビットコイントレードボット「招き猫」召喚画像
左の猫(ソラ)を押すとビットコインボット.pyが起動する
右の猫(レオ)を押すとグラフ出力.pyが起動する。
(中)DOS画面LOG出力。
準備
取引所はどこがいい? (IT後進国的規制により)国内の取引所は全滅です
開発はコードが大量に公開されているBitFlyerが吉か(ただしSFD厳重注意)
Bitflyer◎普通はサーバー早い、手数料無料。情報も多く開発やテストにはここが良い。
しかし突然SFD。 レバ2倍の場合、毎回掛金の0.5%取られる。200回の売買で資産が0に!
-(《元金✕レバ2倍》✕《0.0025(0.25%)》)=0.005(2百分の1)。BOT運用は無理!- liquid by quoine ○多機能だし良UIだがもっさり。手数料とスプレッドが高コストで勝てない。情報・コードはかなり少ない。微妙。
- GMOコイン 頑張ってる。国内主戦場になりつつある。
TAOTAO×API公開なし。画面は良い。BITMEX ◎情報めちゃ多い。日本人BAN(出禁)(2020/5月以降)- bybit 海外一番人気、個人のコード類多い。かといっってイージーというわけでもない。
- バイナンス 経営主体に問題が有るらしい(社会的BAN状態)
- 取引所まとめ(API有り) reon777氏
- 取引所まとめ(現物送付)まちゅけん氏まとめ
- 取引所まとめ(裁量) ひろぴー氏まとめ
ボット作成
Python入門はこちら(準備中)
ボット作成のフロー
- 取引所の価格情報APIをコールして価格を取得
- 価格情報を指標化(チャートの無いインジケーターを作る感じ)
- 戦略を決めてコード化
- 売買のAPIをコールして売買を行う
取得価格をアルゴリズムで意味づけ、売買戦略を作ってAPIのやり取りで実行する。
基本はこんな感じです。
まずはAPIの解説から
APIの種類 HTTP APIとRealtime API /(それぞれに) Public API(パスワード不要)とprivate API(厳しい個人認証あり)
(方式1) HTTP API : webにデータ要求のリクエストを出すと、データを返してくれる
(方式2) Realtime API(websocket) : ビットコインで言えば、今現在刻々と変わるデータを渡し続けててくれる。
(一般公開) Public API(パスワード不要)
(認証済み個人のみ) private API(厳しい個人認証あり)
pybitflyer bitflyerAPIを、使いやすくクラス化(関数化)してくれたもの。
個人情報であるprivate APIの認証を裏でやってくれるので、ソースを見た目スッキリにできる。など。
パブリックAPIを一つづつ叩いてみる
- 取扱コイン一覧を得るgetmarket
- 板一覧を得るgetboard
- 値段を得るTicker
- 約定一覧を得るexcutions
- 板の状態を得るgetboardstate
- 取引所gethealth
- チャットを読むgetchat
プライベートAPIで、自分の状態を得る、取引をする
pybitflyerを使ってget系の関数全部を一覧から選んで実行する簡易なプログラム
-
- 自分の資産状況を得るgetbalance
- 証拠金の状態を取得getcollateral
- 証拠金の変動履歴を取得getcollateralhistory
- 預入用アドレス取得getaddresses
- 仮想通貨預入履歴getcoinins
- 送金sendcoin
- 仮想通貨送付履歴etcoinouts
- 銀行口座一覧取得getbankaccounts
- 入金履歴getdeposits
- 出金withdraw
- 出金履歴getwithdrawals
- 新規注文を出すsendchildorder
- 注文をキャンセルするcancelchildorder
- 新規の親注文を出す(特殊注文)sendparentorder
- 親注文をキャンセルするancelparentorder
- すべての注文をキャンセルするcancelallchildorders
- 注文の一覧を取得getchildorders
- 親注文の一覧を取得getparentorders
- 親注文の詳細を取得getparentorder
- 約定の一覧を取得getexecutions
- 建玉の一覧を取得getpositions
- 取引手数料を取得gettradingcommissio
BOT
BOT作成への戦略策定
スキャルピング
ボットに限らず裁量(手動)でも同じだが、建玉(タテギョク)、ポジションとも言う、を保有している時間が長い順に、
- スイング、建玉の保持期間が、数時間から数日、ビットコインは数ヶ月もある
- スキャルピング、建玉の保持期間が、数十秒から、数十分くらい。
- mm(HFT)、玉を建てないで、数十分の1秒から数秒の間に、僅かな鞘を何度も取る。まさにチリツモ。
今回のボットは2で作成する。
感情を排した瞬間の判断力でプログラムのIF文にかなう奴はいない。
任せてみよう。
最重要課題 「利確」
- 細かく取る(今は「成り行き売買」なのでスプレッド(マイナスになる)が厳しいので、指値型に要改良)
- 取れるときに大きく取る(反転までは「放任主義」)
重点テクニカル課題 「損切」
- 損切り、ドテンは瞬間芸。優柔不断の(*´・ω・)には無理 ∴BOTこそ適任
- 勝率五割でブレークアウトを取ればトータルで勝ァァァつ!!!
以上の戦略を詰め込んだボットが完成しました。(損益はこちら 弱ボットです)
スロースキャボット 「招き猫」 manekineko.py(本体ソース)
追加済みの便利機能、全部便利
スロースキャBOT「招き猫」にライン通知とdiscored通知を追加する
スロースキャBOT「招き猫」のログをCSVファイルに出力する
パラメータのの調整は画面logではなく、CSVにしてエクセルで分析がGOOD
「ltpとポジションのグラフ」定期的にdiscordにプッシュ通知
ボット起動画面を作った(暇つぶし)
↓デスクトップにグラフ《リアルタイム更新)
青線が上に、赤線が下に伸びるほど勝ってる。
↓スマホ版Discordにログとグラフをプシュ通知(LINEでも可)
今後の改良予定
A:エントリー(特に方向を捉える)時トレンドを掴む
- 過去の価格データから分析するため価格データを蓄積する
- websocket受信し価格データをDBに蓄積し、随時取り出しては利用する
- 長期移動平均、長期BB、中期移動平均、中期RSI、短期RSIを使った価格トレンドのパラメータ化
- ボリュームによる重み付け(大口の小金稼ぎかトレンド転換か)
- 使いやすく汎用性の高いBOTにする
- 重要なことを忘れていた、スプレッド負けしているので、方向を見て指値にしなければ
- トレーリングを改良、損小利大追求
-
- スタートは 順側大きく 逆側小さく
- 利確範囲に到達したら小さいトレール幅で利食い優先
- 想定より伸びたら幅拡大でどこまでも伸ばす
必要なスキル
- websocketのmulti thread化 [現在地—+———-]
- sqlite、どうせならmysqlでデータ蓄積 [現在地-+————-]
- pandasでデータ出し入れ [現在地—+——]
- talibか自前(web先輩)でインジケータの計算 [現在地–+———–]
- GUI化、EXE化、パラメータBOX開閉 [現在地–+———–]
- pybitflyerじゃなくてccxtにしよう。thread標準仕様だし、対応取引所も多いし。
どうやら先は長い。もしかしたらライフワークレベルなのか?
少し落ちついてサイクリングに行ったほうがよいな。