2

Order を変更しようとしていますが、常にError #1.

私の調査から、エラー 1 は入力パラメータが間違っていることを意味することがわかりました。機能を修正するにはどうすればよいOrderModify()ですか?

    stoploss = NormalizeDouble(Ask - Point * TrailingStop,Digits);
    int ticket;
    takeprofit = NormalizeDouble(Ask + Point * TrailingStopTP,Digits);
    double minstoplevel = MarketInfo( Symbol(), MODE_STOPLEVEL );
    if(stoploss > NormalizeDouble(Ask - Point*minstoplevel,Digits)) {
        stoploss = NormalizeDouble(Ask - Point*minstoplevel,Digits);
    }
    if(takeprofit < NormalizeDouble( Ask + Point*minstoplevel2, Digits )) {
        takeprofit = NormalizeDouble( Ask + Point*minstoplevel2, Digits );
    }
    if(AccountFreeMarginCheck(Symbol(),OP_SELL,lotsize)>0) {
        ticket=OrderSend(Symbol(),OP_BUY,lotsize,Ask, 0, 0.0, 0.0, "comment", MagicNumber, 0, Lime);
        if(ticket<0) {
            Print("Order send failed with error #",GetLastError());       
        } else {
            Print("Order send sucesso!! Ticket#", ticket);
            res=OrderModify(ticket,OrderOpenPrice(),stoploss,takeprofit,0,Blue);
            if(res==false) {
                Print("Error modifying order!, error#",GetLastError());
            } else {
                Print("Order modified successfully, res#", res);
            }            
        }
    } else {
        Print("Sem dinheiro na conta D=");
    }
 }
4

2 に答える 2

4

正確には「間違っている」わけではなく、OrderModify()合法的に設定されています_LastError == 1

少し驚くかもしれませんが、呼び出しが構文的にも意味的にも正しい場合に備えOrderModify()て通知する義務が_LastError == 1ありますが、変更のために提供された値は実際にはまったく同じであり、識別されたものticket#はすでにデータベースにありました。

これは、すべての属性がすでに「新規」のターゲット値を持っているため、変更する必要がないことを意味します。

すべてのフィールドを潜在的な ID について事前にチェックすることができますOrderModify()。ターゲット}値。

ERR_NO_RESULT == 1               // No error returned, but the result is unknown

GetLastError()- 最後に生成されたエラー コードを返します。という名前のシステム変数を介して同じ値を使用できます_LastError。この値は、重要なアクティビティの前に を呼び出すことでゼロにリセットできますResetLastError()

エラー コードは で定義されていstderror.mqhます。

エラーの説明を出力するには、ファイルErrorDescription()で定義された関数を使用できますstdlib.mqh

#include <stderror.mqh>
#include <stdlib.mqh>
于 2015-10-05T11:35:20.090 に答える