2020-06-07

【TradingView】Security関数を使って仮想通貨取引ストラテジを作る【Pine】

TVのPineスクリプトを使って仮想通貨トレードストラテジを作る。先日紹介したSecurity関数を使う。

Article Image

とにかく作る

今日はとにかく作ることが目標。

今回bitFlyerのFXでストラテジを制作したが、はむとれの大会ではbitFlyerに関しては現物のみとなっているので注意。

そのままByBitBTCUSDに入れたらむしろPFは上がった。

使うもの

PineスクリプトでSecurity関数を使う。

バグを使った詐欺ストラテジにならないように最新の注意を払う。

詐欺ストラテジにならないために

  • 1本の足でロングとショートをしていないこと
  • メインのチャートと同じ足を使用すること

ストラテジ1本目

先日使用したBITMEX:XBTUSDPIに加えBITMEX:ETHUSDPIの二本を参照しより複雑なストラテジを制作する。

security関数に関しては私の記事を参照のこと。

Pine Script v4 研究室 #2 security関数

作ったコード(不要な箇所省略)

short_line = input(title="Short Line", type=input.float, defval=探してみてね!, step=探してみてね!)
long_line = input(title="Long Line", type=input.float, defval=-探してみてね!, step=探してみてね!)

eth_pi = security("BITMEX:ETHUSDPI", timeframe.period, close)
xbt_pi = security("BITMEX:XBTUSDPI", timeframe.period, close)

diff = xbt_pi - eth_pi
plot(diff)
plot(0,color=color.white)

longCondition = crossunder(diff, long_line)
shortCondition = crossover(diff, short_line)

BITMEX:XBTUSDPIBITMEX:ETHUSDPIの差で取引をするストラテジ。

エントリー条件

15分足にて

  • 2つの差が閾値より大きくなった時にショート

  • 2つの差が閾値より小さくなったときにロング

というストラテジ。

バグ防止メモ

バグ防止の為エントリー条件を新規作成時のテンプレートから変更

if (longCondition and not shortCondition) //デフォルトではand以下の条件がない
    strategy.entry("My Long Entry Id", strategy.long)
if (shortCondition and not longCondition)  //デフォルトではand以下の条件がない
    strategy.entry("My Short Entry Id", strategy.short)

1本の足でロングとショートしてしまうのを防止している。

バックテスト結果

取引回数が少ないので非常に不安の残るストラテジである。

image-20200606141545529

ストラテジ名を「反乱軍 vs. 半裸軍」にした。

image-20200606141624715

最大DDが大きいのでお世辞にも良いストラテジとは言い難い。

シャープレシオはそれほど悪くない。

シャープレシオって?目安は?

計算式を見てもちょっと難しい。手短にサクっと分かるサイトを推奨。

効率の良いファンドの選び方 シャープレシオとソルチノレシオを活用

SRの目安に

要するに数字が大きいほど、リスクの割にリターンが大きいので、優秀なファンドと言えます。目安としては、0.5~0.9で普通、1.0~1.9で優秀、2.0以上だと大変優秀といえます。

と、解説されている。

0.6はギリギリではあるが「普通」と評価してもよさそうだ。

ストラテジ2本目

ベースは先程と同じ。

エントリー条件だけ変更する。

ストラテジ名を「枕草子 vs. 浮沈子」に設定した。

エントリー条件

先程は差を計算していたが、今度は絶対値が両方とも閾値を下回ったor上回ったを評価している。

longCondition = xbt_pi < long_line and eth_pi < long_line
shortCondition = xbt_pi > short_line and eth_pi > short_line

バックテスト結果

image-20200606143024032

Wow.

プロフィットファクターが6超。

パット見えげつない戦績にみえる。しかも勝率7割強。

よく見直そう

例えば

image-20200606143206445

こういうトレードが散見される。

また、いつもの通り

image-20200606143307914

トレード回数が少ないのも注目。

image-20200606143321699

ドローダウンも大きめ。

image-20200606143343939

シャープレシオもギリギリだった。

このストラテジどうなの?

やはりトレード回数とDD(含み損を抱え気味)をみてもあまり良いストラテジではなさそうだ。

はむとれのユーザはこういうピーキーなバックテスト画面に慣れており、好んで使われることは稀。

皆より厳しくバックテスト結果を見ているのが分かる。

なぜsecurityを使うのか

ストラテジをいくつも作っていると分かると思うのだが、基本的にビットコインは一方後に動き始めたら止まらない傾向がつよい。

これはすなわち戦略作成時に「トレンドフォローしておけば勝てる」という前提が強い。そして必然的に皆が作るストラテジがそれに偏ってくる。

しかしながら、BTCは非常に短いスパンで見ればシンプソンを含め急反発が多く皆同じ箇所で突発的な損を出している。

というわけで移動平均またはそれに準ずる指標とは違う「何か」をベースにストラテジを考えることは次のステップであると考えている。

ただ、残念ながら未だ手探りの状態だ。

はむとれの大会をいい機会に10本貯まるまでストラテジを公開する予定。

現在の個数3/10。

まだ先は長い。````````````



この記事をシェア


謎の技術研究部 (謎技研)