目次
概要
以下のような記事を見つけました。
https://konnafx.exblog.jp/13165745/
この記事で、『あの4億円脱税主婦が教えるFXの奥義』(池辺雪子)の手法が有効であると記載されているので、自分も確認してみることにしました。
手法
長期のRSIと短期のRSIの乖離を見る手法です。
乖離が大きくなった場合に、乖離が収縮する方向に対してエントリーする逆張り手法です。
※設定
長期のRSI→期間42
短期のRSI→期間13
トレードルール
買う場合のルールを確認します。
※本書では、細かなトレードルールは記載されていません。
そのため、以下のルールには自分が付け足したルールがあります。
エントリールール
・長期のRSIと短期のRSIの乖離が20%を超える
・短期のRSIが30%以下
エクジットルール
・長期のRSIと短期のRSIがクロス
その他(自分が追加ルール)
・損切→40Pips。利確→60Pips
※エクジットルールがなかなか執行されない場合用
ソースコード
※以下のソースコードは、
『FXメタトレーダー実践プログラミング (現代の錬金術師シリーズ)』(豊嶋久道)
で紹介されているライブラリーを使用しています。
そのため、コピペだと動きません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
// マイライブラリー #include <MyLib.mqh> // マジックナンバー #define MAGIC 20094060 #define COMMENT "池辺本" // 外部パラメータ extern double Lots=0.1; extern int Slippage=3; // エントリー関数 extern int RSIHigh= 70; // RSIで売るときのトリガー値 extern int RSILow = 30; // RSIで買うときのトリガー値 extern int RSISeparation = 20; // RSIの乖離 extern bool IsUseExit= true; extern int SLpips= 40; // 損切り値幅(pips) extern int TPpips= 60; // 利食い値幅(pips) extern int RSIFastPeriod=13; // RSIの期間(短期) extern int RSISlowPeriod=42; // RSIの期間(長期) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int EntrySignal(int magic) { // オープンポジションの計算 double pos=MyCurrentOrders(MY_OPENPOS,magic); double rsi_fast_0=iRSI(NULL,0,RSIFastPeriod,PRICE_CLOSE,0); double rsi_slow_0=iRSI(NULL,0,RSISlowPeriod,PRICE_CLOSE,0); double rsi_gap=rsi_fast_0-rsi_slow_0; bool rsiOverHigh=rsi_fast_0>RSIHigh; bool rsiUnderLow=rsi_fast_0<RSILow; bool rsiPlusGap=rsi_gap>RSISeparation; bool rsiMinusGap=rsi_gap<-RSISeparation; bool buySignal=rsiUnderLow && rsiMinusGap; bool sellSignal=rsiOverHigh && rsiPlusGap; int ret=0; // 買いシグナル if(pos<=0 && buySignal) ret=1; // 売りシグナル if(pos>=0 && sellSignal) ret=-1; return(ret); } // スタート関数 int start() { // 売買ポジションのエグジット if(IsUseExit) { ExitPosition(MAGIC); } // エントリーシグナル int sig_entry=EntrySignal(MAGIC); // 買い注文 if(sig_entry>0) { MyOrderClose(Slippage,MAGIC); MyOrderSendSL(OP_BUY,Lots,Ask,Slippage,SLpips,TPpips,COMMENT,MAGIC); } // 売り注文 if(sig_entry<0) { MyOrderClose(Slippage,MAGIC); MyOrderSendSL(OP_SELL,Lots,Bid,Slippage,SLpips,TPpips,COMMENT,MAGIC); } return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool MyOrderSendSL(int type,double lots,double price,int slippage,int slpips,int tppips,string comment,int magic) { int mult=1; if(Digits == 3 || Digits == 5) mult=10; slippage *= mult; if(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult*=-1; double sl=0,tp=0; if(slpips > 0) sl = price-slpips*Point*mult; if(tppips > 0) tp = price+tppips*Point*mult; return(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // エグジット関数 void ExitPosition(int magic) { // オープンポジションの計算 double pos=MyCurrentOrders(MY_OPENPOS,magic); double rsi_fast_0=iRSI(NULL,0,RSIFastPeriod,PRICE_CLOSE,0); double rsi_slow_0=iRSI(NULL,0,RSISlowPeriod,PRICE_CLOSE,0); double rsi_gap=rsi_fast_0-rsi_slow_0; bool rsiDeadCross=rsi_gap<0; bool rsiGoldenCross=rsi_gap>0; int ret=0; //if(pos < 0 && 売りポジションの決済シグナル) ret = 1; if(pos<0 && rsiDeadCross) ret=1; //if(pos > 0 && 買いポジションの決済シグナル) ret = -1; if(pos>0 && rsiGoldenCross) ret=-1; // オープンポジションの決済 if(ret!=0) MyOrderClose(Slippage,magic); } //+------------------------------------------------------------------+ |
結果
考察
トレード回数の機会は少なかったです。
1時間足でバックテストを行った所、年に両手で数えられる程度の回数しか取引しませんでした。
そのため、15分足で検証しました。
以前に単純なRSIを使用したトレードルールを検証したことがあります。
→RSIを使用したトレードルールをMT4で検証
その時の結果と比べるとプロフィットファクタが1を超えているだけましかなと思えます。
しかし、自分の資金を使って動かしたいと思えるレベルの成績ではないので、今後、改造する必要性があります。
改善点
・条件をしぼる
(例)
長期のRSIが40%~60%の間のみトレードする。
別のインジケータを使用する。
・トレード機会を増やす
この手法はトレード機会が少ないので何かしらの条件を緩める。
緩めるなら乖離率の20%という値をもう少し小さな値にするなどが考えられる。
・パラメータの変更
(例)長期のRSIと短期のRSIの期間を変更する
・反転を確認する
長期のRSIと短期のRSIの乖離が20%を超えた瞬間にエントリーするのではなく、何かしらの反転シグナルを待つ
(例)値段の反転、短期のRSIの反転、乖離の収縮
関連記事
~FXを始めてみませんか?~
XMは、口座を開設するだけで、3000円のボーナスが無料でもらえます。
資金はないけど、FXを試しに挑戦してみたい方でも大丈夫です。
(サイト主もXMを使用しています)
コメント