市場:取引業務なし

 

なぜマーケットがこのようなエラーを返すのか、どなたか説明してください。EAのチェックは 万全に...。

もちろん、トレードがない、という要旨は理解していますが、その理由は何でしょうか?

Ограничения и проверки в экспертах
Ограничения и проверки в экспертах
  • www.mql5.com
При создании алгоритма для автоматической торговли необходимо не только уметь обрабатывать цены с целью выработки торговых сигналов, но и зачастую требуется получать множество вспомогательной информации об ограничениях, накладываемых на работу эксперта.  В этой статье будет рассказано о том как: получить информацию о торговых сессиях...
 
  • 例:設定での取引ロット=0、ロット=0のためEAが取引できない。
  • Expert Advisorのスプレッドに制限があり、ポジションをオープンしない。
  • テスト期間中は本当にポジションを 開くためのシグナルがありません。

そして、あなただけが見るチェックは、あなたのコードは添付されていません。

何千もの例がある...。

 
Vladislav Andruschenko:
  • 例:設定での取引ロット=0、ロット=0のためEAが取引できない。
  • Expert Advisorのスプレッドに制限があり、ポジションをオープンしない。
  • テスト期間中は本当にポジションを 開くためのシグナルがありません。

そして、あなただけが見るチェックは、あなたのコードは添付されていません。

何千もの例がある...。

ロット検証もあり、シグナルも確実にあり、ネットマインダで、スプレッド制限もなく・・・。
 
Vladislav Andruschenko:
  • 例:設定での取引ロット=0、ロット=0なのでEAは取引を開始できない。
  • Expert Advisorのスプレッドに制限があり、ポジションをオープンしない。
  • テスト期間中は本当にポジションを 開くためのシグナルがありません。

そして、あなただけが見るチェックは、あなたのコードは添付されていません。

何千もの例がある...。

ロットが正しいかどうかのチェックはあるし、信号は確実にある。何もわからない...。
 
Maksim Neimerik:
ロット検証もあり、シグナルも確実にあり、ネットマインダであり、スプレッド制限もない...。

それなら、選択肢は100500通り以上ありますね。

ネトゲは静かにマーケットテストを通過している。

 
Vladislav Andruschenko:

それなら、選択肢は100500通り以上ありますね。

ネトゲは静かにマーケットテストを通過している。

同意だが、なぜかこれはない:)
 
Maksim Neimerik:
私もそう思いますが、なぜかこれはダメです:)


ここでは、マーケットプレイスからのボットについて議論することは禁じられています。そして、それを公開することはないでしょう。そして、そのような名前のトピックは、その理由と同様に、すでに100500件もあります。

 
Maksim Neimerik:

なぜマーケットがこのようなエラーを返すのか、どなたか説明してください。EAのチェックは 万全に...。

もちろん、トレードをしない、という主旨は理解していますが、どういう理由で?

サイト内検索を使って、100500のブランチコピーを作成するのは、そんなに難しいことなのでしょうか!

https://www.mql5.com/ru/search#!keyword=no%20trading%20operations&method=2&module=mql5_module_forum

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

ただ、コードについて議論したい。

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }

   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
   {
      Print("Wrong lot size");
      return(min_volume);
   }
     
   if(volume<MarketInfo(Symbol(),MODE_MINLOT))
   {
      Print("Trade stop invalid lot size");
      Comment("Trade stop invalid lot size"); 
      return(MarketInfo(Symbol(),MODE_MINLOT));
   }
   return(volume);
}

標準のチェックをいじって、エラーではなく正しいロットを返すようにしたのですが...。

ここでは、この機能を呼び出します。

   if(!OrderSend(Symbol(),cmd,CheckVolumeValue(Lot),NormalizeDouble(priceStep,Digits()),Slippage,0,0,"",magic,0))

私のテスターと実際のアカウントでこのロボットは問題なく動作しています!間違ったロットを入力しても、正しいロットを返し、さらに動作...

そして、4051のエラーはどこで返ってくるかわかりますよね!?これは一般的な話ですが......!

 
Maksim Neimerik:

ただ、コードについて議論したい。

標準のチェックをいじって、エラーではなく正しいロットを返すようにしたのですが...。

ここでは、この機能を呼び出します。

私のテスターと実際のアカウントでこのロボットは問題なく動作しています!間違ったロットを入力しても、正しいロットを返し、さらに動作...

そして、4051のエラーはどこで返ってくるかわかりますよね!?これは一般的な話ですが......!

ロットは正常化されていないのでしょうか?
 
Maksim Neimerik:

ただ、コードについて議論したい。

標準のチェックをいじって、エラーではなく正しいロットを返すようにしたのですが...。

ここでは、この機能を呼び出します。

私のテスターと実際のアカウントでこのロボットは問題なく動作しています!間違ったロットを入力しても、正しいロットを返し、さらに動作...

そして、4051のエラーはどこで返ってくるかわかりますよね!?これは一般的な話ですが......!

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }

   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
   {
      Print("Wrong lot size");
      return(min_volume);
   }
     
   if(volume<MarketInfo(Symbol(),MODE_MINLOT))
   {
      Print("Trade stop invalid lot size");
      Comment("Trade stop invalid lot size"); 
      return(MarketInfo(Symbol(),MODE_MINLOT));
   }
   return(volume);
}
そして、このような事態になることはないだろう
理由: