マーケットでのEA検証の問題点 - ページ 7

 
Sergey Gritsay:

すべてこんにちは!誰が$ 1のバランスでチェックをバイパスすることができた、私は私のコードで持っている十分なお金の貿易業務が 実行されていない場合はチェックされます。その結果、次のような検証ログが得られました。

test on EURUSD,H1
there are no trading operations
test on NZDUSD,H1
there are no trading operations
test on GBPUSDcheck,M30
there are no trading operations
test on XAUUSDcheck,Daily
there are no trading operations


初期化時に残高を確認し、最小ロットの必要証拠金を確認し、資金が足りない場合はExpert Advisorを起動しなければいいのでは?
 
Alexey Kozitsyn:
初期設定の段階で、残高を確認し、最小ロットの必要証拠金を確認し、足りない場合はExpert Advisorを起動しないようにしたらどうでしょうか。
試してみたが、効果がない
 
Sergey Gritsay:
試してみたが、効果がない

興味深いのは、実は、初期化段階での出力は、入力パラメータ(この場合、バランスも含む)を意味するということです...

この場合、Expert Advisorはエラーを出すのでしょうか?それとも、黙って「出発」するのでしょうか?

 
Alexey Kozitsyn:

興味深いのは、実は、初期化段階での出力は、入力パラメータ(この場合、バランスも含む)を意味するということです...

この場合、Expert Advisorはエラーを出すのでしょうか?それとも、黙って「出発」するのでしょうか?

次のコードを追加しています。

   if(IsTesting())
     {
     if(AccountFreeMarginCheck(_Symbol,OP_BUY,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN))<=0.0)
     {
      return(INIT_PARAMETERS_INCORRECT);
     }

このような回答が返ってきました。

test on EURUSD,H1
there are no trading operations
test on NZDUSD,H1
2016.02.01 00:00  exp_martin_new NZDUSD,H1: initialization failed (32767)
there are no trading operations


バリデーションに再度失敗しました。

 
Sergey Gritsay:

私はこのコードを追加します。

MT5?どうやらMT4のようです。また、なぜテスターでチェックするだけなのでしょうか?
 

実は、こんな記事も あるんです。そして、コードもある。

bool CheckMoneyForTrade(string symb, double lots,int type)
  {
   double free_margin=AccountFreeMarginCheck(symb,type,lots);
   //-- если денег не хватает
   if(free_margin<0)
     {
      string oper=(type==OP_BUY)? "Buy":"Sell";
      Print("Not enough money for ", oper," ",lots, " ", symb, " Error code=",GetLastError());
      return(false);
     }
   //-- проверка прошла успешно
   return(true);
  }

だから、もし何か気に入らないことがあったら、この記事にリンクを貼ってください。

 
Alexey Kozitsyn:
MT5?どうやらMT4のようです。なぜテスターでチェックするだけなのか?
テスターではどういうことですか?取引時、注文開始機能でチェックを編成しています。
 
Sergey Gritsay:
テスターではどういうことですか?取引時、注文開始機能でチェックを整理しています。
if(IsTesting())
では、この条件は何のためにあるのか、よくわからないのですが?
 
Alexey Kozitsyn:

実は、こんな記事も あるんです。そして、コードもある。

bool CheckMoneyForTrade(string symb, double lots,int type)
  {
   double free_margin=AccountFreeMarginCheck(symb,type,lots);
   //-- если денег не хватает
   if(free_margin<0)
     {
      string oper=(type==OP_BUY)? "Buy":"Sell";
      Print("Not enough money for ", oper," ",lots, " ", symb, " Error code=",GetLastError());
      return(false);
     }
   //-- проверка прошла успешно
   return(true);
  }

だから、もし何か気に入らないことがあったら、この記事にリンクを貼ってください。

この関数を使用すると、検証エラーが発生します
 
Sergey Gritsay:
この関数を使用すると検証エラーが発生し、取引操作が できないため、回避する方法は不明です。
マーケットプレイスモデレーターに質問する...