今日もFX Worksに記載されている手法の検証をしていきます。
RVIとMAのクロスでエントリーする手法
RVIとは何でしょうか
RVIというインジケーターは初めて触るのですが・・・
これはRSIを応用したテクニカル分析手法で、ボラティリティの拡大・縮小を判断するのに用いる。
とのことです。
詳しい使い方はこちらをどうぞ。
要はMACDと同じような使い方をすればOKのようです。(間違ってたらご指摘ください・・・)
MetaTrader4でプログラミング
買いの条件は
1)MA9がMA100より上にある
2)RVIが0より上
3)価格がMA9まで下降する
売りの条件は逆になり
1)MA9がMA100より下にある
2)RVIが0より下
3)価格がMA9より上昇する
なお、損切りは20pips,利益確定は100pips。ただし、MA9とMA100が逆にクロスした場合には手仕舞いします。
『移動平均でトレンドを確認して、短期移動平均まで押し(戻り)を待ってから売買を仕掛けるシステム』ということですね。
※詳細はFX Worksをご覧ください。
本家のページにRVIがメインなのかシグナルなのか書いてませんが・・・メインでいってみます。
double rvi = iRVI(NULL, 0, 100, MODE_MAIN, 1);
価格が確定するのを待ってから仕掛けているのでshift(最後の引数)は1にしています。
短期移動平均まで押した(戻った)かどうかの判断は、高値と安値を取ってその価格の間に短期移動平均があるかどうかで判断しました。
double shortMA = iMA(NULL, 0, 9, 0, MODE_EMA, PRICE_CLOSE, 1);
double longMA = iMA(NULL, 0, 100, 0, MODE_EMA, PRICE_CLOSE, 1);
double high = High[1]; double low = Low[1];
if(shortMA > longMA && shortMA > low && high > shortMA && rvi > 0 && Ask > longMA)
最後の Ask > longMA の条件は本家には無いのですが・・・勝手につけました。(100MAまで押していたら対象外で良いだろうと)
・・・っとこんなところでしょうか。
バックテストしてみましょう!
※期間2014年1月1日~2015年2月13日 [RVI_MACross.ex4]
※スプレッド2.0pips 通貨ペア:ボンド円
うーん・・・良くないですね。
図左の「買い→利食い」のトレードは上手くいってる例です。
一番ダメなのが右の連続損切り。 裁量であれば絶対やらないと思うのですが(笑)
急激に値を下げると「損切りに引っかかる→すぐに新しく買いを入れる→損切りに引っかかる・・・」というループが発生して大きな損を出してしまいます。
ストップロス(損切り)を変更すればある程度防げそうですので、ちょっと最適化してみます。
最適化
50pipsで損切り、200pipsで利益確定するようにしました。
連続損切りにあうことは少なくなり、年間トータルでプラスになりました。
PFは1.09とそれほど良いものではありませんが・・・。 うーん・・・
RVIなんていらないんじゃないの
時々あるんですよね・・・「インジなんて要らんかったんだ!」ってなることが。 RVIなんてモノは外してやりました。
回数が増えた上に良くなっています!(笑) PFは1.15程度。
後はいつもどおり、時間のフィルタを追加してやりましょう。
トレード時間を制限する
FXは(基本)24時間動いていますが、時間帯によって市場参加者や人数が大きく変わるため値動きに違いが生じます。
「トレンドができやすい時間帯」や「カウンターしやすい時間帯」を狙ってトレードすることで勝率を上げることが可能です。
これはUTC1時から9時、日本時間では10時から18時に制限した場合です。 (もう少し早い時間・・・NYの後半以降~日本市場オープンまでの勝率も悪くないです)
PFは1.30となっています。
揉み合い相場では損切りを連発する
まずまず良くなってきましたが「揉み合い相場」では損切りを連発するなど、改善しなければならない問題が残っています。(移動平均が揉み合いに弱いことは誰でも知っていることですが)
チャートを見ると移動平均が絡み合っています。 これを除外するようなコードを書いてやると良さそうです。
相場の反転
移動平均のもう一つの弱点は反応が遅いことです。
左の下降相場のように強い動きではしっかり勝てますが、右の四角内のように急に上昇相場に変わると「強い動きの後はトレンド転換の判断が遅くなる」ため損切りを連発してしまいます。
この辺りを「仕方なし」と諦めるか、除外するようなロジックを書いて対処するか・・・難しいところです。 (裁量トレードであれば「気をつけよう」で済むのですが(笑))
結論
幾つか改善しなければならない問題はあるものの、十分優位性のあるシステムだと思います。
RVIというインジケーターについては・・・僕には良さがわかりませんでした(笑)
無くても良いんじゃないかな・・・。もしくは、自分の好きなインジケーターを組み合わせてみても良いのではないでしょうか。
後日、もう少し改善・改良してみたいです。
コメント
おはようございます。
以前、コメントさせていただいた後、いつも拝見させていただいています。
最近、自分の手法をEA化しようとプログラミングを始めてみました。
ただ、裁量ではうまく行くものの実際にEAにして稼働させてみると「あれ?」と思う事が多発し前途多難です(苦笑)
特にレジサポのブレイクの判断に四苦八苦しています。
やはり裁量とEAは違うものだと実感しています。
これからも拝見させていただきます。
コメントありがとうございます。
なかなかEAで上手くいくように作るのは大変ですね・・・。
あるとき突然「あ!そうだ!」っとロジックが閃いたりすることもあるので、めげずに頑張ってください!(^^)b
それでは、今後もよろしくお願いしますっ。
こんにちは。
最近こちらのブログにたどり着いて楽しく勉強させていただいております。
凄く初歩的な質問なのですがご面倒でなければご教授いただけませんでしょうか?
よく貴ブログでバックテストを行っていらっしゃいますが、どんなインジケーターでもバックテストできるのでしょうか?
標準搭載ですとMAやMACDしかありませんよね?
それをADXmやCCIなどでも出来るのでしょうか。
また、例えばdamianiと言うインジケーターがあるのですがdamianiがトレンドが出てる時に色の変わるMA(MA in colorなど)例えばロング方向に色が変わったら…など細かいテストなどはできるのでしょうか?
まだ未熟者でお手数おかけしますがご教授頂ければ幸いです。
コメントありがとうございます。
>どんなインジケーターでもバックテストできるのでしょうか?
基本的にはできるはずです。
MetaTraderにインストールされている・・・例えばCCIなどは呼び出す関数(iCCI)が用意されていて使い方もWeb上にいくらでもありますし、書籍を買えば解説されていると思いますので難しくありません。
しかし、damianiのようにインストールされていないインジケータを利用するのは難易度が非常に高いです。
使い方の解説は多分ないので、自分で解析してなんとかやるしかありません。
最初は簡単に呼び出せるものから、慣れてきたら他のものを・・・という感じでステップアップしていくのが良いかと思います。