質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

Q&A

0回答

340閲覧

インジケータ①の条件1,2のどちらかを満たすときにサインを出すインジケータ②の作成

aYuYa

総合スコア0

MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

0グッド

0クリップ

投稿2022/05/29 13:36

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){}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aYuYa

2022/05/30 10:24

原因が不明で知りたいのもありますが,1番は2つの条件(出来ればもっと複数の条件)のどちらか(どれか)を満たす時にサインを出すインジケータを作りたいので,この方法なら出来ますとの回答でもとてもありがたいです. よろしくお願い致します.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問