Здравствуйте как правильно пишется на языке 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 ордер");
}
}
}
}
}
вот здесь - берете ф-ии: 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
курсор навел:

- 2011.02.18
- www.mql5.com

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Устанавливаются 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 ордер");
}
}
}
}
}