エラーに悩まされ、取引業務がない - ページ 4

 
Alexey Viktorov:

コンピュータは馬鹿だ。© M.M. Botvinnik.

そこで、バカのふりをして、バカの視点から、バカが設定したパラメータでアルゴリズムを成立させるようにします。この点からもオートバリデーターは適しています。フィードバック」に注目する。Expert Advisor はエラーについて通知しますか?

私は最終的にそれを考え出した、多分誰かが助けることができる、一般的には、ソ連は、MMは最小ロットのためにチェックされたときにのみ持っているので、ハードコア設定ロット= 0.01、よく、バリデータの預金は$ 1(トピックの一つにこの情報を発見)であると判明、それぞれ、それは取引にロット0.001(またはそう)を使用し、私はいつも一箇所に持っていたので、それぞれ、彼は十分にお金とロボットが取引されていないたくさんだった)(以下、「0.01

 
Roman Gergert:

私は最終的にそれを考え出した、多分誰かが助けるだろう、一般的には、MMは最小ロットのためにチェックされたときにのみボード、およびそう筋金入りのセットロット= 0.01、よく、バリデータの預金は$ 1(トピックの一つにこの情報を発見)であると判明、それぞれ、それは取引するロット0.001(またはそう)を使用すると私はいつも一箇所にたくさん持っていたので、それぞれ、彼は十分にお金を持っていないとロボットは取引しない)(。

もう一度、話題にしたいと思います。あなたの回答は、私の助けにはなりません。体積計算をして、すべてが収まらない場合は最小の体積を 使うようにしています。

SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN)

結局、何の計算もせずに最小限の量を一気に入れる。そして、マージンチェックが行われる...。であり、トレーディング業務は行っていない。

昨日、フォーラムの回答で、時間が経ってから同じコードを送信しても通ることがある、というのを偶然見つけました。時間が経つと、送信されなくなる。

どうしよう、2週間前にこの音量検知機能が過ぎて、それ以来、何も変わっていない!!!!

 
Evgeniy Scherbina:

もう一度、話題にしたいと思います。あなたの答えは、私の助けにはなりません。体積計算をして、全部入らなかったら最小の体積を 使うようにしています。

結局、何の計算もせずに最小限のボリュームを一気に入れる。そして、マージンチェックが行われる...。であり、トレーディング業務は行っていない。

昨日、フォーラムの回答で、時間が経ってから同じコードを送信しても通ることがある、というのを偶然見つけました。時間が経つと送信されない。

どうしよう、2週間前にこの音量検出機能がパスして、それ以降、何も変化しない!!!!

古参になる。このような評価、アバターの下の数字、そして問題を抱えているのに、なぜかそれが議論されたトピックを見ませんでした。そして、そこに解決策が見出されたのです。

Автоматический валидатор - проблемы
Автоматический валидатор - проблемы
  • 2019.04.26
  • www.mql5.com
Пытаюсь обновить версию советника и получаю ошибку. Тот же советник в тестере стратегий. Паралельно пишу советники и для MT4, там все ОК...
 
Alexey Viktorov:

古参になる。このような評価、アバターの下の数字、そして問題を抱えているのに、なぜかそれが議論されたトピックを見ませんでした。そして、そこに解決策が見出されたのです。

ロシアの人々の中には、異教徒の神々に祈る者、そして、それに答える者がいる。
 
Evgeniy Scherbina:
ロシアの人々の中には、異教徒の神々に祈る者、そして、それに答える者がいる。

と答えましたが、私は異教徒の神ではありません。これは一時的な解決策だと思います。早く直ることを祈っています。

 
注 - このコメントは、次に「取引操作がありません」というエラーを探すときのためというより、自分のためでしょう。
怪しげな場所でForceStopを 使用。さらに、レポートにはゼロ除算と表示され、このエラーの正確な位置が表示されます。
私の場合の例
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
int ForceStop=0;
int sstop=0;
bool CheckVolumeValue(double volume,string &description)
  {
  
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {     
      description=StringFormat("Volume is less than the minimum allowable SYMBOL_VOLUME_MIN=%.2f",min_volume);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Volume is greater than the maximum allowable SYMBOL_VOLUME_MAX=%.2f",max_volume);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }

//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("The volume is not a multiple of the minimum gradation SYMBOL_VOLUME_STEP=%.2f, Closest correct volume %.2f",
                               volume_step,ratio*volume_step);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }
   description="Correct value of volume";
   return(true);
  }
 

ブロ、すべての変数をコードヘッダに移動させたのは助かりました。

void OnDeinit

{
Alert(GetLastError())。

}

そして、ResetLastError() の init で。

何が効いたのかわかりませんが、こんな感じです。

 

コードの数行を変更(編集)するだけで良いので助かっています。
または、空行を追加して、再度コンパイルし直すだけです。

サーバーに何らかのバグがあるのだと思います。

 
Taras Slobodyanik:

または、空行を追加して、再度コンパイルし直すだけです。

確認しました、再コンパイルするだけで動くこともあります。

 
Nauris Zukas:

確認済み、再コンパイルするだけで通ることもあります。

再コンパイルしたからではなく、テストの開始日が違うからです。そして、このようなバグに気づいたのですが、すでにあるものを滑らせると、テストが行われず、すぐに前回のテスト結果が出ます。だから、そんなまやかしに騙されないでください。普通にしてみてください。もし、何かが欠けていたり、パラメータが無効な場合は、Printで 報告していただければ、すべて正しくなります。