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

Andrey_F

Прохожий
Добрый день!
Подскажите пожалуйста. Есть простой советник открывающий ордер при пересечении уровня, на этой же свече закрывается по tp. и тут же открывает новый ордер поскольку сигнал на открытие ордера еще сохраняется. Как сделать что бы после закрытия ордера в течении следующих 4-5 свечей новые ордера не открывались?
 

ИванМН

Местный знаток
Создаём переменную типа static int.
При открытии позиции пишем в неё текущее количество баров на графике (предопределённая переменная Bars).
Открытие следующей позиции обуславливаем, помимо сигнала, выполнением условия:

if ([новый сигнал] && Bars >= [созданная переменная] + [минимальное количество баров пропуска])
{
открыть позицию;
}
 

AlexeyVik

Программист mql4 mql5
Добрый день!
Подскажите пожалуйста. Есть простой советник открывающий ордер при пересечении уровня, на этой же свече закрывается по tp. и тут же открывает новый ордер поскольку сигнал на открытие ордера еще сохраняется. Как сделать что бы после закрытия ордера в течении следующих 4-5 свечей новые ордера не открывались?
Тебе надо поменять логику. Не просто цена выше\ниже уровня, а была ниже стала выше… Тогда после закрытия уже не будет пересечения, а будет просто цена выше уровня.
 

Ugar

Гуру форума
Создаём переменную типа static int.
При открытии позиции пишем в неё текущее количество баров на графике (предопределённая переменная Bars).
Открытие следующей позиции обуславливаем, помимо сигнала, выполнением условия:

if ([новый сигнал] && Bars >= [созданная переменная] + [минимальное количество баров пропуска])
{
открыть позицию;
}
Так лучше не делать. Терминал может подгрузить исторические бары и количество изменится. Лучше ориентироваться на время открытия ордера и номера баров.
 

ИванМН

Местный знаток
Так лучше не делать. Терминал может подгрузить исторические бары и количество изменится. Лучше ориентироваться на время открытия ордера и номера баров.
Да, согласен. Тогда:

Создаём переменную типа static datetime (в соответствующей функции) или просто datetime (глобальную).
При открытии позиции пишем в неё время открытия текущего бара (Time[0]).
Открытие следующей позиции обуславливаем, помимо сигнала, выполнением условия:

if ([новый сигнал] && Time[0] >= [созданная переменная] + [количество секунд в одном баре текущего таймфрейма] * [минимальное количество пропускаемых баров])
{
открыть позицию;
}
 

Ugar

Гуру форума
Да, согласен. Тогда:

Создаём переменную типа static datetime (в соответствующей функции) или просто datetime (глобальную).
При открытии позиции пишем в неё время открытия текущего бара (Time[0]).
Открытие следующей позиции обуславливаем, помимо сигнала, выполнением условия:

if ([новый сигнал] && Time[0] >= [созданная переменная] + [количество секунд в одном баре текущего таймфрейма] * [минимальное количество пропускаемых баров])
{
открыть позицию;
}
Лучше найти последний открытый ордер по времени открытия. с помощью iBarShift узнать на каком номере бара он открывался. Сразу понятно сколько прошло баров.
 

prelest

Новичок форума
Программисты, нужен ваш ответ. Скажите пожалуйста, советник может работать только по "АСК" без "БИД"?? Открытие, закрытие ордеров только по АСК. Один программист сказал, что нельзя только по АСК, так как в советнике не написать код, а другой сказал что можно по АСК. Кто прав из них? И если советник может работать по АСК то поделитесь пожалуйста своим мнением.
 

zhserg

Местный знаток
Программисты, нужен ваш ответ. Скажите пожалуйста, советник может работать только по "АСК" без "БИД"?? Открытие, закрытие ордеров только по АСК. Один программист сказал, что нельзя только по АСК, так как в советнике не написать код, а другой сказал что можно по АСК. Кто прав из них? И если советник может работать по АСК то поделитесь пожалуйста своим мнением.
Открытие ордера Buy - только по Ask, Sell - по Bid!
Закрытие наоборот )
 

