スクリーンショット_2018-05-26_7

暗号通貨自動トレードシステム開発キャンプ#7:Pineスクリプトで有用な戦略を見つける方法

#bot開発キャンプ第7夜
#Trading Viewを利用して有用な戦略を見つける方法
#bot作成時に超おすすめのソースコード

//Trading Viewを利用して他人のアイデアを参考にする方法。
//btc-fx でMMbot作成中に思ったこと(雑記)
//おすすめのコード
//まとめ

こんばんは、しゃしゃしゃしゃです。
更新が途絶えていましたが、bot開発キャンプ第7夜を始めたいと思います。今回のnoteではTrading Viewをつかって他人のスクリプトを見つける方法について説明していきます。今夜は「参加者の方々がTradingview を利用して公開されているアイデアから人気の戦略を見つけることができる」状態になるのを目標に進めていきます。既に有用な戦略の見つけ方を知っている人にはあまり参考にならないと思います。

・Trading Viewを利用して他人のアイデアを参考にする方法
 前回のキャンプでPineスクリプトの書き方、読み方を軽く説明しました。
みなさんはすでに他人のPineスクリプトコードを見れば「ははーん。ここでエントリーね。ここでエグジットね。」っていうのが雰囲気だけでも分かるようになっていると思います。

今回は実際にどのようにしてTrading Viewから良さげな戦略を引っ張ってくるかということにフォーカスしていきます。
まずはTradingview のサイトにいきましょう。登録がまだの人は下のリンクから登録をどうぞ。
<Trading Viewの会員になる>

トップページにいっていただくと、以下の画像のような部分が見つかると思います。
「スクリプト」の部分にカーソルを合わせていただくと、様々な指標のカテゴリが出てきます。今回は「オシレーター」をクリックして進みましょう。


上部にオシレーターに属する指標にはどのようなものがあるのかが挙げられています。また、オシレーターについての簡単な説明も記述されています。
ここで注意していただきたいのが本当に「買われすぎまたは売られすぎ」なんてものを測る指標なんてないということ。価格というのは需要と供給の関係で決まるものなのでどんな値段であっても欲しい人がいれば買われすぎなんてことはないし、欲しい人が皆無なら売られすぎなんてことはないです。
指標が示すのは「買われすぎっぽい」、「売られすぎっぽい」という雰囲気だけ。多くの人が参考にする指標であればその「〇〇っぽさ」が少し上がるという程度です。本当に大事なのは市場参加者の心理です。ここら辺の話は細かく話すと終わらないので終わらせます。知りたい人はトレードの名著を読んだら書いてます。トレードで根幹を抑えたあとに、「より実践的な使い方が知りたい!」という人がいれば別noteでまとめます。TwitterでDMかコメントください。

少し脱線してしまいましたが、この画面で世界中の人が公開しているスクリプトが見れます。一部ソースコードに保護がかかっているものがあるのでそれは諦めてください。

上画像の右下で「インジケーター」にすれば指標だけが選択され、「ストラテジー」にすれば投資戦略エディターで利用できるストラテジのみが選択されます。情報の海から使えそうな戦略を発掘して見てください!

・btc-fx でMMbot作成中に思ったこと(雑記)
 今までテクニカル指標を使ったBOTしか作成しておらず、MM(Market Make)系のBOTを作ったことがなかったので、勉強の意味も込めて作成中なのですがその際に気づいたことを適当に書いていきます。
※マーケットメイクを簡単に説明するとbid と askを提示して、参加者の成り行きコストをいただく戦略のことです。以下noteでも超軽く触れています。

もうちょい詳しく知りたいって人はこれらの記事がわかりやすくまとまっています。

ロジックの一例については以下で軽く触れられています。

 とまぁ、脱線してしまいましたがMMbotを作ろうと思ったわけですね。現在も作成中なのですが、気づいたこと適当に書いていきます。
・IFDOCOが使いづらい。
 HTTP APIの制限に引っかからないように発注もできるだけ少なくするためIFDOCOを使おうと考えたわけですね。そしたら使いづらい。注文が次々溜まっていくのでその対処をしなくてはならない。高頻度に取引しようと考えた時、発注時の価格、値幅は即時約定しないならほぼ無意味なのに遅延で約定しない注文が残ってしまう。キャンセルするためにはAPI使わないといけない。かつ親注文の最初だけ約定した場合にキャンセルしてしまうと利確エントリーの注文までキャンセルしてしまう。個別に対処すると余計制限に引っかかってしまう。そこで、考えました。
「time_in_forceのIOCやFOKを使えば良いのでは?」しかし、IOCやFOKは最初の注文(親注文)だけでなく子注文にも適用されてしまうとのこと。。。
実際にどうか試してみると確かにそうでした。ただ、SIMPLE注文よりも特殊注文の方がキャンセルまでの時間が長かった気がします。
次に考えました。
「簡易的なIFDOCOを自分で作ればいいんじゃないか」これはまぁまぁ良い。最初にSIMPLE注文をIOCまたはFOKで発注し、約定すればOCOを出す。
ただこの場合、最初の注文が通ってから次のOCO注文を出すまでにBFサーバーの状態が悪化するとOCOの注文が通らないという懸念があります。
だれか、いいアイディアないですか?

・OCOがOCOじゃない
 前述のIFDOCOが使いづらいに関わるのですが、OCOが両方約定するパターンがありました。BF側がキャンセルするまでに両方約定するようですね。対処は「値幅を広くとる」くらいですか?みなさんどうしてますか。

・めっちゃ使えるソースコードが公開されている。

オープンソースで開発がされたチャネルブレイクアウトのBOTです。内容綺麗だしすごく良いです。少しでもコードを読める人は絶対に参考にするべきです。

・HFT系の論文、MM系の参考情報が少ない。
ネットサーフィンで適当な論文とか読んでるんですけど、情報がすくなすぎますね。まぁHFT系はぶっちゃけ無理だと思うので、シンプルにMM系のロジックってどういうのがあるのか知りたいですね。

・今後
なんかブラウザ経由で注文出した方が早いらしいのでそのあたり実装しようと考えています。参考になるサイトとかコード知っている方いらしたら情報提供いただければ助かります。

・まとめ
1:Trading Viewに公開されている戦略をうまく利用するのはいいが「聖杯はない」
2:MMbotを作るのはそんなに簡単ではない。
3:無料で超いいBOTが公開されている。

最後までお読みいただきありがとうございます!


この記事が気に入ったらサポートをしてみませんか?