MT4のEAに関して質問です。

MACDのメインが0.00015から-0.00015の間にある時以外にサインを出したいのです。

——————————————————————–
extern double line1 = 0.00015;
extern double line2 = -0.00015;

double MACD_M = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
——————————————————————–

とした場合に、

——————————————————————–
int sign;
if(line1 < MACD_M || line2 > MACD_M) sign=a;
——————————————————————–

上記のような記述で動作するのでしょうか?

若しくはもっと良い記述があれば教えて頂きたいです。

宜しくお願いします。

..[補足]..
fhat6014さん。ご回答ありがとうございます。

また同じような質問ですが、下記のようにしても同じ動作しますでしょうか?

——————————————————————-
int notrade = line1 > MACD_M && line2 < MACD_M;

int sign;
if(MACD_M != notrade) sign=a;
——————————————————————–
度々申し訳ありません。

回答1

条件文の書き方はこれでいいと思います。

ただ、終値で判断する指標の場合、確定していないバーのシグナルはあまりあてにはならないと思います。

補足について

これは正しく動きません。
この場合はline1 > MACD_M && line2 < MACD_Mが
真ならnotradeに1
偽ならnotradeに0
が代入されます。
なので、同じようにするならこうなります。

——————————————————————-
int notrade = line1 > MACD_M && line2 < MACD_M;

int sign;
if(notrade == 0) sign=a;
——————————————————————–

また、真偽の判断は普通intではなくboolを使います。

——————————————————————-< br /> bool notrade = line1 > MACD_M && line2 < MACD_M;

int sign;
if( !notrade ) sign=a;
——————————————————————–

——————————————————————-
bool tradeok = line1 < MACD_M || line2 > MACD_M;

int sign;
if( tradeok ) sign=a;
——————————————————————–

コメントを残す

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

CAPTCHA