Tại sao điều này bị mắc kẹt trong một vòng lặp?
Trang 1 trên 622 12 CuốiCuối
Results 1 to 10 of 12

Thread: Tại sao điều này bị mắc kẹt trong một vòng lặp?

  1. #1
    OrderModify trong vòng lặp này không thành công wERR_NO_RESULT. Nhưng tôi không thể thoát ra khỏi vòng lặp while. Nó chỉ lặp đi lặp lại vô thời hạn.

    Có ai có thể giúp tôi tìm hiểu thứ này không?

    TIA! (Cảm ơn trước).

    Mã đã chèn void Modify ThisOrder (int Ticket, double Price, double StopLoss, double TakeProfit, int MaxTry) {string Commentary =; int TryCount = 0; bool OrderLoop = false; màu OrderColor = Đen; if (OrderType () == OP_BUY) {OrderColor = Blue;} if (OrderType () == OP_SELL) {OrderColor = Red;} while (! OrderLoop) {RefreshRates (); while (IsTradeContextBusy ()) {Ngủ (10); } if (OrderSelect (Ticket, SELECT_BY_TICKET)) {OrderModify (Ticket, OrderOpenprice (), StopLoss, TakeProfit, 0, OrderColor); } int Err = GetLastError (); switch (Err) {//---- Trường hợp thành công ERR_NO_ERROR: {OrderLoop = true; break;}/---- Thử lại trường hợp lỗi ERR_INVALID_STOPS: {In (Dừng không hợp lệ); Ngủ (1000);} trường hợp ERR_SERVER_BUSY: {In (Máy chủ bận); Ngủ (1000);} trường hợp ERR_NO_CONNECTION: {In (Không có kết nối); Ngủ (1000);} trường hợp ERR_INVALID_PRICE: {In (Giá không hợp lệ); Ngủ (1000);} trường hợp ERR_OFF_QUOTES: trường hợp ERR_BROKER_BUSY: Ngủ (1000); trường hợp ERR_TRADE_CONTEXT_BUSY: {TryCount ; phá vỡ;} trường hợp ERR_PRICE_CHANGED: trường hợp ERR_REQUOTE: tiếp tục;/---- Trường hợp lỗi nghiêm trọng đã biết ERR_INVALID_TRADE_VOLUME: {OrderLoop = true; In (Bình luận Rất nhiều không hợp lệ); phá vỡ;} trường hợp ERR_MARKET_CLposed: {OrderLoop = true; In (Bình luận Đóng thị trường); phá vỡ;} trường hợp ERR_TRADE_DISABLED: {OrderLoop = true; In (Bình luận Giao dịch bị vô hiệu hóa); phá vỡ;} trường hợp ERR_NOT_ENOUGH_MONEY: {OrderLoop = true; In (Bình luận Không đủ tiền); phá vỡ;} trường hợp ERR_TRADE_TOO_MANY_ORDERS: {OrderLoop = true; In (Bình luận Quá nhiều đơn hàng); phá vỡ;} trường hợp 149: {OrderLoop = true; In (Bình luận Hàng rào bị cấm); break;}/---- Trường hợp lỗi không xác định nghiêm trọng ERR_NO_RESULT: {OrderLoop = true; In (Bình luận Không có kết quả); phá vỡ;} mặc định: {OrderLoop = true; In (Lỗi không xác định - Err); phá vỡ }}/kết thúc trong khi return (0); }

  2. #2

    Quote Originally Posted by ;
    OrderModify trong vòng lặp này thất bại wERR_NO_RESULT. Nhưng tôi không thể thoát ra khỏi vòng lặp while. Nó chỉ lặp đi lặp lại vô định. [code] void Modify ThisOrder (int Ticket, double Price, double StopLoss, double TakeProfit, int MaxTry) {bool OrderLoop = false; màu OrderColor = Đen; if (OrderType () == OP_BUY) {OrderColor = Blue;} if (OrderType () == OP_SELL) {OrderColor = Red;} while (! OrderLoop) {RefreshRates (); while (IsTradeContextBusy ()) {Ngủ (10); } ...
    Hãy thử sử dụng một điều kiện if thay vì vòng lặp while để kiểm tra IsTradeContextBusy (). Tại sao nó phải là một vòng lặp while?

  3. #3

    Quote Originally Posted by ;
    Hãy thử sử dụng một điều kiện if thay vì vòng lặp while để kiểm tra IsTradeContextBusy (). Tại sao nó phải là một vòng lặp while?
    Bởi vì tôi muốn thử lại X lần cho một số lỗi nhất định.

  4. #4

    Quote Originally Posted by ;
    Bởi vì tôi muốn thử lại X lần cho một số lỗi nhất định.
    Vì vậy, sau đó không nên bao gồm tất cả các lỗi mà bạn đang cố gắng bẫy trong vòng lặp while?

  5. #5

    Quote Originally Posted by ;
    Vì vậy, sau đó không nên bao gồm tất cả các lỗi mà bạn đang cố gắng bẫy trong vòng lặp while?
    Họ là tất cả trong vòng lặp while.

  6. #6

    Quote Originally Posted by ;
    Họ là tất cả trong vòng lặp while.
    Vâng, tất cả đều ở thứ nhất, nhưng không phải thứ hai.

  7. #7

    Quote Originally Posted by ;
    Vâng, tất cả đều ở thứ nhất, nhưng không phải thứ hai.
    Nhưng tôi không muốn có chúng trong vòng lặp tradecontext. Chỉ là Orderloop trong khi.

  8. #8

    Quote Originally Posted by ;
    Nhưng tôi không muốn có chúng trong vòng lặp tradecontext. Chỉ là Orderloop trong khi.
    Bạn có chắc đây là cách sử dụng chính xác của IsTradeContextBusy () không?
    http://forum.mql4.com/48326

  9. #9

    Quote Originally Posted by ;
    Bạn có chắc đây là cách sử dụng chính xác của IsTradeContextBusy () không?
    Vâng.

  10. #10
    Đã thay đổi mã và đặt trả về (0) và nó VẪN lặp! Mã đã chèn int Modify ThisOrder (int Ticket, double Price, double StopLoss, double TakeProfit, int MaxTry) {string Commentary =; int TryCount = 0; bool OrderLoop = false; màu OrderColor = Đen; if (OrderType () == OP_BUY) {OrderColor = Blue;} if (OrderType () == OP_SELL) {OrderColor = Red;} while (OrderLoop == false) {while (IsTradeContextBusy ()) {Ngủ (10); } Làm mới (); if (OrderSelect (Ticket, SELECT_BY_TICKET)) {OrderModify (Ticket, OrderOpenprice (), StopLoss, TakeProfit, 0, OrderColor); } int Err = GetLastError (); switch (Err) {//---- Trường hợp thành công ERR_NO_ERROR: {OrderLoop = true; break;}/---- Thử lại trường hợp lỗi ERR_INVALID_STOPS: {In (Dừng không hợp lệ); Ngủ (1000);} trường hợp ERR_SERVER_BUSY: {In (Máy chủ bận); Ngủ (1000);} trường hợp ERR_NO_CONNECTION: {In (Không có kết nối); Ngủ (1000);} trường hợp ERR_INVALID_PRICE: {In (Giá không hợp lệ); Ngủ (1000);} trường hợp ERR_OFF_QUOTES: trường hợp ERR_BROKER_BUSY: {Ngủ (1000);} trường hợp ERR_TRADE_CONTEXT_BUSY: {TryCount ; break;} case ERR_PRICE_CHANGED: case ERR_REQUOTE: {continue;}/---- Trường hợp lỗi đã biết nghiêm trọng ERR_INVALID_TRADE_VOLUME: {In (Bình luận Số lượng không hợp lệ); return (0);} case ERR_MARKET_CLposed: {In (Bình luận Đóng thị trường); return (0);} case ERR_TRADE_DISABLED: {In (Bình luận Giao dịch bị vô hiệu hóa); return (0);} case ERR_NOT_ENOUGH_MONEY: {In (Bình luận Không đủ tiền); return (0);} case ERR_TRADE_TOO_MANY_ORDERS: {In (Bình luận Quá nhiều đơn hàng); return (0);} case 149: {In (Bình luận Hedge bị cấm); return (0);}/---- Trường hợp lỗi không xác định gây tử vong ERR_NO_RESULT: {In (Bình luận Không có kết quả); return (0);} mặc định: {In (Lỗi không xác định - Err); return (0);}/----}/chuyển đổi kết thúc if (TryCount gt; MaxTry) {OrderLoop = true; }}/kết thúc trong khi return (0); }

Quyền đăng bài

  • Bạn không thể đăng bài viết mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng tệp đính kèm
  • Bạn không thể chỉnh sửa bài đăng của bạn
  •  
Chính sách Cookie
Chính sách Cookie: Website forexibroker sử dụng cookies và khi tiếp tục sử dụng website bạn chấp thuận với điều này. Để có thêm thông tin, vui lòng đọc 'Thông tin Cookie'.