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

 
Цель открыть один ордер

Берем создаем функцию где в цикле перебираем открытые ордера и если 0 то открываем

Вариант 2 : 
Условие ordersdtotal ==0

И получаем как минимум  бесконечное открытие ордеров или открытие на каюдом тике

Почему так?
 
Alekseu Fedotov:

Для начала:

переменные,видимость переменных

как объявляются,где? 

Думаю в коде всё понятно написано
 
Mickey Moose:
Цель открыть один ордер

Берем создаем функцию где в цикле перебираем открытые ордера и если 0 то открываем

Вариант 2 : 
Условие ordersdtotal ==0

И получаем как минимум  бесконечное открытие ордеров или открытие на каюдом тике

Почему так?
Что непонятного в коде?, я поясню если что
 
ZZuretc:
Что непонятного, я поясню если что
Непонятно почему я должен использовать пользовательскую функцию подсчета если есть готовая ордерстотал
 
Mickey Moose:
Непонятно почему я должен использовать пользовательскую функцию подсчета если есть готовая ордерстотал

Потому, что стандартная возвращает общее число ордеров и позиций на счёте, независимо от символа, магика и типа.

 

Привет всем! Подскажите пожалуйста как задать условие пересечения ценой горизонтальной линии? И как сделать эту функцию с максимальной точностью (что бы реагировала на каждом тике)?

Зарание благодарю))

 
Mickey Moose:
Цель открыть один ордер
Берем создаем функцию где в цикле перебираем открытые ордера и если 0 то открываем
Вариант 2 : 
Условие ordersdtotal ==0
И получаем как минимум  бесконечное открытие ордеров или открытие на каюдом тике
Почему так?

С каждым тиком терминал получает от сервера последнюю котировку, а также информацию об ордерах. Когда терминал посылает серверу команду OrderSend(), то серверу нужно какое-то время для обработки команды и открытия ордера. До тех пор он с каждым тиком (назовем его пустым) будет посылать информацию об отсутствии ордера. Функция OrdersTotal() будет возвращать нулевое значение, а робот посылать новые OrderSend().

Когда сервер откроет ордер, пустые тики кончатся. Функция OrdersTotal() вернет положительное значение, робот успокоится. Если котировки меняются часто, то тики приходят часто, и пустых тиков будет много. Робот пошлет много OrderSend(). Сервер, реагирую на команды, откроет много ордеров.

Вывод - после OrderSend() надо делать паузу.

 
STARIJ:

С каждым тиком терминал получает от сервера последнюю котировку, а также информацию об ордерах. Когда терминал посылает серверу команду OrderSend(), то серверу нужно какое-то время для обработки команды и открытия ордера. До тех пор он с каждым тиком (назовем его пустым) будет посылать информацию об отсутствии ордера. Функция OrdersTotal() будет возвращать нулевое значение, а робот посылать новые OrderSend().

Когда сервер откроет ордер, пустые тики кончатся. Функция OrdersTotal() вернет положительное значение, робот успокоится. Если котировки меняются часто, то тики приходят часто, и пустых тиков будет много. Робот пошлет много OrderSend(). Сервер, реагирую на команды, откроет много ордеров.

Вывод - после OrderSend() надо делать паузу.

После OrderSend() при положительном ответе - есть тикет, и соответственно - открытии позиции/установке ордера, нужно заново запросить торговое окружение, а не ждать непоймисколько.

 

А как быть с функцией которая берёт и модифицирует не свой магик?

Но почему-же другие функции не выставляют по многу ордеров, А только SellLimit?

 
ZZuretc:
А как быть с функцией которая берёт и модифицирует не свой магик?

Магик ордера невозможно модифицировать.