MT4のEAを作成しています。恥ずかしい話ですが始めたばかりなのでプログラムの 条…

MT4のEAを作成しています。恥ずかしい話ですが始めたばかりなのでプログラムの
条件式がうまくいきません。

例えば以下の式ですが

もし、

ケース1
A<B<CでかつE>DかつG<F

の場合

もしくは
ケース2
H>I>J>K>L
かつ
M<L
かつ
N>1

の場合


P=0か−1の場合Qを実行するのに
以下のように記述するとうまくいきません。

if((((A<B)&&(B<C)&&(D>E)&&(F>G)) || (((H>I)&&(I>J)&&(J>K)&&(K>L&&(M<L)&&(N>1))))

&&( P == 0 || P= = -1 ))



実際には以下のように記述しています

if(
(
((RCHARTKAI1<RCHARTKAI2)
&&(RCHARTKAI2<RCHARTKAI3)
&&(RKAIMAJORL>RKAIMAJORR)
&&(RBUY_TREND_C>RBUY_TREND_SETTING))

||(
((RMA21>RMA22)
&&(RMA22>RMA23)
&&(RMA23>RMA24)
&&(RMA24>RMA25)
&&(ROUSOKU_PLUS<SITAHIGEHANTEI)
&&(ROUSOKU>0)))
)
&&( Ticket_L1 == 0 || Ticket_L1 == -1 ))

{

Ticket_L1 = OrderSend(Symbol(),OP_BUY,Lots1,Ask,Slip,0,0,Comments1,MAGIC1,0,Red);

}

{ } や( )の使い方がよくわかりません。

取引の制御ができないため、エントリーを連発してしまいます。

もしよろしければわかりやすく教えてくださ ぁ

お願いいたします。

回答1

>A<B<Cでかつ【E>D】かつG<F
>(A<B)&&(B<C)&&【(D>E)】&&(F>G)

【 】部分が違います。
※アルファベットの配置が左右逆なのに比較演算子が同じです。

>{ } や( )の使い方がよくわかりません。

if,else,for,while等は{ }を使用しないと直後の1文(セミコロン(;)まで)のみ実行対象とします。{ }を用いると{ }の中身が実行対象になります。

重文処理 | MT4でEA自作しちゃお〜
http://yukifx.web.fc2.com/sub/reference/01_basic/Operators/Operator…

( )はいろいろな意味で用いられますが、条件式の中で優先順位を変更する為に用いられる( )の事でしたら算 瑤濃藩僂垢( )と同じ意味で、「先に計算する」という意味です。

演算子の優先順位 | MT4でEA自作しちゃお〜
http://yukifx.web.fc2.com/sub/reference/01_basic/Operation/Operatio…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA