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

 
uncleVic:
そういうことなんです。

本当にありがとうございました。すべてがシンプルで素敵です )

もともとEvent mapを試したのですが、最後まで理解できなかったので、自分でOnEvent()をオーバーロードすることにしました...。

P.S. ターミナルに付属するコードやドキュメントに、イベントマップの使用例(ON_EVENTからON_EXTERNAL_EVENTへ)があれば、より理解しやすくなると思います。ON_EVENTの例は、Experts/Examples/Controls/ControlsDialog.mq5 と Indicators/Examples/Panels/PanelDialog.mq5 しかなく、少なくとも他の例は見つかっていない。そして、ホームページで検索しても、記事 中の数文字を除いて、何も出てきませんでした。

 
Rone:

本当にありがとうございました。すべてがシンプルで素敵です )

元々、Event mapを試してみたのですが、完全に理解できなかったので、自分でOnEvent()をオーバーロードすることにしました...。

P.S. ターミナルに付属するコードやドキュメントに、イベントマップの使用例(ON_EVENTからON_EXTERNAL_EVENTへ)があれば、より理解しやすくなると思います。ON_EVENTの例は、Experts/Examples/Controls/ControlsDialog.mq5 と Indicators/Examples/Panels/PanelDialog.mq5 しかなく、少なくとも他の例は見つかっていない。そして、サイト内検索でも、記事 中の数文字を除いては、何も出てきませんでした。


1.お願いします。ご遠慮なくご連絡ください。

2.追加すること。

 
CTrade::OrderSend: buy stop 0.94 USDCHF at 0.93366 sl: 0.93016 tp: 0.94816 [無効なボリューム]である。

USDCHFで0.94ロットの出来高エラーが発生したのはなぜですか

これは無効なボリュームか、このボリュームを配置するのに十分なお金を持っていなかったのですか?

 
Konstantin83:
CTrade::OrderSend: buy stop 0.94 USDCHF at 0.93366 sl: 0.93016 tp: 0.94816 [無効なボリューム]である。

USDCHFで0.94ロットの出来高エラーが発生したのはなぜですか?

これは無効なボリュームか、このボリュームを配置するのに十分なお金を持っていなかったのですか?

ツール設定のボリュームの段差とは何ですか?ロットの0.10か0.01か?0.10であれば、すべて正しい - 無効なボリューム
 
Renat:
ツール設定のボリュームステップとは何ですか?0.10ロットか0.01ロットか?0.10であれば、正解 - 容量違い

metaquotesのデモサーバーでは、0.01ステップです。

ロットを確認する



CSymbolInfo       Exp_Symbol_Info;              // symbol info object

...
double CBaseTrade::GetCorrectLot(double pLot)
 {
      double   dLot   = pLot;
      double   dLotMin   = Exp_Symbol_Info.LotsMin();
      double   dLotMax   = Exp_Symbol_Info.LotsMax();
      double   dLotStep  = Exp_Symbol_Info.LotsStep();
    
      dLot=dLotStep*NormalizeDouble(pLot/dLotStep, 0);
 
      if(dLot < dLotMin) dLot=dLotMin;
 
      if(dLot > dLotMax && dLotMax !=0) dLot=dLotMax;

 
  return(dLot);
 }

 

音量値を4~8桁でプリントアウト してください。

ここでは2桁目に丸めなかったという明確なミスがある。

dLot=dLotStep*NormalizeDouble(pLot/dLotStep, 0);
 
Renat:

音量値を4~8桁でプリントアウトしてください。

ここでは2桁目に丸めなかったという明確なミスがある。

はい、でもなぜ四捨五入がないのですか?

ロットステップを0.01とすると

入力ロット 2.111

result = 0.01 * NormalizeDouble(2.111/0.01)=0.01*NormalizeDouble(211.1)=0.01*211=2.11

また、ロット単位が0.25のブローカーがある場合、結果を第2符号に丸めることはできない。

ロットステップを0.25とした場合

着信ロット 2.3

結果 = 0.25 * NormalizeDouble(2.3/0.25)=0.25*NormalizeDouble(9.2)=0.25*9=2.25


テスターでは問題なし。ただ、今日デモで何度かこのエラーが出ました。

CSymbolInfo クラスからのボリュームステップは正規化されていますか?

 

アドバイスお願いします

マーケット一覧の通貨ペアの背景色を変更する方法

あるいは、色を完全に取り除くこともできます。

ありがとうございました。

 
Konstantin83: result =0.01 * NormalizeDouble(2.111/0.01)=0.01*NormalizeDouble(211.1)=0.01*211=2.11
2つの倍数の積は正規化されていない数です。 0.01*NormalizeDouble(211.1)=0.01*211.*******=2.11*********** です。
 
Konstantin83:

そうなんですが、なぜ丸みがないのでしょうか?

正規化された最高値のマット演算の結果は正規化された数 ではないからです。

だからこそ、間違いのない場所なのです。

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5