エラー、バグ、質問 - ページ 2120

 
fxsaber:

絞っているようには見えないが。まだパブリックドメインにはなっていないようですね。

それは、自らの宣伝、フォーラム、そして何かを分析した内的産物である可能性が高い
 
Комбинатор:
それは、自らの宣伝、フォーラム、そして何か他のものの分析の内的産物である可能性があります

社内での使用だけでは、なぜか対応が悪い記述になっています。

 

?

void OnStart()
{
        int a = 0, b = 0; //Результат:
        Print(( ++a) + ( ++a)); //3
        Print((b+=1) + (b+=1)); //4
}

結果:3 4

何が違うの?

 
A100:

?

結果:3 4

何が違うのでしょうか?

もちろん、違いはあります。最初のケースでは、まず++a、次に+、そして++aになります。

2つ目は、b+=1、次にb+=1、次にb+bです。

 
初心者の方にアドバイスをお願いします。 これまでMQL4では、EAに条件を書く場合、例えばローソク足が移動平均線の上で引けたので注文を出した、というように終値を 示すClose[0]を書くだけでよかったんです。MQL5(Forts用)では、ハンドルで異なる指標を比較することはできますが、単純なローソク足分析は機能しません。もしかしたら、これらのローソク足(高値、安値、始値、終値)はどこかで宣言する必要があるのでは? MT4の場合、条件にClose[0]と書いただけで、システムはこれが現在のバーの終値であると理解します。
 
VadimR:
初心者の方にアドバイスをお願いします。 これまでMQL4では、EAに条件を書く場合、例えばローソク足が移動平均線の上で引けたので注文を出した、というように終値を 示すClose[0]を書くだけでよかったんです。MQL5(Forts用)では、ハンドルで異なる指標を比較することはできますが、単純なローソク足分析は機能しません。ローソク足のデータ(高値、安値、始値、終値)をどこかに宣言する必要があるのかも? でもMT4の場合、条件にClose[0]と書いただけで、これが現在のバーの終値だとシステムが認識しました。

機能CopyXXXXを使用する

 
fxsaber:

もちろん、違いはあります。

2つ目は、b+=1、次にb+=1、次にb+bです。

このロジックに従うのであれば

void OnStart()
{
        int c = 0;    //Результат:
        Print( c     + (c+=1)); //1
}

まずc+=1、次にc+cとなり、結果は1+1=2です。そして、その結果=1

 
A100:

このロジックに従うのであれば

まずc+=1、次にc+cとなり、結果は1+1=2です。そして、その結果=1

スクリプトでのみ不正に動作し、EAでは正常に動作します。

前の例のことです。

 
A100:

そのロジックに従うのであれば

まずc+=1、次にc+cとなり、結果は1+1=2です。そして、その結果=1

理屈が抜けていますね。

Print((c+=0) + (c+=1)); //2
Print((c+=1) + c); //2
 
fxsaber:

論点がずれていますね。

もし私がロジックを理解していないなら、なぜC99C++ではどちらの場合も結果https://www.mql5.com/ru/forum/1111/page2140#comment_6484866 が同じになるのでしょうか?

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.02.05
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы