mql4言語の特徴、微妙なニュアンスとテクニック - ページ 17

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

mql5言語の特徴、TipsとTricks

fxsaber, 2019.02.20 07:26

すべてのテスターモードにおいて、価格は正規化されていません。

大げさに言えば、これはテスターのバグです。


これがBirt-modeにも当てはまるかどうかは、わからない。

 

もしこれがオフトピックであれば申し訳ありませんが(私は言語開発についてフォローしているとは言えません)、この行が何をするのか正確に説明してもらえますか?

#property strict

説明しよう。

2つの(MTで同一の)価格を比較するスクリプトがある。

#property strict

void OnStart()
{
   const int Total = OrdersHistoryTotal();
   int Prices1, Prices2;
   
   double open_price, close_price;
   OrderSelect("37027330", SELECT_BY_TICKET, MODE_HISTORY);
   open_price = OrderOpenPrice();
   close_price = OrderClosePrice();

   Print(open_price);
   Print(close_price);
   Print(open_price-close_price);
   
   return;
}

MTでは価格は等しいが、その差はゼロにはならない(上に書いたとおり)。

この行(#property strict)を削除すると、差分はゼロになります。

なぜ?

 
Dmitry Rannev :

もしこれがオフトピックであれば申し訳ありませんが(私は言語開発についてフォローしているとは言えません)、この行が具体的に何をするのか説明してもらえますか?

説明しよう。

2つの(MTで同一の)価格を比較するスクリプトがある。

MTでは価格は等しいが、その差はゼロにはならない(上に書いたとおり)。

この行(#property strict)を削除すると、差分はゼロになります。

なぜ?

"#property strict" は mql4 でしか使え ません。mql5では、"strict "モードが常にtrueになるため、この機能は役に立ちません。
 
Alain Verleyen:
"#property strict" は mql4 でしか使え ません。mql5では、"strict "は常に真であるため、意味がない。

これが私たちの言うMT4です。正規化問題については、上でも議論されています。MT4で、ある価格は等しく、ある価格を比較するとそうでない理由を理解しようとしています。の続きです。

 
Dmitry Rannev:

それがMT4です。正規化問題については、上でも議論されています。MT4で、ある価格は等しく、ある価格を比較するとそうでない理由を理解しようとしています。これは続きです。

ディミトリ この話題はもう飽きましたね。秘密は守りますが、プログラマーのキリルやセルゲイ......といった人たちがいますね。名字は言いません。「有名すぎて譲れない」©全部バレてる...。

 
Dmitry Rannev:

もしこれがオフトピックであれば申し訳ありませんが(私は言語開発についてフォローしているとは言えません)、この行が何をするのか正確に説明してもらえますか?

説明しよう。

2つの(MTで同一の)価格を比較するスクリプトがある。

MTでは価格は等しいが、その差はゼロにはならない(上に書いたとおり)。

この行(#property strict)を削除すると、差分はゼロになります。

なぜ?

void OnStart()
{
  double Price1 = DBL_EPSILON;
  double Price2 = 0;

  Print(Price1 - Price2);          // 0 - грубо показывает.
  Print((Price1 - Price2) * 1 e15); // не ноль
}


ストリクトはイコライザーに影響しない。印刷 時のみ - 大雑把に、またはより正確に数字を表示します。

 
Dmitry Rannev:

MTでは価格は等しいが、その差はゼロではない(上に書いたとおり)。

この行(#property strict)を削除すると、その差はゼロになります。

double 型の数値は(0 を含めて)等しいかどうか確認できないので、その差を最小値と比較する必要がある(DBL_EPSILON、FLT_EPSILON、Point)。

 
Ilya Malev:

double 型の数値は(ゼロを含む)等しいかどうかをチェックできないので、その差を最小値と比較する必要がある(DBL_EPSILON、FLT_EPSILON、Point)。

そういう話ではないんです。

 
fxsaber:

他のことなんです。

質問の原因を想像してみたところ、Printに関する質問だけでなく、アルゴリズムに何らかの誤りがあったのではないかという結論に達しました。

 
Ilya Malev:

何が原因か想像してみたところ、Printの問題だけでなく、アルゴリズムに何らかの誤りがあったのではないかという結論に至りました。

この問題は、上記のfxsaberさんが説明されています。原因を探っているところです。

理由: