Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2066

 
Порт-моне тв #:

Приветствую!

На тестере отрабатывает норм, но в торговле уже на маркете демо не хочет, ошибок нет

ОТКАЗЫВАЕТСЯ МОДИФИРОВАТЬ ТейкПрофит

части кода надеюсь хватит, так как выше функция (не показано) отрабатывает.

Есть идеи в чем проблема?

Сперва ордерселект, потом все остальное.
 
Tretyakov Rostyslav #:

1) Почему перебор закрытых ордеров OrdersHistoryTotal?

2) Присвоение тикета в реале не всегда идет по порядку, это только в тестере 1,2,3...и т.д.

если не по порядку, то как быть?

 
Valeriy Yastremskiy #:
Сперва ордерселект, потом все остальное.

поясни что имел ввиду, ордер селект итак стоит же

 
Порт-моне тв #:

поясни что имел ввиду, ордер селект итак стоит же


Сначала ошибки в журнале прочитайте.

 
PapaYozh #:


Сначала ошибки в журнале прочитайте.

читайте запрос перед тем как  комментировать, - ошибок нет

 
Порт-моне тв #:

поясни что имел ввиду, ордер селект итак стоит же

Ордерселект заполняет структуру свойств ордера, т.е. ордертикет, время открытия, стопы, цену открытия и с этими данными потом работают остальные ордерные функции и операторы, в том числе и модификация. Напрямую модификация через тикет тоже должна работать, но не гарантированно. Тикет в 4ке хоть и объявлен неизменным, но лучше перестраховаться. К тому же это лишняя проверка, что ордер с данным тикетом существует. Далее надо еще проверить не закрыт ли он, по времени закрытия, по типу ордера не получится, это только когда стоп стал рыночным. В истории закрытый ордер тоже будет иметь тип рыночного ордера.

И в реале тикеты по порядку не идут. И на демо тоже. Кроме нас еще много кто выставляет, а тикет это от брокера, а не от терминала. Поэтому по каждому тикету должен быть выбор ордера.

И таки да, в истории закрытые ордера.

 
Порт-моне тв #:

читайте запрос перед тем как  комментировать, - ошибок нет


Ну тогда давайте по порядку.

Первые 2 строки:

         if(OrderMagicNumber()==Magic+1)
                      if(OrderSelect(OrdersHistoryTotal()+1, SELECT_BY_TICKET))


Почему сначала OrderMagicNumber(), а потом OrderSelect() ?


Выполняется условие 

if(OrderMagicNumber()==Magic+1)

?


Почему у Вас вместо номера тикета увеличенное на единицу количество ордеров в истории?

if(OrderSelect(OrdersHistoryTotal()+1, SELECT_BY_TICKET))

Откуда такая уверенность, что есть ордер с тикетом равным увеличенному на единицу количеству ордеров в истории?

 
PapaYozh #:


Ну тогда давайте по порядку.

Первые 2 строки:


Почему сначала OrderMagicNumber(), а потом OrderSelect() ?


Выполняется условие 

?


Почему у Вас вместо номера тикета увеличенное на единицу количество ордеров в истории?

Откуда такая уверенность, что есть ордер с тикетом равным увеличенному на единицу количеству ордеров в истории?

Почему у Вас вместо номера тикета увеличенное на единицу количество ордеров в истории?

так надо!


Почему сначала OrderMagicNumber(), а потом OrderSelect() могу поменять местами - это не принципиально, могу поменяит местами, сработает?

 
Valeriy Yastremskiy #:

Ордерселект заполняет структуру свойств ордера, т.е. ордертикет, время открытия, стопы, цену открытия и с этими данными потом работают остальные ордерные функции и операторы, в том числе и модификация. Напрямую модификация через тикет тоже должна работать, но не гарантированно. Тикет в 4ке хоть и объявлен неизменным, но лучше перестраховаться. К тому же это лишняя проверка, что ордер с данным тикетом существует. Далее надо еще проверить не закрыт ли он, по времени закрытия, по типу ордера не получится, это только когда стоп стал рыночным. В истории закрытый ордер тоже будет иметь тип рыночного ордера.

И в реале тикеты по порядку не идут. И на демо тоже. Кроме нас еще много кто выставляет, а тикет это от брокера, а не от терминала. Поэтому по каждому тикету должен быть выбор ордера.

И таки да, в истории закрытые ордера.

и как быть? 

Поэтому по каждому тикету должен быть выбор ордера. - как лучше это сделать?

 
Порт-моне тв #:

Почему у Вас вместо номера тикета увеличенное на единицу количество ордеров в истории?

так надо!


Почему сначала OrderMagicNumber(), а потом OrderSelect() могу поменять местами - это не принципиально, могу поменяит местами, сработает?

Ну если так надо, значит вы хорошо знаете что делаете. Отсюда вопрос: Если вы сами всё знаете, зачем задаёте тут вопросы?