TradingViewの良いストラテジーの選び方とバックテストのコツ

システムトレード

私管理人は去年bitcoinのトレードをやるにあたってTradingViewに転がっている様々なストラテジーを検証しました。

そのときに使った私見でのTradingViewのよいストラテジーの選び方とストラテジーテスターのバックテストのやり方とコツを解説します。

この記事は株・FX・暗号資産などのどれにも使えるかと思います。
(転がっているストラテジーは使えないストラテジーがほとんどですが)

TradingViewについて知らない方は以下も見てみてください。

結論、まとめ

まず結論的なことを言っておくと、TradingViewにあるストラテジーやネットで検索に出てくるストラテジーも含めて99%使い物にならないように感じました。(ネット上にあるすべてのpineストラテジーを検証してはないと思うので感想です)

実際に自分が検証したストラテジーの中でリアルのトレードで使えたストラテジーは一つだけでしたが、これも偶然成績が出た疑いがあります。
(しかも寿命は半年でした)

ですので、おすすめのストラテジーとか、そういったのを題して記事を書きたいところではありますが、それは困難なので書けません。

TradingViewで投資アイディアを探すよりももっと別のところで探したほうがいいかもしれません^^;

それでもいいなら以下を読んでみてください(笑)

TradingViewにある良いストラテジーの選ぶポイント

一例: SuperTREX strategy
(たんに一例なので以下に当てはまってるものではないです。)

まずは良いストラテジーを選ぶポイントを解説します。
ストラテジーを探してバックテストする流れはこの次に解説します。

選ぶポイントをまとめると以下になります。

  1. バックテストでの取引回数は必ず30回以上、理想は100回以上ものを選ぶ。
  2. パラメーターが少ないものを選ぶ
  3. 足が短いもので結果が出るものを選ぶ
  4. グラフは右肩上がりでブレがないものを選ぶ
  5. リペイントしていないものを選ぶ
  6. つまり、「シャープレシオ」を一番重視して選ぶ
  7. リカバリーファクターも重視する

取引回数が多いものを選ぶ

ここは多いければ多いほどバックテストの信憑性が高まりますので重要です。
統計的にも最低で30回~100回は欲しいです。
理想は100回より、より多く欲しいところです。

(相場は正規分布ではなく、ストラテジーの結果も正規分布ではないでしょうが、30が統計の標準偏差のサンプルサイズで必要な値です。)

パラメーターが少ないものを選ぶ

このように多いパラメーターを持つストラテジーはカーブフィッティングしやすい

パラメーターが少なければそれだけバックテストでカーブフィッティングせずバックテストの信憑性が高まります。(AIC)

パラメーターは3つから4つまでが理想でしょう。

逆にパラメーターが多ければ、どんな相場でもバックテスト上は良い結果を簡単に出せます。

(ただしパラメーターが多くてもリアルで通用するストラテジーはまれにあります。)

カーブフィッティングとは?

カーブフィッティングとは、FXの自動売買等の売買戦略のバックテストなどを行う際に利益が最大に出るように過去の値動きにあわせ、設定を過剰に調整することをいいます。

FXなどの相場では過去の値動きと全く同じ動きとなることはあり得ないため、カーブフィッティングを行ってしまうとそれ以上の結果になる可能性は低く、逆に悪い結果となることが多くなります。

短い時間足で結果が出るものを選ぶ

2時間足以上は比較的に結果が出やすい

長い時間足は必然的に情報量が少ないため、同じ期間の短い時間足よりも比較的簡単にカーブフィッティングさせられます。

ただこのポイントに関しては上2つよりかは重要でありませんので、他の要素で光るものがあれば無視してもいいかもしれません。

ストラテジーのリペイントについて

ユーザーがTradingVIewに投稿しているストラテジーのスクリプトにはリペイント (再描画:後出しじゃんけん)が搭載されているものが多くあります。

リペイントのロジックでは未来の値や全く別の銘柄のデータなどを巻き込んでいて、再読み込みすると不利な取引がなかったことになって修正されます。

このリペイントを使えばリペイントができるなら勝率100%、利益率無限大で当たり前。 人気の公開スクリプトの多くはリペイント型のスクリプトで、とんでもない利益が出ます。

このようなリペイントをストラテジーは意味のないものなので、もちろん避けるべきです。

主にpineスクリプトのversion 2 以前であればリペイントしやすく、さらにverison 3 にてsecurity関数を使用していればリペイントされていることが多いので、これらを避けるようにしましょう。

シャープレシオ

「(投資商品のリターン - 無リスク利子率) ÷ 投資商品の年率リスク」と表現されることが多いです。

簡単に言えば、利益とリスクの比率のことでシャープレシオが大きいほど資産曲線がなめらかになり、安定性のある利益が見込めます。

リカバリーファクター

これはバックテストの表には載っていないので、自らで計算する必要があります。

リカバリーファクター(RF)が大きければ、RFが小さいストラテジーよりも一回あたりの取引量を多くでき、利益も多く出せるでしょう。

こちらは5以上あればよいかと思います。

リカバリーファクターとは

リカバリーファクターは以下の式で求めることができます。

リカバリーファクター(RF)= 純利益 ÷ 最大ドローダウン(金額)

リカバリーファクターは純利益と最大ドローダウンの比率です。

「損失(リスク)に対して、どの程度の利益(リターン)が期待できるか」という潜在的な見込みを示すものになります。

Trading Viewのストラテジーを検索してバックテストを行うまでの方法・流れ・コツ

TradingViewにてストラテジーを探す流れ

・TradingViewのスクリプト一覧からストラテジーを探す

まず「スクリプト」をクリックします。

各Trading Viewユーザーが投稿したインジケーターとストラテジーのページに飛びます。

「すべてのスクリプト」を押して「ストラテジーのみ」を押すと表示をストラテジーのみに絞れます。

各ストラテジーをクリックすると詳細が見られます。

ストラテジーの詳細画面を下にスクロールするとバックテストの結果が見られます。

・TradingViewのストラテジーの詳細・バックテストで見るべきポイント

まずは2.の取引回数を見ましょう。

取引回数が30回以上でなければ検討に値しません。
さっさと画面を閉じて別のストラテジーを見てみてましょう。

次に見るのは6.グラフです。
このようにグラフから右肩上がりでそこそこなめらかであれば検討に値します。
あまりにも上下にジグザグであれば別のストラテジーを検討しましょう。

その次はこのストラテジーのpineスクリプトを見ます。
コード内の5.inputとか書かれたinput関数がパラメーターを表します。
この数がinput()多いとパラメーターが多いということなので、その場合は検討に値しません。
(年月日でバックテスト期間を絞るようなパラメーターなど、結果に影響しないようなものは例外です。)

さらにpineスクリプト内にsecurity関数があるとリペイントの疑いがあります。

このストラテジーはsecurity関数を使用していないとのこと


コメント欄にrepaintしていると書いている場合があるのでこれらを見たら避けるようにしましょう。
(ctrl + Fもしくは⌘ + Fのページ内検索にて「repaint」を検索してください )

リカバリーファクターは1.÷2.で計算できます。
ただし計算するのはシャープレシオを見てからでも遅くはないので、まずシャープレシオを見ましょう。

4.「パフォーマンスサマリー」を押してスクロールするとシャープレシオを表示できます。

シャープレシオは0.5以上あれば良いでしょう。

0.4は少なめかもしれません。

ただしこのストラテジーのリカバリーファクターは、 $ 23155.14 / $ 933.51 =約24.8と高いです。

ですが、このストラテジーはパラメーターが多いので検討に値しません。

ただ実際のところ、いままで上げた条件を満たすストラテジーはあまりなく、探すのも難しいです。

ですので、このあともストラテジーを使ってバックテストの方法を説明します。

ストラテジーの詳細6.「お気に入りスクリプトに追加」を押してストラテジーをお気に入りに追加すると、チャート画面にてこのストラテジーのバックテストができます。

TradingViewのストラテジーテスターを使用したバックテストの方法

まずTradingViewトップページのメニューからチャートをクリックしてチャートを開きます。

開いたら1.「インジケーター」を押します。
すると2.TradingViewのスクリプト一覧ページ画面にてお気に入りに入れたストラテジー一覧が表示されます。

3.にて検索をかけてストラテジーやインジケーターを絞れます。

とりあえず2.の一覧からさきほどのストラテジー「SuperTREX strategy」を探してクリックします。

これだけでバックテストの結果が表示されます。
お手軽ですね。

1.の歯車アイコンを押すとパラメーターの設定や初期資金、ピラミッティングの設定ができます。

2.にて時間足が変更できます。

ストラテジーを素直に作った場合、足の始値にてそのストラテジーのルールを満たせばエントリーするようになりますので、このようなストラテジーは多くあります。

時間足を変えることによってエントリーするタイミングが細かくなりますので、結果が時間足によって変わってきます。

パラメーターや時間足をいじってよりよい結果やいろいろな結果を見ていってください。

ストラテジーのバックテストのコツ・詳細な検証方法

検証する場合は期間をある一定期間(例えば1年)を指定してバックテストを行う必要があります。

同じ日にバックテストの集計が始まり、集計を同じ日に終えるよう設定できれば他のストラテジーとも比較できます。

このように期間を指定して
バックテストできるストラテジーもある

もし検証したいストラテジーに期間の指定ができるパラメーターがあればそれに越したことはありません。

しかし、ない場合はストラテジーのpineスクリプトを編集してこの機能を追加するしかありません。

・期間を設定できるパラメーターを追加する

バックテストの年月日を制限するコードを用いた移動平均線のゴールデンクロス・デッドクロスのストラテジーに年月日の期間を設定できるパラメーターを追加した例です。

//@version=4
strategy("マイストラテジー", overlay=true)

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

//@version=4
strategy("マイストラテジー", overlay=true)
SYear = input(2019, "開始: 年")
SMonth = input(5, "    月")
SDay = input(23, "    日")
SHour = input(0, "    時")
SMinute = input(1, "    分")
 
StartDATE = timestamp("GMT+9",SYear,SMonth,SDay,SHour,SMinute)
 
EYear = input(2020, "終了: 年")
EMonth = input(5, "    月")
EDay = input(23, "    日")
EHour = input(0, "    時")
EMinute = input(1, "    分")
 
EndDATE = timestamp("GMT+9",EYear,EMonth,EDay,EHour,EMinute)
 
BGColor =  (time >= StartDATE) and (time <= EndDATE) ? #333333 : na
bgcolor(BGColor, transp=96)
 
BackTest() =>
   time >= StartDATE and time <= EndDATE ? true : false

longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if BackTest()
    if (longCondition)
        strategy.entry("My Long Entry Id", strategy.long)
    if (shortCondition)
        strategy.entry("My Short Entry Id", strategy.short)

BackTest()関数にて設定した期間以外であればエントリーしないよう変えています。

つまり、期間設定のパラメーターの追加方法はまず、以下のコードをコピーして、冒頭に貼り付けます。(既存のstrategyと書いてある行は消すかstrategyより下の行をコピーして既存のstrategyより下の行に貼り付けてください。)

//@version=4
strategy("マイストラテジー", overlay=true)
SYear = input(2019, "開始: 年")
SMonth = input(5, "    月")
SDay = input(23, "    日")
SHour = input(0, "    時")
SMinute = input(1, "    分")
 
StartDATE = timestamp("GMT+9",SYear,SMonth,SDay,SHour,SMinute)
 
EYear = input(2020, "終了: 年")
EMonth = input(5, "    月")
EDay = input(23, "    日")
EHour = input(0, "    時")
EMinute = input(1, "    分")
 
EndDATE = timestamp("GMT+9",EYear,EMonth,EDay,EHour,EMinute)
 
BGColor =  (time >= StartDATE) and (time <= EndDATE) ? #333333 : na
bgcolor(BGColor, transp=96)
 
BackTest() =>
   time >= StartDATE and time <= EndDATE ? true : false

その後で、if Backtest()をエントリーする関数strategy.entryの上の部分に貼り付けます。

if BackTest()
    if (longCondition)
        strategy.entry("My Long Entry Id", strategy.long)
    if (shortCondition)
        strategy.entry("My Short Entry Id", strategy.short)

このようにすると期間を指定してバックテストができるようになります。

・ アウトオブサンプルテストを行う

アウトオブサンプルテストとは?

ストラテジー作成におけるアウトオブサンプルテストとは、一定期間で最適化したパラメーターをその最適化期間以外で通用するかどうかをテストするという方法です 。

例えば2017年から2019年までの最適なパラメーターを用いて2019年から2020年といった最適化した期間とは別の期間でテストを行うといった形になります。

