Советники: TimeEA

 

TimeEA:

Простой советник. Открывает позицию заданного типа в заданное в настройках время. Закрывает ее точно так же - по времени, указанному в настройках.

Работа заключается в выборе нужного типа открываемой позиции (либо длинная, либо короткая) и выбора времени открытия и закрытия позиции в часах и минутах. Так же можно задать стоп лосс и тейк профит в пунктах. При ошибочно заданных размерах стоп лосс или тейк профит советник их автоматически корректирует под минимальный размер StopLevel, установленный для символа.

Советник также скорректирует лот при неверно указанном значении. Если же лот слишком большой при открытии позиции, то советник выставит его таким, чтобы позицию можно было открыть. Если нет денег на открытие даже минимальным лотом, то сигнал будет пропущен.

Есть одна особенность - при коротких стоп-приказах и при их срабатывании будет открыта новая позиция при условии, что это будет тот же самый бар, на котором была открыта самая первая позиция на данном сигнале по времени. Другими словами: если позиция открыта на текущем баре и закрыта по стоп-приказу, то будет открыта новая позиция если еще не открыт новый бар, и так до тех пор, пока не будет открыт новый бар текущего таймфрейма.

Стоит понимать, что этот советник предназначен для учебных целей и проверки стратегий.

Советник имеет одиннадцать настраиваемых параметров:

  • Experts magic number - уникальный идентификатор позиций (магик);
  • Hour of position open - час времени открытия позиции;
  • Minute of position open - минуты времени открытия позиции;
  • Hour of position close - час времени закрытия позиции;
  • Minute of position close - минуты времени закрытия позиции;
  • Position type - тип открываемой позиции (длинная/короткая);
  • Lots - объем открываемой позиции;
  • Stop loss in points - стоп лосс позиции в пунктах;
  • Take profit in points - тейк профит позиции в пунктах;
  • Slippage of price - допустимое проскальзывание цены;
  • Multiplier spread for stops - число, на которое советник будет умножать спред при расчете корректной дистанции стоп-приказов.
При выставлении стоп лосс или тейк профит (а так же отложенных ордеров) существует минимально разрешенная дистанция установки стоп-приказов - StopLevel. Т.е., стоп лосс или тейк профит (или отложенный ордер) должны быть выставлены не ближе этой дистанции к цене. Если же StopLevel задан нулевым, то, в основном, это не говорит об его отсутствии, а говорит о том, что StopLevel плавающий. В этом случае минимальной дистанцией чаще всего является спред*2, но иногда двойного спреда не достаточно. Поэтому и введен параметр - число, на которое советник будет умножать спред для расчета минимальной дистанции установки стопов.

Для проверки были проведены два теста (Every tick) на EURUSD, Н1 в диапазоне дат 2017.01.02 - 2018.01.19 в двух режимах - открытие длинных позиций и открытие коротких позиций. В режиме открытия длинных позиций советник показал себя неплохо, поэтому была проведена оптимизация часов открытия и закрытия позиций.

Результат с часом открытия 15 и часом закрытия 8, и с остальными настройками по умолчанию приведен ниже:

Автор: Scriptor

 
Открывает позицию заданного типа в заданное в настройках время.

На первом тике заданного времени.

Стоит понимать, что этот советник предназначен для учебных целей и проверки стратегий.

Думаю, можно значительно ускорить его.

 
fxsaber:
На первом тике заданного времени.
Ну вы буквоед :)
 
Artyom Trishkin:
Ну вы буквоед :)

После прочтения описания был уверен, что там OnTimer. Только представьте, насколько он мог быть оптимальнее написан тогда.

 
fxsaber:

После прочтения описания был уверен, что там OnTimer. Только представьте, насколько он мог быть оптимальнее написан тогда.

Я не вижу кода - с мобилы.
 
fxsaber:

После прочтения описания был уверен, что там OnTimer. Только представьте, насколько он мог быть оптимальнее написан тогда.

Поглядел код.

А зачем там таймер? Там как раз в учебных целях показан расчёт требуемого времени.

 
Artyom Trishkin:

А зачем там таймер? Там как раз в учебных целях показан расчёт требуемого времени.

Раз для учебных, то код оптимально нужно писать. Сделайте профайлинг, чтобы посмотреть прелести такого вычисления времени.

Нельзя же наплевательски относиться к скоростным показателям советника! Зачем писать заведомо медленный код?

 
fxsaber:

Решили побороться за чистоту кодобазы? Ну-ну...

 
Andrey Khatimlianskii:

Решили побороться за чистоту кодобазы? Ну-ну...

От MQ ни одного советника в КБ (в стандартной поставке не смотрел). Странная ситуация. MQ все время подчеркивают хорошие скоростные показатели MT5, но, похоже, не замеряли их. Возможно, поэтому позволяют в учебных целях постить медленный код.


Хочется увидеть эталонный код от MQ. Когда нет логических ошибок, алгоритмическое ускорение невозможно, код разложен по полочкам, задействованы разные виды ордеров (не только маркеты), показаны асинхронная отправка приказов и их обработка, задействованы история торгов и тиков. Хотя бы для одного символа.

 

скажите а почему в тестере выдаётся эта ошибка

1

 
Он почему то не загружается из библиотеки. А при попытке скомпилировать код в редакторе выдает ошибку.
Причина обращения: