エラー4756 - ページ 2

 
angevoyageur:
注文の送信や変更にどのような関数、クラス、メソッドを使用していますか?
MqlTradeRequestを セットアップした後のOrderSend()
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
RaptorUK:
MqlTradeRequest をセットアップした後の OrderSend()

これ(OrderSend doc)を見ましたか?

成行注文の場合、OrderSend()メソッドの操作が正常に終了しても、取引が正常に終了するとは限らないことに注意する必要があります。 取引サーバーのリターンコードを 含むretcode 値、および 返された 結果の 操作の種類に 応じたdeal または order フィールドの 値を確認して ください


それは コードを 見る ことで 助けることは容易あろう

 
angevoyageur:

これは(OrderSendのドキュメントから)ご覧になりましたか?


それは コードを見て 助けることは容易 あろう

返された結果をチェックし、TRADE_RETCODE_PLACEDまたはTRADE_RETCODE_DONEが返された場合のみSLとTPを配置しようとします。

         if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
            {
            SetTPandSL = false;
            Print("Return code # ", result.retcode, " Bid ", result.bid, " Ask ", result.ask, " Deal price ", result.price);
            }
         else SetTPandSL = true;

         if(SetTPandSL && ECN)
            {
            // now modify Position to add SL & TP
            ZeroMemory(request);
            ZeroMemory(result);
            request.action = TRADE_ACTION_SLTP;                   // setting the TP & SL
            request.symbol = _Symbol;                             // symbol
            request.sl = lastTick.ask - SL_Size * _Point;        // Stop Loss
            request.tp = lastTick.ask + TP_Size * _Point;        // Take Profit  
            
            //--- send a trade request
            OrderSend(request,result);
            
            //--- write the server reply to log  
            Print(__FUNCTION__,": Placeing SL & TP ",result.comment, " Return code # ", result.retcode);  
            if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
               Print("Return code # ", result.retcode, " Bid ", lastTick.bid, " Ask ", lastTick.ask, " Deal price ", 
                  result.price, " SL: ", request.sl, " TP: ", request.tp, " Freeze: ", Freeze, " Stoplevel: ", Stop );
            }
 
RaptorUK:

返された結果をチェックし、TRADE_RETCODE_PLACEDまたはTRADE_RETCODE_DONEが返された場合のみSLとTPを配置しようとします。


成行注文の場合、OrderSend()メソッドの操作が成功しても、必ずしも取引完了とは限らないことに注意する必要があります。 取引サーバーのリターンコードを 含むretcode 値と 返された 結果の 操作の種類に 応じたdeal または order フィールドの 値を確認して ください

取引チケットの番号を確認する必要があります。

  if( (result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE) || result.deal == 0) 

これは最後の言葉ではありませんが、もしディールチケットが0であれば、SL/TPの変更はいずれにせよ実行されません。まだ検索中です...


 
angevoyageur:

ディールチケット番号を確認する必要があります。

これは最後の言葉ではありませんが、もしディールチケットが0であれば、SL/TPの変更はいずれにせよ実行されません。まだ検索中・・・。

それはできるのですが、問題は、取引が成功して、ポジションが開かれたのに、SLとTPを追加しようとすると、それらが無効でないにもかかわらず、Invalid Stopsで 失敗することです。 TPとSLを設定するリクエストを送る前に、何かが起こるのを待たなければならないようですが ... 私が待つべき、公式で文書化したものが何かよく分からないのですが、それは何ですか?

返信ありがとうございます :-)

 
RaptorUK:

私はそれを行うことができますが、問題は、取引が成功し、ポジションが開かれたことです。 TPとSLを設定するリクエストを送信する前に、何かが起こるのを待たなければならないようですが、私は、私が待つべき正式な、文書化されたものが何であるかをよく知りません。

返信ありがとうございます :-)

私は知っています。私は応答を見つけるためにすべてのmql5サイトをチェックして います:-D

編集しています。

このサイトでは市場の 取引実行タイプで SL / TPを 配置する方法を 示す ものは 全くありません

実は私も同じ問題を抱えているのですが、OrderSendの代わりにPositionOpenを使って、手動で行うこともできます。

 
angevoyageur:

知っています。私はすべてのmql5サイトをチェックして、応答を見つけるために:-D。

編集する

このサイトには 取引執行型がmarketの sl / tpの 入れ 方を 示す ものは 全くありません

実は私も同じ問題を抱えていますが、OrderSendの代わりにPositionOpenを使って、手動で行うことも可能です。

私は発見しました。それはEAとトレードサーバーの同期の問題です。イベントハンドラOnTradeTransaction()を使用する必要があります。

OrderSend() 関数で送られたサーバー上の取引要求の実行結果は、OnTradeTransaction ハンドラで追跡することができます。OnTradeTransaction ハンドラは、1 つの取引要求を実行する際に複数回呼び出されることに注意する必要があります。

例えば、成行買い注文を送信すると、それが処理され、適切な買い注文が口座に作成され、その注文が執行されて未決済のものリストから削除され、注文履歴に追加され、適切な取引が履歴に追加され、新しいポジションが作成されるのです。 OnTradeTransaction関数は、これらのイベントのそれぞれについて呼び出されます。

RTFM ;-)試してみてください...私は明日にします。
 
angevoyageur:

発見しました。EAとトレードサーバ間の同期の問題です。イベントハンドラOnTradeTransaction()を使用する必要があります。

RTFM ;-)試してみてください...私は明日にします。
ああ、ありがとう、見てみるよ。)
 
RaptorUK:
ああ、ありがとうございます、見てみます。)
これはあなたが見つけたスレッドでしたか?https://www.mql5.com/en/forum/10850 それは私が持っているのと同じ問題を報告します。
 

私のEAはビルド778で奇妙なエラーを起こしています。0.1のボリュームは正規化されており、明らかに無効ではありません。

2013.03.12 07:29:57 pivots (SILVER,M5) SILVER failedORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 チェックコード:10014 コメント無効なボリューム

2013.03.12 07:20:00 pivots (SILVER,M5) SILVER failed ORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 returned code:10014、ブローカー・コメント無効な取引量

以下は、それを表示するコードです。

      ResetLastError();
      if(OrderCheck(_request,_check)){
         if(!OrderSend(_request,_result)){
            Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);
            return(false);}
         else{
            if(_result.retcode!=(0||TRADE_RETCODE_PLACED||TRADE_RETCODE_DONE)){
               Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);}}}
      else{
         Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," check code: ",_check.retcode," comments: ",_check.comment);
         return(false); }


Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5