Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
С вопросом закрытия ордеров по мейджику я постараюсь разобраться в понедельник (сейчас форекс не работает, выходные). Не помолучться - сильно не пинайте, спрошу в этой ветке. :)
Рынок не работает, а тестер работает...
Как вариант, ф-я
int AccountNumber()
Возвращает номер текущего счета.
Пропишите в коде условие:
if (AccountNumber() != заданный номер) return(0);
А можно пример написания ф-ии, куда ее лепить?
А можно пример написания ф-ии, куда ее лепить?
Можно в самом начале функции Старт:
Рынок не работает, а тестер работает...
Я правильно понял, что нельзя закрыть ордер по магическому номер "в лоб". Надо перебирать все ордера по номеру в списке/тикету и смотреть, какой у него магический номер. Так?
Я правильно понял, что нельзя закрыть ордер по магическому номер "в лоб". Надо перебирать все ордера по номеру в списке/тикету и смотреть, какой у него магический номер. Так?
Так
Я правильно понял, что нельзя закрыть ордер по магическому номер "в лоб". Надо перебирать все ордера по номеру в списке/тикету и смотреть, какой у него магический номер. Так?
Напрямую по меджику закрыть нельзя. Меджик вообще не обязательная штука - может быть всегда нулем. Необходим он только для того, чтобы советники (если их допустим больше одного) работали только со своими ордерами (ордерами со своими меджиками), да и то каждый из этих советников должен уметь выделять для работы ордера со своими меджиками, а то часто бывает сырые или очень простенькие совы "думают" что они вообще одни на целом свете и пытаются работать со всеми открытыми ордерами невзирая на меджик и прочее...
Функция закрытия открытого ордера только одна и она по тикету:
https://docs.mql4.com/ru/trading/OrderClose
Напрямую по меджику закрыть нельзя. Меджик вообще не обязательная штука - может быть всегда нулем. Необходим он только для того, чтобы советники (если их допустим больше одного) работали только со своими ордерами (ордерами со своими меджиками), да и то каждый из этих советников должен уметь выделять для работы ордера со своими меджиками, а то часто бывает сырые или очень простенькие совы "думают" что они вообще одни на целом свете и пытаются работать со всеми открытыми ордерами невзирая на меджик и прочее...
Функция закрытия открытого ордера только одна и она по тикету:
https://docs.mql4.com/ru/trading/OrderClose
Спасибо за ответ. Мейджики меня привлекли лишь потому, что некоторые ДЦ в новых сутках переоткрывают ордера и, как следствие, у них меняются тикеты. Наверное, в этом случае и мейджик может потеряться.
Я тут подумаю и скоро представлю новую версию кода. Просьба не исчезать. :)
Спасибо Ktest0 за кураторство. Все заработало. От мейджиков отказался.
Вроде при переносе через сутки номера тикетов у меня не меняются.
Странно, что человек писал о смене тикетов.
Напрямую по меджику закрыть нельзя. Меджик вообще не обязательная штука - может быть всегда нулем. Необходим он только для того, чтобы советники (если их допустим больше одного) работали только со своими ордерами (ордерами со своими меджиками), да и то каждый из этих советников должен уметь выделять для работы ордера со своими меджиками, а то часто бывает сырые или очень простенькие совы "думают" что они вообще одни на целом свете и пытаются работать со всеми открытыми ордерами невзирая на меджик и прочее...
Функция закрытия открытого ордера только одна и она по тикету:
https://docs.mql4.com/ru/trading/OrderClose
Написал программку. Ошибок при компилировании нет, программа не виснет, работает, но ордера не открываются.
extern double L1=0.01;extern int ticket.1;
extern int M=0;
int MassivTicketov[3]={0, 0, 0};
int init()
{
return(0);
}
int start()
{
Alert(" 1 ");
RefreshRates(); // Обновление данных
NormalizeDouble(Ask,Digits); //для цены
NormalizeDouble(L1,2); //для лота.
ticket.1=OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, 0, 0, CLR_NONE);
MassivTicketov[M]=ticket.1; M++;
//
Alert(" 2 ");
RefreshRates(); // Обновление данных
NormalizeDouble(Ask,Digits); //для цены
NormalizeDouble(L1,2); //для лота.
MassivTicketov[M]=ticket.1; M++;
ticket.1=OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, 0, 0, CLR_NONE);
//
Alert(" 3 ");
RefreshRates(); // Обновление данных
NormalizeDouble(Ask,Digits); //для цены
NormalizeDouble(L1,2); //для лота.
ticket.1=OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, 0, 0, CLR_NONE);
MassivTicketov[M]=ticket.1; M=0;
//
Alert(" 1.1 ");
RefreshRates(); // Обновление данных
NormalizeDouble(Bid,Digits); //для цены
NormalizeDouble(L1,2); //для лота.
ticket.1=MassivTicketov[M]; M++;
OrderSelect(ticket.1, SELECT_BY_TICKET);
OrderClose (ticket.1, L1, Bid, 3);
//
Alert(" 1.2 ");
RefreshRates(); // Обновление данных
NormalizeDouble(Bid,Digits); //для цены
NormalizeDouble(L1,2); //для лота.
ticket.1=MassivTicketov[M]; M++;
OrderSelect(ticket.1, SELECT_BY_TICKET);
OrderClose (ticket.1, L1, Bid, 3);
//
Alert(" 1.3 ");
RefreshRates(); // Обновление данных
NormalizeDouble(Bid,Digits); //для цены
NormalizeDouble(L1,2); //для лота.
ticket.1=MassivTicketov[M]; M=0;
OrderSelect(ticket.1, SELECT_BY_TICKET);
OrderClose (ticket.1, L1, Bid, 3);
//
return(0);
}
int deinit()
{
return(0);
}