上の画像のように最適化した期間を 「インサンプル期間」といい、最適化期間以外の期間を「アウトオブサンプル期間」と言います。

つまり過去に最適化したパラメーターやストラテジーが未来でも通用するかを計るテストです。

アウトオブサンプルテストにおいて、インサンプル期間はアウトオブサンプル期間の3倍以上あるのが理想です。

期間を指定してストラテジーをテストできるなら、このアウトオブサンプルテストが行えます。

例えば、2017年初から2019年末の年月日を指定して、この間にてバックテストを行います。

よい結果が出るまでパラメーターを調整して、結果が出たら2020年初から2020年末(もしくは現在まで)バックテストを行います。

そして2020年初から末までのバックテストもよい結果が出るようであれば、バックテストを行ったストラテジーはさらなる検討に値します。

もしpineコードがMT4のMQLやpythonで再現できるのであれば、ウォークフォワードテストを行うなどしてさらにストラテジーを検証しましょう。

とりあえずアウトオブサンプルテストだけではストラテジーの検証は不十分です。

プログラムを書けない人はとりあえず何ヶ月か結果が出るか様子を見たり、デモトレードで一定期間実践してみて確かめるなどしましょう。

・できるだけ短い足でバックテストを行う

さきほどにも書いたように時間足が長い足は短い足より比較的カーブフィッティングしやすく結果が出やすいです。

30分足など、短い足でも結果が出るストラテジーであれば有望といえるでしょう。

TradingViewのPro版(有料)以上であれば、さらに10分足や40分足など自由に時間足を設定できます。

有料版の詳しい解説はこちらから。

まとめ

TradingViewにて使える投資アイディアやストラテジーを探すのは困難です。
さらに転がっているストラテジーも検証が不十分なものばかりです。

上記のバックテストのコツなどの検証であっても不十分なところもありますが、役立つのであれば幸いです。

国内FXに勝る海外FXの特徴を詳細解説! FX会社も比較。

海外FXは国内FXよりもチャンスは多くあり、借金の心配も必要ありません!
海外FXをやったことない方、また初心者向けに海外FXとはどのようなものか解説しています。

おすすめの海外FXを表も用いて比較・解説。
海外FX会社を探してる方にも有用な内容を掲載しています。

システムトレード テクニカル分析
おすすめ海外FX会社ランキング
XM(エックスエム)

XMは出金拒否や約定拒否などのトラブルもなく、人気No.1のFX会社です。
XMの主な特徴はレバレッジ・ボーナス・約定力。
レバレッジ888倍と口座開設のみで3000円分取引できるボーナス、全注文の99.35%は1秒以内で約定。
ゼロカットもあり、海外FX初心者がまず開く口座としてもうってつけです。
これらの強力な特徴により国内FXのトレーダーより一歩先んじることができます。
口座開設方法

AXIORY(アキシオリー)

こちらも強力な約定力・さらに極小スプレッドも実現している会社です。
公正な運営・最新取引ソフト「cTrader」対応(もちろんMT4も)という特徴もあり人気を集めています。
レバレッジは400倍、スキャルピングの制限もなく、スキャルパーにも注目されています。
安心して取引ができるおすすめの会社です。
さらに7/1~7/20まで最大3万円もらえるキャンペーン実施中!
口座開設方法

GEMFOREX(ゲムフォレックス)

入金しなくても2万円分取引できる口座開設キャンペーンをよく行っています。
しかも出た利益は自分のものになります。
スプレッドは国内FX業者と同レベルの極小スプレッド、レバレッジは1000倍のおすすめの取引会社です。
口座開設方法

FBS

FBSは最大3000倍のレバレッジと100ドル(約1万円)未入金ボーナス、さらに出金もできるボーナスやキャシュバックなど
他の会社には全くない特徴を兼ね備えていた海外FX会社です。
もちろんこのような特異な特徴をもちながらNDDやゼロカットなどの海外FXの基本的なスペックも兼ね備えており、
スキャルピングなどの取引制限もありません。
最初は入金せずに1万円分の取引が楽しめるので気になった方はまず触ってみることをおすすめします。
口座開設方法

fxブログ | シストレで複業でも勝ち組に!

コメント

タイトルとURLをコピーしました