【検証】一目均衡表の雲と日本時間にエントリー第2弾
設定
通貨ペア | [USD/JPY] |
---|---|
使用時間足 | 1時間足 |
期間 | 2016.1.1~2018.12.31 |
売買ルール
環境認識(セットアップ) | 一目均衡表の雲の並び |
---|---|
エントリー(OPEN) | 日本時間(冬時間)8時 |
決済(CLOSE) | 【利益(TP)】:ローソク足(終値)と遅行線のクロス 【損切(SL)】:ATR2.0 |
最大ポジション | 1 |
結果
検証結果
決済を変更した影響で、第一弾より悪くなりました。
利益を伸ばすつもりで変更したのですが、それが裏目にでました。
検証を引き続きしていきたいと思います。
今回作ったコードを以下に記載しておきます。
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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
//+---------------------------------------------------------------------+ // // Expert Adviser Create // https://kobalog.xyz/ // test5 // For MQL4 // //+---------------------------------------------------------------------+ //+---------------------------------------------------------------------+ // ティック毎の処理 //+---------------------------------------------------------------------+ void start() { //エントリ可能時間、曜日のチェック int T1=1; int timeEntry=0; timeEntry=IsEntryTimeCheck(true,EntryStartTime,EntryEndTime); if(timeEntry==-1) T1=-1; if (T1==-1 && overTimePosition==1 ) CloseOrder(0); // ニューバーの発生直後以外は取引しない 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 TotalNum=ShortNum+LongNum; //クローズ基準取得 int Strtagy2=Indicator2(Entry1,TimeScale1,Ichimoku1_tenkan,Ichimoku1_kijun,Ichimoku1_senkou); //クローズ判定 if(LongNum!=0) { ExitBuy=1; } if(ShortNum!=0) { ExitSell=1; } //エントリ基準取得 int Strtagy1 = Indicator5(Entry1,TimeScale1,Ichimoku1_tenkan,Ichimoku1_kijun,Ichimoku1_senkou); //エントリ判定 if((TotalNum<MaxPosition && T1==1) && Strtagy1==1) { EntryBuy=1; } else if((TotalNum<MaxPosition && T1==1) && Strtagy1==-1) { EntrySell=1; } //クローズ処理 if(ExitBuy!=0 && Strtagy2==-1) { CloseOrder(1); } if(ExitSell!=0 && Strtagy2==1) { CloseOrder(-1); } //オープン処理 if(EntryBuy!=0) { OpenOrder(1); } if(EntrySell!=0) { OpenOrder(-1); } } //+---------------------------------------------------------------------+ // インジケーター //+---------------------------------------------------------------------+ //エントリ可能時間帯かどうかを確認 int IsEntryTimeCheck(bool IsAllow ,string stime,string etime)// IsAllow_ture-当該時間の許可確認,false_禁止確認 { int ret=0; string startdate = TimeToStr(TimeCurrent(), TIME_DATE); datetime start_time = StrToTime(startdate +" " + stime); datetime end_time = StrToTime(startdate +" " + etime); if( stime < etime ) { if( TimeCurrent() >= start_time && TimeCurrent() < end_time ) ret = true; else ret = -1; } else { if( TimeCurrent() >= end_time && TimeCurrent() < start_time ) ret = false; else ret = 1; } if( IsAllow == false ) ret = ret*-1; return(ret); } //雲の並び int Indicator5(int i,int TimeScale,int InpTenkan, int InpKijun, int InpSenkou) { double Senkou1 =iIchimoku(NULL,TimeScale, InpTenkan, InpKijun, InpSenkou, MODE_SENKOUSPANA, i); double Senkou2 =iIchimoku(NULL,TimeScale, InpTenkan, InpKijun, InpSenkou, MODE_SENKOUSPANB, i); int ret=0; if (Senkou1>Senkou2) { ret=1; } else if (Senkou1<Senkou2) { ret=-1; } return(ret); } //ローソク足(終値)と遅行線のクロス int Indicator2(int i,int TimeScale,int InpTenkan, int InpKijun, int InpSenkou) { int ret=0; double Ma1=iMA(NULL,TimeScale,1,0,MODE_SMA,PRICE_CLOSE,i); double Delay =iMA(NULL,TimeScale,1,0,MODE_SMA,PRICE_CLOSE,i+InpKijun); double Ma1_1=iMA(NULL,TimeScale,1,0,MODE_SMA,PRICE_CLOSE,i+1); double Delay_1 =iMA(NULL,TimeScale,1,0,MODE_SMA,PRICE_CLOSE,i+InpKijun+1); int sig=0; if (Ma1>Delay) { sig=1; } else if(Ma1<Delay) { sig=-1; } int sig1=0; if (Ma1_1>Delay_1) { sig1=1; } else if(Ma1_1<Delay_1) { sig1=-1; } if (sig==1 && sig1!=1) { ret=1; } else if(sig==-1 && sig1!=-1) { ret=-1; } return(ret); } |