Самообучение языку MQL5 с полного нуля - страница 74

 
VVT:

Подождите, у Вас же там временные ограничения торговли... А не попадает ли время тралить под эти ограничения? хотя нет, неправильный стоп, странно 

В советнике установлено время в интервале от 09:00:00 до 09:01:00 по московскому времени только для открытия позиции. Проблем с открытием позиции нет. Советник был установлен на демо-счете в торговом терминале ПСБ-Форекс.

Решил поставить советника на демо-счёт в торговый терминал МТ5 MetaQuote. Всё заработало, как надо, однако код возврата торгового сервера 10016 остался. Очень интересно! Буду разбираться в чём дело.

С уважением, Владимир.

 
MrBrooklin:

Валерий, а что такое уровень заморозки? Может, в коде его нужно каким-то образом прописать?

С уважением, Владимир. 

Дистанция заморозки правильней, дистанция от рыночного ордера / позиции, в которой запрещены исполнения приказов. В эту зону нельзя поставить стопы.  В качестве Параметра Ваш расчетный стоп, и на выходе получите нужный. Код для 4ки. В 5ке логика та же. И вроде параметры МаркетИнфо тот же. 

int New_Stop(int Parametr)                      // Проверка стоп-прик.
  {
   int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Миним. дистанция
   if (Parametr < Min_Dist)                     // Если меньше допуст.
     {
      Parametr=Min_Dist;                        // Установим допуст.
      Alert("Увеличена дистанция стоп-приказа.");
     }
   return(Parametr);                            // Возврат значения
  }
//-------------------------------------------------------------- 12 -- 

Для 5ки

SYMBOL_TRADE_FREEZE_LEVEL

Дистанция заморозки торговых операций (в пунктах)

int



Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как правило...
 
Valeriy Yastremskiy:

Дистанция заморозки правильней, дистанция от рыночного ордера / позиции, в которой запрещены исполнения приказов. В эту зону нельзя поставить стопы.  В качестве Параметра Ваш расчетный стоп, и на выходе получите нужный. Код для 4ки. В 5ке логика та же. И вроде параметры МаркетИнфо тот же. 

Спасибо, Валерий! Буду дальше разбираться и улучшать код советника.

С уважением, Владимир.

 
MrBrooklin:

Спасибо, Валерий! Буду дальше разбираться и улучшать код советника.

С уважением, Владимир.

Киньте сюда функцию расчета стопа и модификации позиции. Код длинный, времени не много)))))

 
Valeriy Yastremskiy:

Киньте сюда функцию расчета стопа и модификации позиции. Код длинный, времени не много)))))

Валерий, функции расчета стопа нет, т.к. он задается во входных параметрах так:

input ushort SL=200; //Стоп-лосс

а в коде для позиции Buy прописана вот такая строчка:

request.sl=NormalizeDouble(price-SL*point,digits);

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

С уважением, Владимир.

 
MrBrooklin:

Валерий, функции расчета стопа нет, т.к. он задается во входных параметрах так:

а в коде для позиции Buy прописана вот такая строчка:

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

С уважением, Владимир.

request.sl=NormalizeDouble(price-SL*point,digits);
Alert("request.sl= ",request.sl);

А еще для верности прайс, SL и point)

 
Valeriy Yastremskiy:

А еще для верности прайс, SL и point)

Спасибо, Валерий!

С уважением, Владимир.

 
Valeriy Yastremskiy:

Дистанция заморозки правильней, дистанция от рыночного ордера / позиции, в которой запрещены исполнения приказов. В эту зону нельзя поставить стопы.  В качестве Параметра Ваш расчетный стоп, и на выходе получите нужный. Код для 4ки. В 5ке логика та же. И вроде параметры МаркетИнфо тот же. 

Для 5ки

SYMBOL_TRADE_FREEZE_LEVEL

Дистанция заморозки торговых операций (в пунктах)

int



Спасибо, Валерий, за разъяснение.

С уважением, Владимир.

 

Всем доброго дня и хорошего настроения!

Продолжаю изучение языка программирования MQL5. Сегодня наступил момент, когда могу выложить на всеобщее обозрение код советника с трейлинг стопом. В связи с тем, что код советника получился достаточно громоздким, поэтому пришлось максимально сократить комментарии и опубликовать в виде файла c названием Trailing_Stop (v.1).mq5. Версию советника с подробными комментариями каждой строчки кода, в изложении доступном для ученика 1-го класса школы программирования, опубликую немного позже.

Перед публикацией кода была произведена проверка работы советника в тестере стратегий. Проблемы не выявлены. В советнике применена неттинговая система учёта позиций. Эта система учета подразумевает, что в один момент времени на счете может быть только одна открытая позиция по одному и тому же символу (финансовому инструменту).

На настоящий момент в советнике реализована возможность:

  1. Проверять торговый счет, на который планируется его установить. Если советник будет устанавливаться на демо-счёт, то в окне сообщений появится разрешение на продолжение работы. Если будет предпринята попытка установить советник на реальный счёт, то в окне сообщений появится предупреждение о невозможности продолжения работы, после чего он автоматически удалится с рабочего окна торгового терминала.
  2. Один раз в торговый день ровно в 9 ч. 00 мин. по московскому времени автоматически открывать одну позицию в ту сторону, куда будет направлен первый тик. Например, если в 9 ч. 00 мин. по московскому времени первый тик будет направлен вверх, то значит откроется позиция BUY, если первый тик будет вниз, то значит откроется позиция SELL.
  3. Задавать размер лота.
  4. Задавать размер стоп лосса.
  5. Задавать уровень относительно цены открытия позиции, при котором стоп лосс переносится в безубыток.
  6. Задавать шаг трейлинга стоп лосса.

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

ПРЕДУПРЕЖДЕНИЕ!!!

Советник разрабатывается согласно плана самообучения для демо-счёта и исключительно в учебных целях! Не предназначен для торговли на реальном счёте и извлечения прибыли!

С уважением, Владимир.

Файлы:
 

Уважаемые участники и читатели данной темы!

До глубокой ночи сидел и разбирался почему не получается заменить ранее опубликованный файл с кодом советника, в котором была недоработка, на исправленный вариант. Под утро наконец-то разобрался!

Честно говоря не предполагал, что если кто-то из участников форума уже успел скачать файл советника Trailing_Stop.mq5, в котором была недоработка, то после этого уже не возможно просто так взять и заменить файл на исправленный вариант с таким же именем. Оказалось, что нужно вносить изменения ещё и в название советника для того, чтобы был опубликован исправленный вариант.

В связи с данным обстоятельством, приношу свои извинения и предлагаю для скачивания исправленный вариант советника с названием Trailing_Stop (v.1).mq5, который расположен в предыдущем сообщении.

С уважением, Владимир.

Причина обращения: