【検証】ボリンジャーバンドの3σバンドブレイク(第1弾)※順張り
設定
通貨ペア | [USD/JPY] |
---|---|
使用時間足 | 1時間足 |
期間 | 2016.1.1~2018.12.31 |
売買ルール
環境認識(セットアップ) | なし |
---|---|
エントリー(OPEN) | ボリンジャーバンドの3σブレイクした次の足 |
決済(CLOSE) | 【利益(TP)】:50pips 【損切(SL)】:50pips |
最大ポジション | 1 |
結果
検証結果
純資産曲線は右肩上がりです。
実用的に採用したいところですが、取引回数が週に1度という頻度です。
裁量では待てないかもしれません。
他の通貨ペアでも検証をしてみたいと思います。
また、バックテストの期間も長くして確認したい。
検証を引き続きしていきたいと思います。
EAファイルのダウンロード
MT4にログインしたら上部メインメニュー内の「ファイル」から「データフォルダを開く」を選択して、
「MQL4」=>「Experts」の中にkoba1_bbσ3.ex4ファイルを入れて利用ください。
EAのダウンロードはこちら
今回作ったコードを以下に記載しておきます。
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 |
//+---------------------------------------------------------------------+ // // Expert Adviser Create // https://kobalog.xyz/ // test5 // For MQL4 // //+---------------------------------------------------------------------+ //+---------------------------------------------------------------------+ // ティック毎の処理 //+---------------------------------------------------------------------+ void start() { // ニューバーの発生直後以外は取引しない static datetime bartime=Time[0]; if (Time[0]==bartime) return; bartime=Time[0]; //各種パラメーター取得 int EntryBuy=0; int EntrySell=0; int ExitBuy=0; int ExitSell=0; int LongNum=LongPosition(); int ShortNum=ShortPosition(); //エントリ基準取得 int Strtagy1=Indicator5_1(Entry1,TimeScale1,Bband1_period,Bband1_shift,Bband1_deviation); int TotalNum=ShortNum+LongNum; //エントリ判定 if((TotalNum<MaxPosition && Strtagy1==1 )) { EntryBuy=1; } else if((TotalNum<MaxPosition && Strtagy1==-1 )) { EntrySell=1; } //オープン処理 if(EntryBuy!=0) { OpenOrder(1); } if(EntrySell!=0) { OpenOrder(-1); } } //バンドブレイク int Indicator5_1(int i,int TimeScale,int BolinPer,int ShiftPer,double BolinDiv) { double Upper=iBands(NULL, TimeScale, BolinPer, BolinDiv, ShiftPer, PRICE_CLOSE, MODE_UPPER, i); double Lower=iBands(NULL, TimeScale, BolinPer, BolinDiv, ShiftPer, PRICE_CLOSE, MODE_LOWER, i); double Ma1=iMA(NULL,TimeScale,1,0,0,PRICE_CLOSE,i); int ret=0; if (Upper<Ma1) { ret=1; } else if (Lower>Ma1) { ret=-1; } return(ret); } |