MT4のMQLのプログラミング初めて1ヶ月未満の初心者です.
動画やネットで学びながら最近エンベローブのサインインジケータを作成しました.
例(値などは適当)
以下のインジケータ①に条件1を入れると100勝70敗でした
条件2を入れると80勝40敗でした.
そこで条件①と②のどちらかを満たすときにサインを出すインジケータ②を作成しましたが,
思うようにサインを出してくれずに悩んでます.
orで繋げばいいと思いインジケータ②を作成しましたが,本来(100+70)~(100+70+80+40)個のサインが出るはずなのに170個以下のサインしか出ませんでした.
実際のサインを見ると以下のような検証結果になっていました.
ネット検索で探してみましたが,原因がよく分からず困っています.
もしよろしければ対処法を教えていただけないでしょうか?
よろしくお願い致します.
・検証結果
インジケータ①
条件1(true&&true&&true&&true)→100勝70敗サイン出てる
条件2(true&&true&&true&&true)→80勝40敗サイン出てる
インジケータ②
条件1or条件2
(true,true,true,true)or(true,folse,true or folse,true or folse)→100勝70敗サイン出てる
(true,folse,true or folse,true or folse)or(true,true,true,true)→80勝40敗サイン出てる
(true,true,true,true)or(true,true,true,true)→サイン出てる
(true,true,folse,true)or(true,true,folse,true)→サイン出したくないのにサイン出てる
(true,folse,true,true)or(true,true,true,true)→サイン出したいのにサイン出ていない
・インジケータ内容
インジケータ①
for(int i = limit; i >= 0; i--){
if(i == 0){
Buffer_0[i] = EMPTY_VALUE;
Buffer_1[i] = EMPTY_VALUE;
}
env1a = iEnvelopes(NULL,0,kikan, meth,0,0,hensa,1,i+1); //1つ前上
env1 = iEnvelopes(NULL,0,kikan, meth,0,0,hensa,1,i); //上
env1Y = iEnvelopes(NULL,0,kikan, meth,0,0,hensaY,1,i); //上黄
env1R = iEnvelopes(NULL,0,kikan, meth,0,0,hensaR,1,i); //上赤
if((iHigh(NULL,0,i+1) < env1a) && (iHigh(NULL,0,i) >= env1) && (iHigh(NULL,0,i) <env1R) && (iClose(NULL,0,i) < env1Y))
{Buffer_1[i] = iHigh(NULL,0,i)+Timeframe10Point;
if(i==0 && NowBars < Bars){
Alert("Env _ "+Symbol()+" _ M"+Period()+" _ Down");
PlaySound("alert");
NowBars = Bars;
}
}
}
インジケータ②(一部省略 インジケータ①と同じ)
env1a = iEnvelopes(NULL,0,kikan, meth,0,0,hensa,1,i+1); //1つ前上
env1 = iEnvelopes(NULL,0,kikan, meth,0,0,hensa,1,i); //上
env1Y = iEnvelopes(NULL,0,kikan, meth,0,0,hensaY,1,i); //上黄
env1R = iEnvelopes(NULL,0,kikan, meth,0,0,hensaR,1,i); //上赤
env1a_2 = iEnvelopes(NULL,0,kikan2, meth,0,0,hensa2,1,i+1); //1つ前上
env1_2 = iEnvelopes(NULL,0,kikan2, meth,0,0,hensa2,1,i); //上
env1Y_2 = iEnvelopes(NULL,0,kikan2, meth,0,0,hensaY2,1,i); //上黄
env1R_2 = iEnvelopes(NULL,0,kikan2, meth,0,0,hensaR2,1,i); //上赤
//パターン1:||で繋いだがダメ→パターン2を作成
if(((iHigh(NULL,0,i+1) < env1a) && (iHigh(NULL,0,i) >= env1)) && ((iHigh(NULL,0,i) < env1R) && (iClose(NULL,0,i) < env1Y)))
|| (((iHigh(NULL,0,i+1) < env1a_2) && (iHigh(NULL,0,i) >= env1_2)) && ((iHigh(NULL,0,i) < env1R_2) && (iClose(NULL,0,i) < env1Y_2))){}
//パターン2:形を変えてみたがダメ
if(((iHigh(NULL,0,i+1) < env1a) && (iHigh(NULL,0,i) >= env1)) && ((iHigh(NULL,0,i) < env1R) && (iClose(NULL,0,i) < env1Y))){a=1;}
else{a=0;}
if(((iHigh(NULL,0,i+1) < env1a_2) && (iHigh(NULL,0,i) >= env1_2)) && ((iHigh(NULL,0,i) < env1R_2) && (iClose(NULL,0,i) < env1Y_2))){b=1;}
else{b=0;}
if(a==1||b==1){}
あなたの回答
tips
プレビュー