目次
概要
『FX革命! 短期間で爆発的に儲かるハイレバレッジ投資法』(南緒)の袋とじに記載されている手法をもとにEAを作成して、検証します。
トレードルール
この手法は、押し目買い・戻り売りを狙う手法です。
上位時間足の平均足をもとにトレンドの方向を確認して、5分足で押し目・戻りを確認します。
買う場合のルールを確認します。
エントリールール
・30分足、1時間足、4時間足の平均足が3つとも陽線
・5分足の平均足ボリンジャーバンドの-2σラインにタッチしている
本書では「30分足、2時間足、4時間足」の組み合わせでするように記載されていますが、今回の検証では、「30分足、1時間足、4時間足」の組み合わせで行います。
MT4では2時間足を表示することができないので、代わりに1時間足を使用するためです。
また、書籍では、2σラインをタッチした瞬間ではなく、次の足の色が反転するまで待つ方がよいと記載されていますが、今回の検証では反転の確認はしません。
エグジットルール
本書ではエグジットは「臨機応変に決めます」(p153)と記載されています。
そのため、明確に定義できるエグジットルールはありません。
ここでは、利確→20Pips、損切→10Pipsとします。
ソースコード
※以下のソースコードは、
『FXメタトレーダー実践プログラミング (現代の錬金術師シリーズ)』(豊嶋久道)
で紹介されているライブラリーを使用しています。
そのため、コピペだと動きません。
それに加えて、平均足のインジケータが別途必要です。
豊嶋さんの本のp123で紹介されている「HeikinAshi」というインジケータをビルドして、「Indicators」フォルダ以下に配置してください。
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 |
// マイライブラリー #include <MyLib.mqh> // マジックナンバー #define MAGIC 20094060 #define COMMENT "南緒本" // 外部パラメータ extern double Lots=0.1; extern int Slippage=3; extern int SLpips= 10; // 損切り値幅(pips) extern int TPpips= 20; // 利食い値幅(pips) extern int BandsPeriod=21; extern int BandsDeviation=2; int EntrySignal(int magic) { // オープンポジションの計算 double pos=MyCurrentOrders(MY_OPENPOS,magic); double averageOpen_M5_0 = iCustom(NULL, PERIOD_M5, "HeikinAshi", 0, 0); double averageClose_M5_0 = iCustom(NULL, PERIOD_M5, "HeikinAshi", 1, 0); double upperBB_M5_0=iBands(NULL,PERIOD_M5,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_UPPER,0); double lowerBB_M5_0=iBands(NULL,PERIOD_M5,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_LOWER,0); //30分足、1時間足、4時間足の直近の足の色がそろっている bool isPositiveBar_M30=IsPositiveBar(PERIOD_M30); bool isPositiveBar_H1=IsPositiveBar(PERIOD_H1); bool isPositiveBar_H4=IsPositiveBar(PERIOD_H4); bool isUpState=isPositiveBar_M30 && isPositiveBar_H1 && isPositiveBar_H4; bool isDownState=!isPositiveBar_M30 && !isPositiveBar_H1 && !isPositiveBar_H4; //5分足、2σラインをタッチしている bool isOverUpperBB=averageClose_M5_0>upperBB_M5_0; bool isUnderLowerBB=averageClose_M5_0<lowerBB_M5_0; bool buySignal=isUpState && isUnderLowerBB; bool sellSignal=isDownState && isOverUpperBB; int ret=0; // 買いシグナル if(pos<=0 && buySignal) ret=1; // 売りシグナル if(pos>=0 && sellSignal) ret=-1; return(ret); } // スタート関数 int start() { // エントリーシグナル 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)); } //+------------------------------------------------------------------+ bool IsPositiveBar(ENUM_TIMEFRAMES timeframe) { double averageOpen = iCustom(NULL, timeframe, "HeikinAshi", 0, 0); double averageClose = iCustom(NULL, timeframe, "HeikinAshi", 1, 0); return averageClose>averageOpen; } //+------------------------------------------------------------------+ |
結果
考察
プロフィットファクタは1.25とそこまで悪い値ではありません。
パラメータの最適化を行えば、さらによい数字が期待できます。
しかし、2年間で、34回しか取引がないというのはあまりに、少なすぎます。
もう少しエントリーの条件を緩める必要があります。
改善点
・2σラインタッチ後に反転確認する
足の色が反転するまで待つ。
・エントリーの条件を緩める
p151に記載されているように、強いトレンドが発生している場合は2σラインタッチではなく、ミドルバンドのタッチでエントリーする。
・エグジットルールを改良する
固定値で利確・損切するのではなく、何かしらの基準で利確・損切の値を変動させる。
関連記事
~FXを始めてみませんか?~
XMは、口座を開設するだけで、3000円のボーナスが無料でもらえます。
資金はないけど、FXを試しに挑戦してみたい方でも大丈夫です。
(サイト主もXMを使用しています)
コメント