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

 
Vladimir Karputov:

ヌフフ :)

OKです。私たちを啓発してください。コードのどのようなエラー、またはどのようなコードが、他の機器の価格でテスターのポジションを閉じる ことができます。本当に、本当に興味があります。

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Aleksey Sergan:

コードは数千行に及びます。追加する意味がない。静的変数がない。クラスがあります。いずれにせよテスターのミスである。

そこにあなたの間違いがある。

デバッグモードでは、取引注文を 送信する前にチェックを実行します。シンボルマークと価格をご覧ください。そして、少なくとも "All ticks "モードでテストしてください。

 
Andrey Barinov:

OKです。私たちを啓発してください。コードのどのようなエラーで、あるいはどのようなコードで、他の機器の価格でテスターのポジションをクローズ することができるのでしょうか。本当に、本当に気になります。

簡単に。それは、コードの奴隷根性に直接依存します。自分でやったんですよ :)文字クラスの初期化制御の仕組みが貧弱。それに加えて、静的変数もあります。

とにかく、質問者が書いたコードがないと、これ以上話しても意味がないのです。

 
Vladimir Karputov:

簡単に。コードの曲率に直結しているのです。自分もやったことがありますよ :)文字クラスの初期化制御が不十分である。そしてさらに、静的変数があります。

だから、コードのことを聞かずにこれ以上話しても意味がないんです。

コードの例を示してもらえますか?EURUSDのポジションを GPBUSDの価格で決済するにはどうすればよいですか?

そうであれば、問題ないでしょう。とてもありがたいことです。

 
Andrey Barinov:

コードの例を示してもらえますか?EURUSDのポジションを GPBUSDの価格で決済 するにはどうすればよいですか?

もしそうなら、何の問題もないでしょう。とてもありがたいことです。

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

バグ、バグ、質問

ウラジミール・カルプトフ, 2019.03.24 05:58

簡単なことです。コード曲率の依存性。私自身もそのような失敗をしました :) 。文字クラスの初期化制御の仕組みが十分でない。そして、プラス静的変数。

とにかく、質問者が書いたコードがないと、これ以上話しても意味がないのです。


 
それくらいテスターのグラは、もうトレイリングピップがない、かっこいい)
 

デバッグ、ビジュアライゼーションモードでは、エラーは発生しません。ポジションは取引注文ではなく、ストップロスで決済されます。



デバッグモードではエラーはありません。



という注文のストップを1.60704(現在のポジションの価格から3000ピップ上)に設定することに成功しました。

この場合、テスターは停止設定を禁止していたはずです。

 

ここで、ログを見ているところです。

ストップを変更する命令は、ハイライトされている行のgpbusdに対して送信されますが、実際には次のeurusd-に対して実行されます。


以下は、ストップを設定するコードです。


bool MyOrderSend( MqlTradeRequest &req, MqlTradeResult &res ){

  
  //Print("Попытка выполнения OrderSend ... ");
  Print("Try to execute OrderSend ... for ", req.symbol );
  ResetLastError();
  if (OrderSend( req, res  )){
    if( res.retcode != TRADE_RETCODE_DONE ){
      //Print("Ошибка обработки торгового запроса,код ответа сервера: ", res.retcode, "Описание:", TradeServerReturnCodeDescription(res.retcode) );
      Print("Error of trade requaest: ", res.retcode, "Description:", TradeServerReturnCodeDescription(res.retcode) );
      Print(STradeRequest(req) );
      return(false);
    }else{
      //Print("Успех, код ответа сервера: ", IntegerToString(res.retcode), " Описание:",  TradeServerReturnCodeDescription(res.retcode)  );
      Print("Success, return code is : ", IntegerToString(res.retcode), " Description:",  TradeServerReturnCodeDescription(res.retcode)  );
      Print(STradeRequest(req) );
    }
    return(true);
  }else{
    //Print("Ошибка выполнения OrderSend в ", __FUNCTION__, " _LastError=", _LastError, " ",  ErrorDescription(_LastError) );
    Print("Error of execution OrderSend in ", __FUNCTION__, " _LastError=", _LastError, " ",  ErrorDescription(_LastError) );
    //Print("Код ответа сервера: ", IntegerToString(res.retcode), " Описание:",  TradeServerReturnCodeDescription(res.retcode)  );
    Print("Server return code : ", IntegerToString(res.retcode), " Description:",  TradeServerReturnCodeDescription(res.retcode)  );
    Print(STradeRequest(req) ); 
    return(false);
  }
  return(true);
}


どこ


OrderSend( req, res  )

mql のネイティブ関数で、オーバーロードされていません。

すなわち

 Print("Try to execute OrderSend ... for ", req.symbol );


gbpusdにストップを設定すると書いてあり、そうあるべきですが、実際には


OrderSend( req, res  )


ユーロスドに設定する

 
Aleksey Sergan:

ここで、ログを見ているところです。

ストップを変更する命令は、ハイライトされた行であるgpbusdに対して送信されますが、実際には次の行であるeurusdに対して実行されます。

が2つあります。

№1.あなたのミスです。コードのどこかにGBPUSDの価格を使ってEURUSDのポジションにSLを設定します。端末は何も抵抗がないはずです。

№2.端末のバグこのSLがEURUSDの流れの中で、GBPUSDの価格を使って、当時存在しなかった価格でトリガーされた場合。

 
Aleksey Sergan:

ここで、ログを見ているところです。

ストップを変更する命令は、ハイライトされている行のgpbusdに対して送信されますが、実際には次のeurusd-に対して実行されます。


以下は、ストップを設定するコードです。



どこ


mql のネイティブ関数で、オーバーロードされていません。

https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

どうやら修正要求を送るときは、位置フィールドがシンボルよりも優先されるようです。req.positionを 印刷する

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...