pythonビットコイン自動トレーディング企画進捗報告.

こんにちは!イソロイシンです.

今週,先週と大学の研究の方が忙しく,ブログの更新ができていませんでした.つくばの研究施設にて実験を行なっていたのですが,やはりつくば市は都心からやや遠すぎること,また東京と違って都市がコンパクトでないので車がないと不便なことなど,素晴らしい立地とは言い難いです.まあ金銭的には3000円程度,時間的には往復2.5時間程度ですから,東京から通勤不可な距離ではないのですが.

さて,本日久しぶりの更新ですが,前回紹介したpythonによるビットコイン自動売買プログラムに現在実装している注文ロジックをご紹介します.

実はプログラムを3日間動かせていない...

実は現在,11/17の90万超え時に手動で取引していたところ,ロングでポジションを取ってしまったため,売るに売れず塩漬けになっており,日本円資金がレバレッジ口座になく,自動取引プログラムを実行できておりません.お恥ずかしながら笑

90万で買った塩漬けロングのビットコインは家宝として大事に5日程度は取っておこうと思います.流石にそれを超えたら損きりしますw

画像の90万を超えた辺りでロングポジションを取ってしまいましたw

今考えれば利確売りで下がるのは目に見えていたのですが,これについては考えても仕方ありませんから,気長に91万程度まで上がるのを待っていようと思います.ビットコイン取引はあくまで遊びなので,追加でレバレッジ口座に資金を投入するつもりはありません.

ベースとなる考え方

本題の自動取引の売買ロジックに移ります.

まず基本的な考えで,自動取引をロングボール戦略で行うかスモールボール戦略で行うかについてです.すなわち,「判断回数を減らして長期的な値上がりあるいは値下がりによって少ない回数の取引で大きな利益を狙う」か,「細かい値動きと共に利確,損きりを行い,一回ごとの利益は少ないがたくさんの取引を行うことで薄利多売的に稼ぐ」のか,ということです.

これに関しては本企画では後者のスモールボール戦略を取ろうと考えています.というのは,

  1. ビットコイン相場を長期で予想するのは難しい.つまりロングボール戦略は確実に稼げる可能性が低い.
  2. 長期保有して利益を狙うのなら,そもそもプログラムにやらせなくて良い.

という理由があるためです.

売買ロジック

上の考えの元,非常に単純な売買ロジックを実装したプログラムを完成させました.上の理由があり,まだ実験できていないのですが...

簡単に紹介します.あまりに簡単なロジックなので,うまく利益を出してくれないかもしれません.笑 デモバージョンということでお許しください.

白いまるのところでショートでエントリー,上の白線で損きり,下の白線で利確.

画像はショートでエントリーした場合の例です.プログラム起動後,30秒前と現在の価格をapiにて取得し,現在の価格が低い場合には下げトレンドと判断し,ショートでエントリーします.エントリー後,利益がある水準まで達したらポジションを決済して利確し,損失がある水準まで達したら同様に損きりします.

ロングの場合も同様です.

ここで当たり前ですが重要なのが,利確ラインと損きりラインの位置で,エントリー価格と利確ラインの差を,エントリー価格と損きりラインの差より大きくします.

わかりにくいと思うので具体例を出すと,50円以上の利益が出たら利確,としているときは25円以上の損失で損きり,のように設定します.

こうしておけば,利益が出る確率と損失が出る確率が50%ずつで等しいとしても利益を出すことができます.(理論上)上の具体例で言うと,一度の取引あたりの期待リターンは

50×0.5-25×0.5 = 12.5円

となります.一応,30秒の値動きを見てロングかショートか判断はしていますが,あまりあてにはならないと思うので勝率50%で計算してみました.一度の取引(エントリーから決済まで)を2分間で行うとすると,

12.5×60÷2 =375円が1時間のあたりの期待リターンとなります.(ショボい)

期待リターンの調整は,利確ライン・損きりラインの調整でなんとでもなりますから,まずは確実に利益を出せるプログラムとして止まらずに動いてくれるものを作ることができれば御の字かなと考えています.

家宝のポジションを決済し,自動売買を動かせるようになったら,また結果をブログに載せようと思います.

ありがとうございました!

参考文献

そういえばPythonは完全に初心者だったのですが,友人に借りたこの本が役立ちました.ぼくはJavaでのAndroidアプリ開発からプログラムを始めた人間ですが,pythonはJavaよりも短く書けたり,インデント区切りで読みやすかったりするためネット上のコードも読みやすく,初心者でも比較的始めやすい言語かと思います.

プログラムは,「本を読んで一通り理解してから始めよう」と思ってやると,退屈でなかなか勉強も進みませんから,身近なことで自動化したいものがあれば,それを達成するためにコードを書いてみる,わからないところは本やネットで調べながら書く,というのが一番の上達の道かと思います.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする