目次
概要
『FXで稼ぐ人のテクニックVol.2 スキャルピング デイトレ編』(インフォレスト)
の1章で1分足をもとにしたレンジブレイク手法が紹介されています。
この記事では、この本から着想を得て、シンプルなレンジブレイク手法が有効か検証してみました。
トレードルール
・過去30本の足の高値と安値の値幅が20Pips以内
・現在の足が過去の30本分の足の高値、または安値をブレイクしたら、ブレイクした方向にエントリーする。
・損切は5Pips。利確は20Pips。
ソースコード
※以下のソースコードは、
『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 |
// マイライブラリー #include <MyLib.mqh> // マジックナンバー #define MAGIC 20094021 #define COMMENT "1分足のレンジブレイク" // 外部パラメータ extern double Lots = 0.1; extern int Slippage = 3; extern int SLpips= 5; // 損切り値幅(pips) extern int TPpips= 20; // 利食い値幅(pips) input int LimitHeightPoint = 200; input int SignalWaitBarNumber = 30; input int EntryWaitBarNumber = 1; int EntrySignal(int magic) { // オープンポジションの計算 double pos = MyCurrentOrders(MY_OPENPOS, magic); bool sellSignal=false; bool buySignal=false; int highestIndex= iHighest(Symbol(),0,MODE_HIGH,SignalWaitBarNumber,EntryWaitBarNumber); double highPrice = High[highestIndex]; int lowestIndex= iLowest(Symbol(),0,MODE_LOW,SignalWaitBarNumber,EntryWaitBarNumber); double lowPrice = Low[lowestIndex]; if((highPrice-lowPrice)<LimitHeightPoint*Point) { if(Close[0]>highPrice) { buySignal=true; } if(Close[0]<lowPrice) { sellSignal=true; } } 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)); } |
結果
考察
プロフィットファクトは1を下回っており、今のままでは使い物になりません。
取引回数は十分になるので、もう少し、条件を厳しくして、エントリーを厳選する必要があります。
また、何かしらの方法でだましのシグナルを取り除く工夫が必要になります。
(追記)
「過去30本の足の高値と安値の値幅が20Pips以内」の条件を「過去60本の足の高値と安値の値幅が20Pips以内」に変更してみました。
結果は、プロフィットファクタは0.93。
さして成績は良くなりませんでした。
~FXを始めてみませんか?~
XMは、口座を開設するだけで、3000円のボーナスが無料でもらえます。
資金はないけど、FXを試しに挑戦してみたい方でも大丈夫です。
(サイト主もXMを使用しています)