Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
А кто сказал, что у Вас на каждом тике есть отложенный ордер с тикетом 0? А Вы проверили, вообще сколько отложенных ордеров? А откуда Вы взяли, что ....?
А кто сказал, что у Вас на каждом тике есть отложенный ордер с тикетом 0? А Вы проверили, вообще сколько отложенных ордеров? А откуда Вы взяли, что ....?
С каким тикетом "0"??? OrderGetTicket(0) не означает что выбран ордер с тикетом 0, а возвращает тикет ордера из списка отложенных ордеров под индексом 0.
Вероятно Вам необходимо более точно сформулировать задачу.
Например так: если есть отложенный ордер у которого magic равен "1" - тогда удалить его.
В таком случае реализация будет такой:
#include <Trade\Trade.mqh>
CTrade trader;
intOnInit()
{
trader.SetExpertMagicNumber(1);
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
//---
}
voidOnTick()
{
for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current ordersif(OrderGetTicket(i)>0) // selects the pending order by index for further access to its propertiesif(OrderGetInteger(ORDER_MAGIC)==1)
trader.OrderDelete(OrderGetTicket(i));
}
Обход в цикле всех отложенных ордеров
Если удалось выбрать отложенный ордер (возвращаемое значение - тикет больше нуля)
Если magic выбранного отложенного ордера равен "1"
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Здравствуйте! Что такое MQL5InfoString или MQL5InfoInteger? Где об этом почитать? в справке не нашел!
Как-же искал что не смог найти?
странно в редакторе напротив этой функции нажимаю F1 и ничего не показывает.. спасибо!
После удаления ордера магик=1. Как быть?
После удаления ордера магик=1. Как быть?
Вы удалили ОТЛОЖЕННЫЙ ордер. Какая связь с тем, что magic равен "1"? Точнее, что именно не нравится или смущает?
Вы удалили ОТЛОЖЕННЫЙ ордер. Какая связь с тем, что magic равен "1"? Точнее, что именно не нравится или смущает?
Продолжает удалять несуществующие ордера
По Вашему коду именно так и будет: Вы на каждом тике принудительно выдаёте команду на удаление ОТЛОЖЕННОГО ордера с тикетом "0".
По Вашему коду именно так и будет: Вы на каждом тике принудительно выдаёте команду на удаление ОТЛОЖЕННОГО ордера с тикетом "0".
нет, это не так, только если магик=1
нет, это не так, только если магик=1
Суть не меняется - Вы на каждом тике пытаетесь удалить отложенный ордер с тикетом "0".
А кто сказал, что у Вас на каждом тике есть отложенный ордер с тикетом 0? А Вы проверили, вообще сколько отложенных ордеров? А откуда Вы взяли, что ....?
Суть не меняется - Вы на каждом тике пытаетесь удалить отложенный ордер с тикетом "0".
А кто сказал, что у Вас на каждом тике есть отложенный ордер с тикетом 0? А Вы проверили, вообще сколько отложенных ордеров? А откуда Вы взяли, что ....?
С каким тикетом "0"??? OrderGetTicket(0) не означает что выбран ордер с тикетом 0, а возвращает тикет ордера из списка отложенных ордеров под индексом 0.
Вероятно Вам необходимо более точно сформулировать задачу.
Например так: если есть отложенный ордер у которого magic равен "1" - тогда удалить его.
В таком случае реализация будет такой:
Обход в цикле всех отложенных ордеров
Если удалось выбрать отложенный ордер (возвращаемое значение - тикет больше нуля)
Если magic выбранного отложенного ордера равен "1"
Удалить его