2016-09-07 17 views
0

LIは、MQL4エキスパートアドバイザーからhttpリクエストを送信し、私の個人的なEAロジックのためにそれを修正したコードを発見しました。MQL4 Expert Adviser経由でHTTPリクエストを送信するにはどうすればよいですか?

技術的には機能しますが、大きな問題があります。毎週ティックごとにリクエストを送信します。私はそれを変更する必要があります - 各信号ごとに1つの要求。

私はそれを解決するために手伝ってください!

コード例:取引について

#import "shell32.dll" // -------------------------------<BegOfImport>-section 

int ShellExecuteW(int hwnd, 
        string lpOperation, 
        string lpFile, 
        string lpParameters, 
        string lpDirectory, 
        int nShowCmd 
        ); 

#import // "shell32.dll" // -------------------------------<EndOfImport>-section 


if ( A > B 
    && 1 > OrdersTotal() 
    ) 
{ 
    if ( OrderSend(Symbol(), OP_SELL, 1, Bid, 10, 0, 0, 0, 0, 0, clrGreen) 
     ) 
     OrderSelect(0, SELECT_BY_POS, NULL); 
    ShellExecuteW(0, "open", linkS, "", "", 1); 
    } 

答えて

0

そして、どのように?

EAはすべてのティックで取引要求を送信していますか?

現在は(など無効/取引を閉じ保証されていない、すなわちrequoteまたはすべりまたは市場)貿易を送信しようとし

あなたはそれぞれの新しい信号に必要がある場合 - 多分あなたは、それぞれにチェックする必要があると思います新しいバー、またはメモリ内の最近の取引方向やメモリ内の信号の最近の時間を維持することができます。このような場合に

void OnTick(){ 
    if ( A > B && OrdersTotal() < 1){ 
     int ticket = OrderSend(Symbol(),OP_SELL,1,Bid,10,0,0,0,0,0,clrGreen); 
     if ( ticket > 0){ // this means ticket is opened successfully, OrdersTotal = 1 
       if ( OrderSelect(0, SELECT_BY_POS)) { } // for what??? 
     ShellExecuteW(0, "open", linkS, "", "", 1); 
     } 
    } 
} 

ticketが開かれている場合、次いでShellExecute()は、他のケースでは、と呼ばれている - ありません。

理由がわからないOrderSelect()ticket、多分stoplossesです。

それは

int ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 10, 0, 0, 0, 0, 0, clrGreen); 
if ( ticket > 0){ 

}else{ 
    int error = GetLastError(); 
    Print(" failed to send. error#", error); 
} 
である場合には拒否された理由をとにかくあなたも見つける必要があります
関連する問題