Ваши вопросы по языку MQL4

Ugar

Гуру форума
Я проверил .У обоих брокеров указано при открытии " Вы можете установить ордер не ближе 0 пунктов от рыночной цены". Но на одном открывает ,а на другом -нет...
То что терминал отвечает что стоп левел =0, ещё не означает что BuyStop ордер можно установить прямо на Ask.
В этом случае надо внимательно читать торговые условия и регламент. На разных ДЦ по разному. И даже на разных типах счетов в пределах одного ДЦ могут быть разные правила.
Например может использоваться в качестве стоп левела спред, или вообще разрешено устанавливать даже внутри спреда.
 

wellaflex

Новичок форума
То что терминал отвечает что стоп левел =0, ещё не означает что BuyStop ордер можно установить прямо на Ask.
В этом случае надо внимательно читать торговые условия и регламент. На разных ДЦ по разному. И даже на разных типах счетов в пределах одного ДЦ могут быть разные правила.
Например может использоваться в качестве стоп левела спред, или вообще разрешено устанавливать даже внутри спреда.
Понятно ,спасибо. Только я вспомнил одну важную деталь.Когда советник пытается выставить стоповый ордер и сыпет ошибками в журнале о неправильном ТП или СЛ,чуть ли не каждую секунду.В этот момент стоит только нажать на смайлик советника,вызвать его настройки и там просто нажать ОК,ничего не меняя.И после этого стоповый ордер сразу выставляется.
Так что тут проблема в коде видимо,только при перезапуске настроек сов выставляет стоп ордер.
 

Roschah

Новичок форума
Уважаемые программисты, возник такой вопрос: ставлю один советник на несколько различных валютных пар, как запретить советнику открывать ордера, если есть уже открытый ордер по другой паре?????
 

AlexeyVik

Программист mql4 mql5
Уважаемые программисты, возник такой вопрос: ставлю один советник на несколько различных валютных пар, как запретить советнику открывать ордера, если есть уже открытый ордер по другой паре?????
Как вариант, убрать из проверки принадлежности ордера Symbol() и магик. Хотя магик можно оставить, но назначить его одинаковым на все советники. Это позволит разделить советники на 2-3 группы, если такое желание появится.
 

Roschah

Новичок форума
Как вариант, убрать из проверки принадлежности ордера Symbol() и магик. Хотя магик можно оставить, но назначить его одинаковым на все советники. Это позволит разделить советники на 2-3 группы, если такое желание появится.

А можно ли сделать так, чтобы советник первым делом проверял есть ли открытые ордера вообще на счету и если есть, то не открывал своих ордеров????
 

AlexeyVik

Программист mql4 mql5
я правильно понял???? int start() {
if(OrdersTotal() > 0) return;
Это зависит от алгоритма советника. Если просто ставит ордера, то да. А если ещё и тралит, то нет. Тогда надо изменить условие
if(OrdersTotal() < 1) открыть ордер

ps; и не int start() а void OnTick()
Лучше сразу привыкай к новому МЕ.
 
Последнее редактирование:

Roschah

Новичок форума
Это зависит от алгоритма советника. Если просто ставит ордера, то да. А если ещё и тралит, то нет. Тогда надо изменить условие
if(OrdersTotal() < 1) открыть ордер

ps; и не int start() а void OnTick()
Лучше сразу привыкай к новому МЕ.

Функции трала нет. Спасибо, большое за помощь.
 

mobidik

-----
Подскажите, как правильно задать условие: ордер открытый на текущей свече, должен закрыться с появлением новой?
 

hoz

Активный участник
Я что-то туплю, по ходу. Я иной раз замечаю, что некоторые программисты в своих функциях задают следующее условие:

PHP:
if (fi_Ticket == 0) return;

Например, в функции установки стоп-лосса. По скольку тикета равного 0 (нуль) не бывает ни в тестере, ни в реале, возникает вопрос. Зачем такая проверка вообще используется?
 

Ugar

Гуру форума
Я что-то туплю, по ходу. Я иной раз замечаю, что некоторые программисты в своих функциях задают следующее условие:

PHP:
if (fi_Ticket == 0) return;
Например, в функции установки стоп-лосса. По скольку тикета равного 0 (нуль) не бывает ни в тестере, ни в реале, возникает вопрос. Зачем такая проверка вообще используется?
В том и смысл. Тикета =0 не бывает, а значение переменной вполне.
 
  • Like
Реакции: hoz

hoz

Активный участник
В одной библиотеке имеется перечень глобальных переменных. Данная библиотека подключается к некоторым другим библиотекам. Мне интересен один момент. В С++ есть конструкция, которая гарантирует, что не будет объявлена та же переменная или функция повторно. А в мкл4 как?
Например, по ходу кода в эксперте, в случает, если эксперт использует несколько библиотек и какая-нить переменная объявляется несколько раз (внутри разных библиотек). Это считается нормально? Ведь если переменная объявлена, и, инициализирована некоторым значением до повторного её объявления по ходу отработки кода... то как это отразится на значении данной переменной?
Я раньше не задумывался об этом, но сейчас вот решил въехать, дабы уяснить канкретно.
 

matro3

Почетный гражданин
При компиляции должен будет предупредить.
 

qqmber

Почетный гражданин
В одной библиотеке имеется перечень глобальных переменных. Данная библиотека подключается к некоторым другим библиотекам. Мне интересен один момент. В С++ есть конструкция, которая гарантирует, что не будет объявлена та же переменная или функция повторно. А в мкл4 как?
Например, по ходу кода в эксперте, в случает, если эксперт использует несколько библиотек и какая-нить переменная объявляется несколько раз (внутри разных библиотек). Это считается нормально? Ведь если переменная объявлена, и, инициализирована некоторым значением до повторного её объявления по ходу отработки кода... то как это отразится на значении данной переменной?
Я раньше не задумывался об этом, но сейчас вот решил въехать, дабы уяснить канкретно.
В mql нет глобальных переменных в том же смысле, как в С, переменные на верхнем уровне все равно локальны внутри модуля и недоступны из других. Не зря extern тут означает совсем другое.
 

hoz

Активный участник
Я так понимаю, что extern это лишь признак того, что эта переменная вводная. Есс-но, её значение можно ввести. Я вот на данный момент думаю как разумнее разрулить использование переменной типа extern внутри класса. Ведь внутри секций (private, protected и рublic) можно только объявить переменные. Задать значения переменным нельзя.
Тогда возникает вопрос, как передать в класс значение вводимые пользователем? Т.е. extern (input).
 

ctmcn

Новичок форума
Здравствуйте !
Подскажите, почему в МЕ 509 билда - ошибки, а в МЕ 625 - ошибок нет.
Считал, что и там, и там ошибок не должно быть.
Индикатор прилагаю.
С уважением.
 

Вложения

  • ZUPp_148.mq4
    379,8 КБ · Просмотры: 25

ansol

Местный знаток
Как узнать время выставления отложенного ордера?
OrderOpenTime() для отложенника не работает. Или я что-то не понял? :(
Задача - удалять ордер по открытию новой свечи, а у всех ДЦ, с которыми я имел дело, меньше 10 минут отложенники не дает ставить.
 

matro3

Почетный гражданин
Когда выставляешь - запоминай время. Потом сравнивай со временем текущей свечи.
 
Верх