Здравствуйте как правильно пишется на языке mql4 надо удалить 2 ой отложенный ордер после активации первого

 

Устанавливаются buy stop sell stop ордера но после активаци первого ордера 2 не удаляется покажите как это будет правильно ?

void CheckAndDeletePendingOrder() {

    // Проверяем и удаляем Sell Stop ордер, если Buy Stop активирован

    if (OrderSelect(buyStopOrderTicket, SELECT_BY_TICKET)) {

        Print("Buy Stop ордер выбран: ticket ", buyStopOrderTicket);

        if (OrderType() == OP_BUYSTOP && OrderCloseTime() == 0) {

            Print("Buy Stop ордер активен");

            if (OrderOpenPrice() <= MarketInfo(Symbol(), MODE_ASK)) {

                Print("Условие активации Buy Stop выполнено");

                if (OrderSelect(sellStopOrderTicket, SELECT_BY_TICKET)) {

                    if (OrderType() == OP_SELLSTOP) {

                        bool result = OrderDelete(sellStopOrderTicket);

                        if (!result) {

                            int error = GetLastError();

                            Print("Ошибка при удалении Sell Stop ордера: ", error);

                        } else {

                            Print("Sell Stop ордер удален");

                        }

                    } else {

                        Print("Sell Stop ордер уже не существует");

                    }

                } else {

                    Print("Не удалось выбрать Sell Stop ордер");

                }

            }

        }

    }


    // Проверяем и удаляем Buy Stop ордер, если Sell Stop активирован

    if (OrderSelect(sellStopOrderTicket, SELECT_BY_TICKET)) {

        Print("Sell Stop ордер выбран: ticket ", sellStopOrderTicket);

        if (OrderType() == OP_SELLSTOP && OrderCloseTime() == 0) {

            Print("Sell Stop ордер активен");

            if (OrderOpenPrice() >= MarketInfo(Symbol(), MODE_BID)) {

                Print("Условие активации Sell Stop выполнено");

                if (OrderSelect(buyStopOrderTicket, SELECT_BY_TICKET)) {

                    if (OrderType() == OP_BUYSTOP) {

                        bool result = OrderDelete(buyStopOrderTicket);

                        if (!result) {

                            int error = GetLastError();

                            Print("Ошибка при удалении Buy Stop ордера: ", error);

                        } else {

                            Print("Buy Stop ордер удален");

                        }

                    } else {

                        Print("Buy Stop ордер уже не существует");

                    }

                } else {

                    Print("Не удалось выбрать Buy Stop ордер");

                }

            }

        }

    }

}

вот мой код а он не удаляет
 
Sunnat Tilyakhodjaev:

Устанавливаются buy stop sell stop ордера но после активаци первого ордера 2 не удаляется покажите как это будет правильно ?

void CheckAndDeletePendingOrder() {

    // Проверяем и удаляем Sell Stop ордер, если Buy Stop активирован

    if (OrderSelect(buyStopOrderTicket, SELECT_BY_TICKET)) {

        Print("Buy Stop ордер выбран: ticket ", buyStopOrderTicket);

        if (OrderType() == OP_BUYSTOP && OrderCloseTime() == 0) {

            Print("Buy Stop ордер активен");

            if (OrderOpenPrice() <= MarketInfo(Symbol(), MODE_ASK)) {

                Print("Условие активации Buy Stop выполнено");

                if (OrderSelect(sellStopOrderTicket, SELECT_BY_TICKET)) {

                    if (OrderType() == OP_SELLSTOP) {

                 




      bool result = OrderDelete(sellStopOrderTicket);

                        if (!result) {

                            int error = GetLastError();

                            Print("Ошибка при удалении Sell Stop ордера: ", error);

                        } else {

                            Print("Sell Stop ордер удален");

                        }

                    } else {

                        Print("Sell Stop ордер уже не существует");

                    }

                } else {

                    Print("Не удалось выбрать Sell Stop ордер");

                }

            }

        }

    }


    // Проверяем и удаляем Buy Stop ордер, если Sell Stop активирован

    if (OrderSelect(sellStopOrderTicket, SELECT_BY_TICKET)) {

        Print("Sell Stop ордер выбран: ticket ", sellStopOrderTicket);

        if (OrderType() == OP_SELLSTOP && OrderCloseTime() == 0) {

            Print("Sell Stop ордер активен");

            if (OrderOpenPrice() >= MarketInfo(Symbol(), MODE_BID)) {

                Print("Условие активации Sell Stop выполнено");

                if (OrderSelect(buyStopOrderTicket, SELECT_BY_TICKET)) {

                    if (OrderType() == OP_BUYSTOP) {

                        bool result = OrderDelete(buyStopOrderTicket);

                        if (!result) {

                            int error = GetLastError();

                            Print("Ошибка при удалении Buy Stop ордера: ", error);

                        } else {

                            Print("Buy Stop ордер удален");

                        }

                    } else {

                        Print("Buy Stop ордер уже не существует");

                    }

                } else {

                    Print("Не удалось выбрать Buy Stop ордер");

                }

            }

        }

    }

}

вот мой код а он не удаляет

вот здесь - берете ф-ии: https://www.mql5.com/ru/forum/131859

проверяете кол-во отложенных 2 шт. Как только (если)  стало 1 (один стал не ордером - но рыночной позицией), то оставшийся удаляете. Вставляйте код правильно. Через сверху меню - вставка кода.

1. https://www.mql5.com/ru/forum/131859/page2#comment_3359663

2. https://www.mql5.com/ru/forum/131859#comment_3359658

курсор навел: 


Только "Полезные функции от KimIV". - Функция ExistOrders - Возвращает флаг существования ордера по размеру лота. По умолчанию параметр равен - отсутствие ограничений, то есть любой
Только "Полезные функции от KimIV". - Функция ExistOrders - Возвращает флаг существования ордера по размеру лота. По умолчанию параметр равен - отсутствие ограничений, то есть любой
  • 2011.02.18
  • www.mql5.com
GetMaxLotFromOpenPos - Возвращает максимальный размер лота из открытых позиций. GetArrowInterval - Возвращает интервал установки сигнальных указателей. ExistInHistoryToDay - Возвращает флаг наличия ордера или позиции в истории за сегодня