ZenFX

Почетный гражданин
Эт какие такие счета без спредов ? ))). Это которые с комисcией вместо спреда ?? )))). А в основном и то и то бывает )) периодически ) и спред и комиссия )).
На графике все свечки нарисованы по цене BID. Если разговор об этом, то надо значит учитывать там это в советнике ). Если прям надо торговать по ASK, то значит надо в бай торговать по текущей цене, а если надо чтобы был селл по этой же цене то надо дождаться пока это будет возможно ))). В один момент продать и купить по цене ASK не получится )))). Или там отложки выставлять как-то хитро. Ну если я правильно понял что имелось в виду ))). Если не правильно, то надо уточнить что хочется то более конкретно )).
 
Последнее редактирование:

ZenFX

Почетный гражданин
Это и так понятно. Одновременно купить и продать по АСК нельзя. Я спрашиваю продавать SELL можно по АСК. В советнике можно прописать в коде?
Нет нельзя ). Ну какой вопрос такой и ответ ).
P.S. Так то я понял СМЫСЛ, что там все вот АНАЛИЗИРУЮТ графики и хотят открываться вот по цене на графике, ну нет, график по BID нарисован, если там будет бай там будет спред, а если BID на графике считать для бая АСКом, то уже не всё так красиво получается )), тип того, это старая история, поэтому я и подумал что это про то вот ))).
 
Последнее редактирование:

erex

Элитный участник
Эт какие такие счета без спредов ? ))). Это которые с комисcией вместо спреда ?? )))). А в основном и то и то бывает )) периодически ) и спред и комиссия )).
На графике все свечки нарисованы по цене BID. Если разговор об этом, то надо значит учитывать там это в советнике ). Если прям надо торговать по ASK, то значит надо в бай торговать по текущей цене, а если надо чтобы был селл по этой же цене то надо дождаться пока это будет возможно ))). В один момент продать и купить по цене ASK не получится )))). Или там отложки выставлять как-то хитро. Ну если я правильно понял что имелось в виду ))). Если не правильно, то надо уточнить что хочется то более конкретно )).
Не пробовал такие счета, но некоторые дц их предлагают, как я помню. И там, опять же по памяти, на график выводится средняя цена между аск и бид, причем спред плавающий.
 

zhserg

Местный знаток
Это и так понятно. Одновременно купить и продать по АСК нельзя. Я спрашиваю продавать SELL можно по АСК. В советнике можно прописать в коде?
Верхняя - Alpari-Pro.ECN-Demo
Нижняя - тот же сервер, тестер
1695679036665.png
 

Вложения

ИванМН

Местный знаток
Скажите пожалуйста, советник может работать только по "АСК" без "БИД"??
В функциях открытия и закрытия позиций Вы можете указать какую угодно цену, хоть High и Low, стандарт MQL не накладывает никаких ограничений. Но вот какая будет реакция от торгового сервера на такой странный запрос - вопрос нетривиальный. Если торгуете на, в самом деле, каком-нить бесспредовом счёте, то, может, и проканает. Если на обычном - будет выдаваться ошибка открытия позиции, что ЖСерг продемонстрировал на скриншотах.
 

_SERG_

Активный участник
Это и так понятно. Одновременно купить и продать по АСК нельзя. Я спрашиваю продавать SELL можно по АСК. В советнике можно прописать в коде?
Можно, если спрэд будет равен нолю, тогда ASK = BID, и можно условно считать, что ордера открытые на продажу, будут тоже открыты по цене ASK.

"В советнике можно прописать в коде?"
ИМХО, прописывать в советнике ЭТО отдельно, не вижу смысла.

Иначе, если спрэд не равен 0, то действуют принятые правила для открытия ордеров.
 
Верх