Bitcoin Bot 「招き猫.py」 目次

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

 

最新機能、ビットコイントレードボット「招き猫」召喚画像
左の猫(ソラ)を押すとビットコインボット.pyが起動する
右の猫(レオ)を押すとグラフ出力.pyが起動する
ホントはGoogle chrome Remote Desktopで、仕事中や外出中でも遠隔停止できるストップボタンを設置したいのだが、出来ないので遊んでしまった。

 

取引所選定 開発はコードが大量に公開されている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 ◎情報めちゃ多い。成り行き手数料取られるので、高頻度ボットは難しそう。
  5. その他 まともなところはないと思われ

Python入門目次(準備中)

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

bitflyer API

初めに 3.値段を得るTicker で、APIに慣れる。 GETと関数化、値段の連続取得までご参考に

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

自分の状態を得る、取引をする bf-privateAPI

pybitflyer private APIはラッパーを使って気楽にいこう

取引所の key & secret (ID & PW)を流出させないソースコード

pybitflyerを使ってget系の関数全部を一覧から選んで実行するコード

    1. 自分の資産状況を得るgetbalance
    2. 証拠金の状態を取得getcollateral
    3. 証拠金の変動履歴を取得getcollateralhistory
    4. 預入用アドレス取得getaddresses
    5. 仮想通貨預入履歴getcoinins
    6. 送金sendcoin
    7. 仮想通貨送付履歴etcoinouts
    8. 銀行口座一覧取得getbankaccounts
    9. 入金履歴getdeposits
    10. 出金withdraw
    11. 出金履歴getwithdrawals

売買をするAPI

    1. 新規注文を出すsendchildorder
    2. 注文をキャンセルするcancelchildorder
    3. 新規の親注文を出す(特殊注文)sendparentorder
    4. 親注文をキャンセルするancelparentorder
    5. すべての注文をキャンセルするcancelallchildorders 
    6. 注文の一覧を取得getchildorders
    7. 親注文の一覧を取得getparentorders
    8. 親注文の詳細を取得getparentorder
    9. 約定の一覧を取得getexecutions
    10. 建玉の一覧を取得getpositions
    11. 取引手数料を取得gettradingcommissio

BOT作成への戦略策定

スキャルピング

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

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

と3種類あり、ボットで効果があるかと言うと、3つともあるし稼いでいるプログラマーはいる。
特に3のHFTは人間には出来ないから当然ボットしかない。しかし、今の自分にはプログラム出来ない。高度。
①も値動き監視の時間を選ばないことや、持続できる集中力を考えれば機械化すべきものといえる。しかし、博打要素が強く、ボットは取引ボットというより分析と予想ボットになる。
そして(自分にとって)最も効果が期待できるのが②だ。
感情を排した瞬間の判断力でプログラムのIF文にかなう奴はいない。
任せてみよう。

最重要課題 「利確」

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

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

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

以上の戦略を詰め込んだボットが完成しました。(損益はこちら どうも猫ちゃんはバカ?。俺?)

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

 

徐々に追加してゆく便利機能

スロースキャBOT「招き猫」にライン通知とdiscored通知を追加する     
スロースキャBOT「招き猫」のログをCSVファイルに出力する        
「ltpとポジションのグラフ」定期的にdiscordに送信(プッシュ通知になる)
ボット起動画面を作った(暇つぶし)                   

↓デスクトップにグラフ《リアルタイム更新)

 

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


今後の改良予定

即時の改良点

childorder失敗の把握と対策

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標準仕様だし、対応取引所も多いし。

 

勝つBOT、資金を増やすBOTにする

勝率を上げ、rossを少なく利益を大きく

  1. 資金維持率とボラティリティを監視し、無理のない範囲の最大ロットをbetする
  2. Aで作った価格トレンドのパラメータを監視してEXITする
  3. bitflyerは情報取得の為なので早々に撤収。他の暗号通貨取引所MEX、BYNANCE他と、為替か株、に移行する

必要なスキル

  • 資金維持率の監視 [現在地–+—]
  • ローリングトレイリングのブラッシュアップ、期間内のAI判定 [現在地–+—————-]
  • 取引所の研究 [現在地—-+—–]
  • 為替: FX会社の調査研究、勝てるかどうかの研究、税金 [現在地———]
  • 株: 取引所の調査研究、BOT化は可能なのか [現在地+———]

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


pythonの作法に従う

個人で使う分には期待通りに動けばいいんだが、本来は作法に従ったコードのほうが良いには違いない。行儀の作法なら糞食らえだが、プログラムの作法はセキュリティや誤動作防止の意味があったりする。

  • クラス変数の書き換えはプロパティのゲッターとセッターを使うらしい。(変だと思ってた!)

 

 

 


直近の価格の上下から、適当にエントリーして、逆行なら損切、うまく乗れれば利益を伸ばすという戦略で運用を始めてみたボットくん。ロジックは特に変更無いが(元々「ロジックは無い」www)、コードは僅かずつこなれてきた。

しかし、肝心の損益が、良くてトントン、悪いと微損を続けるとう言う具合で、駄目駄目である。

ただ、大きいトレンドは取れるので、レンジで売買をしないことだろう。

それにしてもpython覚えることが無限にある、まさに言語。

まあ、システムトレードできて損はないわけで、10年後はAIにロジックを担当させて、新興アジア諸国の株式システムトレードで億り人になろうと思っているから続けようとは思うけど、時間が無限に取られる。