為什麼這會陷入循環?
1 頁面的第 562 頁 12 上一個上一個
Results 1 to 10 of 12

Thread: 為什麼這會陷入循環?

  1. #1
    此循環中的OrderModify失敗,帶有ERR_NO_RESULT。但我不能突破while循環。它只是無限循環。

    任何人都可以幫我解決這個問題嗎?

    TIA! (提前致謝)。

    插入的代碼void ModifyThisOrder(int Ticket,double Price,double StopLoss,double TakeProfit,int MaxTry){string Commentary =; int TryCount = 0; bool OrderLoop = false;顏色OrderColor =黑色; if(OrderType()== OP_BUY){OrderColor = Blue;} if(OrderType()== OP_SELL){OrderColor = Red;} while(!OrderLoop){RefreshRates(); while(IsTradeContextBusy()){Sleep(10); } if(OrderSelect(Ticket,SELECT_BY_TICKET)){OrderModify(Ticket,OrderOpenPrice(),StopLoss,TakeProfit,0,OrderColor); } int Err = GetLastError(); switch(Err){//----成功案例ERR_NO_ERROR:{OrderLoop = true; break;}/重試錯誤情況ERR_INVALID_STOPS:{打印(無效停止); Sleep(1000);} case ERR_SERVER_BUSY:{Print(Server Busy);睡眠(1000);}情況ERR_NO_CONNECTION:{打印(無連接);睡眠(1000);}案例ERR_INVALID_PRICE:{打印(無效價格); Sleep(1000);} case ERR_OFF_QUOTES:case ERR_BROKER_BUSY:Sleep(1000); case ERR_TRADE_CONTEXT_BUSY:{TryCount ; break;} case ERR_PRICE_CHANGED:case ERR_REQUOTE:continue;/----致命的已知錯誤情況ERR_INVALID_TRADE_VOLUME:{OrderLoop = true;打印(評論 無效批次); break;} case ERR_MARKET_CLOSED:{OrderLoop = true;打印(評論 市場收盤); break;} case ERR_TRADE_DISABLED:{OrderLoop = true;打印(評論 交易已禁用); break;} case ERR_NOT_ENOUGH_MONEY:{OrderLoop = true;打印(評論 沒有足夠的錢); break;} case ERR_TRADE_TOO_MANY_ORDERS:{OrderLoop = true;打印(評論 太多訂單);案例149:{OrderLoop = true;打印(禁止評論 對沖); break;}/----致命未知錯誤案例ERR_NO_RESULT:{OrderLoop = true;打印(評論 沒有結果); break;} default:{OrderLoop = true;打印(未知錯誤 - 錯誤); break;}/----}/end switch if(TryCount gt; MaxTry){OrderLoop = true;返回時返回(0); }

  2. #2

    Quote Originally Posted by ;
    是的,他們都是第一個,但不是第二個。
    但我不打算在循環中將它們放在tradecontext中。只是Orderloop而。

  3. #3

    Quote Originally Posted by ;
    此循環中的OrderModify與ERR_NO_RESULT失敗。但我不能突破while循環。它只是無限循環。 [code] void ModifyThisOrder(int Ticket,double Price,double StopLoss,double TakeProfit,int MaxTry){bool OrderLoop = false;顏色OrderColor =黑色; if(OrderType()== OP_BUY){OrderColor = Blue;} if(OrderType()== OP_SELL){OrderColor = Red;} while(!OrderLoop){RefreshRates(); while(IsTradeContextBusy()){Sleep(10); } ...
    嘗試使用if條件而不是while循環來測試IsTradeContextBusy()。為什麼它必須是一個while循環?

  4. #4

    Quote Originally Posted by ;
    嘗試使用if條件而不是while循環來測試IsTradeContextBusy()。為什麼它必須是一個while循環?
    因為我想在某些錯誤上再次嘗試X次。

  5. #5

    Quote Originally Posted by ;
    因為我想在某些錯誤上再次嘗試X次。
    那麼,你試圖捕獲的所有錯誤都不應該包含在while循環中嗎?

  6. #6

    Quote Originally Posted by ;
    那麼,你試圖捕獲的所有錯誤都不應該包含在while循環中嗎?
    它們都在while循環中。

  7. #7

    Quote Originally Posted by ;
    它們都在while循環中。
    是的,他們都是第一個,但不是第二個。

  8. #8

    Quote Originally Posted by ;
    但我不打算在循環中將它們放在tradecontext中。只是Orderloop而。
    你確定這是IsTradeContextBusy()的正確用法嗎?
    http://forum.mql4.com/48326

  9. #9

    Quote Originally Posted by ;
    你確定這是IsTradeContextBusy()的正確用法嗎?
    是的。

  10. #10
    更改了代碼並將return(0)放入其中並且它仍然循環! Inserted Code int ModifyThisOrder(int Ticket,double Price,double StopLoss,double TakeProfit,int MaxTry){string Commentary =; int TryCount = 0; bool OrderLoop = false;顏色OrderColor =黑色; if(OrderType()== OP_BUY){OrderColor = Blue;} if(OrderType()== OP_SELL){OrderColor = Red;} while(OrderLoop == false){while(IsTradeContextBusy()){Sleep(10); } RefreshRates(); if(OrderSelect(Ticket,SELECT_BY_TICKET)){OrderModify(Ticket,OrderOpenPrice(),StopLoss,TakeProfit,0,OrderColor); } int Err = GetLastError(); switch(Err){//----成功案例ERR_NO_ERROR:{OrderLoop = true; break;}/重試錯誤情況ERR_INVALID_STOPS:{打印(無效停止); Sleep(1000);} case ERR_SERVER_BUSY:{Print(Server Busy);睡眠(1000);}情況ERR_NO_CONNECTION:{打印(無連接);睡眠(1000);}案例ERR_INVALID_PRICE:{打印(無效價格); Sleep(1000);} case ERR_OFF_QUOTES:case ERR_BROKER_BUSY:{Sleep(1000);} case ERR_TRADE_CONTEXT_BUSY:{TryCount ; break;} case ERR_PRICE_CHANGED:case ERR_REQUOTE:{continue;}/----致命的已知錯誤情況ERR_INVALID_TRADE_VOLUME:{Print(Commentary Invalid Lots); return(0);} case ERR_MARKET_CLOSED:{Print(評論 市場關閉); return(0);} case ERR_TRADE_DISABLED:{Print(Commentary Trades Disabled); return(0);} case ERR_NOT_ENOUGH_MONEY:{Print(Commentary Not Enough Money); return(0);} case ERR_TRADE_TOO_MANY_ORDERS:{Print(評論 太多訂單);返回(0);}案例149:{打印(評論 禁止對沖); return(0);}/----致命未知錯誤案例ERR_NO_RESULT:{Print(評論 無結果); return(0);}默認值:{Print(未知錯誤 - Err); return(0);}/----}/end switch if(TryCount gt; MaxTry){OrderLoop = true;返回時返回(0); }

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。