17.10.2021

Как ограничить время торговли Forex советников? Бай лимит и сел лимит в нужное время Установка и настройка


Вы наверняка замечали, что сделки в определенные дни или даже часы приносят убыток. Например - это могут быть сделки в пятницу вечером, результат которых, при переносе через выходные, зачастую непредсказуем. Как быть? Вручную включать и отключать советник? Это не очень удобно, да и все мы люди - можно просто забыть это сделать.

Решение проблемы - вспомогательный советник Trade Scheduler , позволяющий ограничить время работы других экспертов по установленному трейдером расписанию. Например, можно ограничить торговлю роботов с 7 до 11 часов понедельника. Данная разработка - от наших друзей из ArgoLab и сегодня мы с ней подробно познакомимся.

Анализ статистики

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

Итак, для начала, потребуется завести мониторинг на myfxbook. О том, как это сделать, на нашем сайте есть . За пример возьмем мониторинг советника Forex Hunter .

Также на сайт можно загрузить отчет из тестера стратегий. Это в первую очередь нужно тем, у кого еще нет достаточного количества наработанной истории на реальном счете , но есть робот, который можно протестировать в тестере . Как это сделать, опять же, читайте в отдельной статье .

Далее, после того как мониторинг был загружен и обработан, переходим в раздел расширенной статистики, во вкладку “Ежедневно”. Здесь отображается количество прибыльных и убыточных сделок по дням недели. Как видим, в четверг и пятницу наибольшее относительное количество убыточных сделок - 73% и 74%, соответственно. Это означает, что состояние рынка в эти дни не подходит для данной стратегии, прогнозы менее точные и советник теряет деньги. Для улучшения эффективности автоматической стратегии разумно убрать эти дни из торговли.

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

Значит, если мы будем блокировать работу советника в четверг и пятницу, оставив работать в остальные дни с 11 до 19 часов, результат гарантированно улучшится.

Настройки советника для изменений в указанном примере будут выглядеть так:


Установка и настройка

Установка советника происходит стандартным образом . Открываем каталог данных терминала через Файл - Открыть каталог данных, и переходим в каталог MQL4 - Experts. Сюда копируем предварительно скачанный файл советника с расширением “.ex4”. Чтобы советник появился в окне навигатора, перезагрузите терминал.

В настройках нужно указать время работы соответственно дням недели. На каждый из дней предусмотрено три входных параметра. Первый отвечает за включение/отключение торговли в определенный день, второй - за время старта торговли, третий - время завершения торговли. Время можно указать с точностью до минуты. Время начала может быть больше времени окончания, например, 19:00 и 9:00. В таком случае, торговля будет разрешена с 00:00 до 9:00 и с 19:00 до 24:00.

Дополнительный параметр CloseBeforeSwitchOFF отвечает за закрытие всех позиций сразу перед выключением автоторговли. Всего параметр может принимать три значения: No - позиции не закрываются; CloseAllProfitable - закрываются только прибыльные; CloseAll - выход из всех открытых позиций. Параметр slip отвечает за максимальное проскальзывание .


Не забудьте разрешить автоторговлю и импорт функций из DLL библиотек.

Время нужно указывать, ориентируясь на время терминала, которое отображается в заголовке окна обзора рынка. Оно же время вашего брокера .

Также не пытайтесь установить несколько экземпляров советника на одном счете - достаточно только одного экземпляра. В противном случае ни один из них не будет правильно работать.

Заключение

Ограничение работы по времени - это самый простой и эффективный способ улучшить показатели вашей торговли. К примеру, если советник стабильно сливает с 4-х до 8-ми, значит на рынке наличествует иная закономерность, обработать которую робот не в силе. Просто не торгуя в этот период - вы увеличиваете общую рентабельность и разгрузите депозит от лишних сделок.

Тема на форуме

С уважением, Алексей Вергунов
TradeLikeaPro.ru

Источник http://tradelikeapro.ru/sovetnik-tradescheduler/

Сегодня речь пойдёт о роботе Trade Scheduler, который имеет очень интересную функцию. При использовании в торговле на Форекс автоматических систем замечали ли вы, что в определённые дни недели или часы они чаще приносят убыток? Например, в первый день недели советник открывает очень мало сделок, и при этом основная часть из них ещё и убыточные. В таких случаях есть смысл отключить советник перед субботой и включить его во вторник. Осуществлять эту несложную операцию можно вручную, но также легко можно забыть отключить или включить советник в нужное время.

Решением этой проблемы (и ещё парочки других) может стать использование робота Trade Scheduler, который сам не торгует, но позволяет ограничить время работы других советников по расписанию, составляемое на основе анализа работы этих советников.

Прежде чем внести коррективы во временной режим работы , необходимо выяснить, в какие моменты он чаще торгует в минус. В этом случае в помощь будет сервис MyFXbook, где представлена подробная статистика торговли системы по дням недели и часам. Оптимальный торговый период для анализа работы системы - 3 месяца. Чтобы провести его, необходимо завести мониторинг на сервисе. Про установку робота на MyFXbook вы можете прочитать . В качестве примера рассмотрим результаты работы эксперта , с мониторингом работы которого можно ознакомиться, кликнув по картинке:

Рис. 1. Мониторинг работы советника Transient Zones 2.0 на сервисе MyFXbook.

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

После загрузки и обработки мониторинга необходимо перейти в раздел расширенной статистики, вкладка Ежедневно. Здесь можно найти информацию по относительному количеству по дням недели. В нашем примере, наибольшее количество убыточных сделок приходится на четверг и пятницу, а это значит, что в эти дни будет разумно приостанавливать работу эксперта. Причина такого поведения может крыться в состоянии рынка, которое в эти дни не подходит для стратегии робота, и его расчёты менее точные:


Рис. 2. Отношение прибыльных и убыточных сделок советника Transient Zones 2.0 за неделю.

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


Рис. 3. Относительное количество убыточных и прибыльных сделок по часам.

Вывод: будет разумно останавливать торговый процесс в четверг, пятницу, а для остальных дней блокировать его работу в первые два часа нового дня, и в течение дня в те часы, когда убыточные сделки преобладают - в частности, в 12, 13, 14 часов дня. То есть, оставлять его работать ночью с 2 до 8 утра включительно, и с 13 до 21 днём. Результат работы советника должен значительно улучшится.

Установка и настройка эксперта.

Установка вспомогательного советника Trade Scheduler осуществляется по аналогии с любым другим советником, подробнее об этом написано в . По ссылке ниже вы можете скачать архив с экспертом:

Скачать trade-scheduler.rar (cкачиваний: 139)

Разархивируйте архив trade-scheduler.rar , файл эксперта TradeScheduler v2.3.ex4 скопируйте в папку каталог_данных\MQL4\Experts\ . Чтобы открыть каталог данных, необходимо в меню Файл выбрать пункт Открыть каталог данных. Затем терминал перезагружается и после этого советник можно найти в окне Навигатор - Советники.

При установке эксперта на график в окне настроек задаётся необходимое время работы по дням недели и часам. Время задаётся в зависимости от времени терминала, оно же - время . Для каждого дня предусмотрена 3 входных параметра. Первый параметр отвечает за включение/отключение робота в определённый день недели, второй параметр - за время начала торговли, третий - время остановки. Указывается время в формате часы: минуты:


Рис. 4. Входные параметры, заданные после анализа работы советника.

Также в настройках присутствует и дополнительный параметр CloseBeforeSwitchOFF . При значении CloseAll все сделки будут закрываться автоматически перед отключением робота. При CloseAllProfitable - будут закрываться только прибыльные ордера, при No - сделки не будут закрываться. За максимально допустимое проскальзывание отвечает параметр Slip .

Убедитесь, что в терминале разрешена автоторговля и импорт функций из DLL. Для одного терминала устанавливается одна версия советника.

Заключение.

Хотите улучшить показатели работы вашего советника? Попробуйте метод ограничения его работы и проанализируйте результаты. Если статистика показывает, что ваш эксперт "стабильно сливает" в определённое время дня, значит на рынке присутствует закономерность, обработка которой ему не под силу. Приостанавливайте торговлю в этот неблагоприятный период и повышайте её рентабельность!

Если ваша торговая система не базируется на новостных скачках, то бывает очень полезно для финансового и ментального здоровья останавливать работу советника перед выходом важных новостей. А после устаканивания волатильности, через нескольких часов, заново его включать. Хорошо, если у вас под рукой доступ к рабочему терминалу. А если нет? Вот тут и пригодится автоматизация такой деятельности.

Одним из вариантов решения нашей задачи является составление файла с расписанием важных событий. Чтение этого файла нашим экспертом, и определение когда можно работать, а когда нет. В учебнике MQL4 приводится пример работы с текстовым файлом csv, его то мы и возьмем за основу, попутно избавившись от пары ошибок, которые авторы допустили непреднамеренно или с целью проверки нашей внимательности (о чем они сами предупреждают — не следует слепо верить никому, ошибки бывают всегда).

Итак, составим расписание важных событий на следующей неделе в следующем формате:
Дата и время события;инструмент;описание события

2016.04.01 14:00;USD;Индекс деловой активности ISM в производственном секторе 2016.04.01 14:00;USD;Индекс постепенного разгона инфляции от ISM 2016.04.04 09:00;EUR;Индекс цен производителей (м/м) 2016.04.04 09:00;EUR;Индекс цен производителей (г/г) 2016.04.05 04:30;AUD;Решение Резервного Банка Австралии по процентной ставке 2016.04.05 04:30;AUD;Сопроводительное заявление Резервного Банка Австралии 2016.04.06 07:00;EUR;Заседание ЕЦБ 2016.04.06 18:00;USD;Протокол заседания Комитета по открытым рынкам ФРС США 2016.04.07 11:30;EUR;Сведения о заседании ЕЦБ по монетарной политике

Запишем его в файл ht-news.csv и разместим в нужной директории \MQL4\Files\ht-news.csv, откуда наш советник сможет его прочитать.

Вначале зададим внешние переменные для настройки, комментарии объясняют их назначение:

Extern string startNewsEvent="Ограничение работы по новостям"; input bool StopOnNewsEvent=true; //Включить ограничение input string NewsEventFileName="ht-news.csv"; //Файл с расписанием input uint LoadNewsEventTimerInDay=7;//Как часто в днях перезагружать файл input uint StopPriorEventHours=2; //Остановить за Х часов до события input uint StartAfterEventHours=3; //Запустить через Х часов после события extern string stopNewsEvent="----------------";

Следующая структура поможет нам получить доступ к описанию обрабатываемого события:

Struct NEWS_EVENT { datetime EventTime; //время наступления события string Instrument; //инструмент события string EventComment; //комментарий события };

Пользовательская функция чтения информации из файла

Bool LoadNews() { int handle; // Файловый описатель string instrument, // Название валюты события firstInstrument,secondInstrument, // 1я и 2я часть названия текущей пары eventComment, // Текст описания события stringDateTime; // Строковое выражение даты и времени события datetime eventDateTime; // Дата и время события в формате datetime handle=FileOpen(NewsEventFileName,FILE_CSV|FILE_READ,";");// Открытие файла if(handle<0) // Неудача при открытии файла { int lastError=GetLastError(); if(lastError==4103) // Если файла не существует, сообщим Alert("Нет файла с именем ",NewsEventFileName); else // При любой другой ошибке Alert("Ошибка при открытии файла ",NewsEventFileName," :",lastError); PlaySound("Bzrrr.wav"); // Громко ругнемся и вернем фалсе return false; } int cnt=0; while(FileIsEnding(handle)==false) { stringDateTime =FileReadString(handle);// Дата и время события instrument=FileReadString(handle); //Инструмент eventComment =FileReadString(handle);// Текст описания события, может не быть eventDateTime =StrToTime(stringDateTime); // Преобразование типа данных firstInstrument=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа secondInstrument=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа if(StringCompare(instrument,firstInstrument,false)!=0 && StringCompare(instrument,secondInstrument,false)!=0) { continue; //не наши инструменты } cnt++; ArrayResize(NewsEvent,cnt,1000); //изменяем размер массива с запасом для ускорения ArrayResize(NewsEventTime,cnt,1000); NewsEvent.EventTime= eventDateTime; NewsEvent.Instrument=instrument; NewsEvent.EventComment=eventComment; NewsEventTime=eventDateTime; //удобнее искать в одномерном массиве } FileClose(handle); // Закрываем файл ArraySort(NewsEventTime,WHOLE_ARRAY,0,MODE_ASCEND); //сортируем массив для последующего поиска return true; }

Поиск нужного времени осуществляем в массиве NewsEventTime, и если время найдено, то получим его описание их массива структуры NewsEvent

String GetEventInfo(datetime date) { for(int i=0;i

Вспомогательная функция для определения, попадает ли текущее время в промежуток простоя

//проверим, не нужно ли отключить советник по новости True -работаем False - отдыхаем bool CheckEnableNewsWork() { if (ArraySize(NewsEventTime)==0) return true; //по какой-то причине массив с расписанием оказался пустой, значит работаем //теперь нужно найти ближайшую дату в NewsEventTime перед которой нужно остановить работу за StopPriorEventHours часов datetime timeCurrent =TimeCurrent(); datetime timeStopWork=timeCurrent+StopPriorEventHours*3600; //Если в NewsEventTime есть время, меньшее timeStopWork, то прекращаем работать int dateindex=ArrayBsearch(NewsEventTime,timeStopWork,WHOLE_ARRAY,0,MODE_ASCEND); datetime foundEventTime=NewsEventTime; timeStopWork=foundEventTime-StopPriorEventHours*3600; //посчитаем время остановки от найденного времени datetime timeStartWork=foundEventTime+StartAfterEventHours*3600; //это время окончания отдыха //теперь проверим, находимся ли мы сейчас timeCurrent между timeStopWork и timeStartWork. Если да, то не работаем if (timeCurrent>=timeStopWork && timeCurrent<=timeStartWork) { DrawLabel("EnableNewsWork","Не работаем, новость: "+GetEventInfo(foundEventTime)+"",5,80,Red); return false; } else { DrawLabel("EnableNewsWork","Нормальная работа, новостей нет",5,80,Green); return true; } }

Для периодического чтения из файла с расписанием нам нужен таймер, запускаемый к примеру раз в неделю, как настроено

//Проверяем наличие файла с новостями по таймеру void OnTimer() { if (StopOnNewsEvent) { LoadNews(); //читаем файл } }

При инициализации советника нужно запустить таймер и первый раз прочитать новости

OnInit() .... if (StopOnNewsEvent) //Если задано, загрузим файл с новостями { bool tm=EventSetTimer(LoadNewsEventTimerInDay*86400); //запустим таймер для загрузки файла с расписанием if (!tm) Alert("EventSetTimer error:",GetLastError()); OnTimer();//Первый запуск сразу }

В каждом тике проверяем, можем ли мы открывать позиции. На трейлинг кстати это влиять не должно.

OnTick() .... bool enableNewsWork=true; //можно работать по новостным событиям if (StopOnNewsEvent) { enableNewsWork=CheckEnableNewsWork(); //Если ограничение по новостям, проверим время } if (HaveMoney && enableNewsWork) Traiding(Pairs); //проверка условий и открытие торговли по паре

Вот и все. К сожалению, на реальном счете я этот код пока не тестировал, так как писал в выходные, тики эмулировал таймером и текущее время, которое останавливается в выходные, менял вручную. Но на следующей неделе посмотрю уже в реале, в новой версии «Forex Grail 1.11 » , куда я и встроил вышеприведенный код.

В дальнейшем, возможно, нужно сделать удобную утилиту для формирования файла ht-news.csv, например в той же

Данный советник идеально подходит для тех, кто торгует по уровням и любым стратегиям использующим отложенные лимитные ордера. Советник выставит ордера в нужное время на нужном расстоянии от текущей цены! В настройках робота Вы можете задать стоп лоссы, тейк профиты ордеров, а так же лот каждого ордера. Все задается для каждого ордера в отдельности. Можно выставлять только бай лимит, или селл лимит, либо оба ордера вместе!

Советник готов работать на любом торговом инструменте, в любом торговлм терминале Metatrader 4. Так же робот готов работать на нескольких валютных парах сразу. То есть, Вы можете открыть любое количество пар и установить на них советник, задав каждому свой магик номер и настройки времени. После чего, каждая пара будет работать строго индивидуально. Если Вы до сих пор работаете с лимитными ордерами вручную, этот робот для Вас!

  • BUY_limit - Выставить ли ордер бай лимит.
  • Lot_buy_limit - Лот ордера бай лимит.
  • R_buy_limit - Расстояние от текущей цены до ордера бай лимит в пунктах.
  • Stop_Loss_buy_limit - Стоп лосс ордера бай лимит.
  • Take_Profit_buy_limit - Тейк профит ордера бай лимит.
  • SELL_limit - Выставить ли ордер селл лимит.
  • Lot_sell_limit - Лот ордера селл лимит.
  • R_sell_limit - Расстояние от текущей цены до ордера селл лимит в пунктах.
  • Stop_Loss_sell_limit - Стоп лосс ордера селл лимит.
  • Take_Profit_sell_limit - Тейк профит ордера селл лимит.
  • Slippage - Максимальное проскальзывание в пунктах.
  • Close_Orders - Закрытие второго ордера при открытии первого.
  • Times - Время жизни ордера в минутах.
  • Time_Start - Выставить ордера по времени?
  • Time_Hour - Час открытия ордеров 0-23
  • Time_Minute - Минута открытия ордеров 0 - 59. Например час = 5, минута 40, значит в 5.40 будут выставлены ордера от цены в тот момент.
  • Expert_I - магик номер для определения своих ордеров и мультивалютной торговли.

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

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

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

Торгуй по крупному только с ведущим брокером

Однако временной фактор зачастую и может быть сигнальной закономерностью, а трейдеру необходимо ее как-то реализовывать.

Естественно постоянно быть у монитора в определённое время с точностью до секунд для того чтобы открыть запланированную позицию не всегда представляется возможным.

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

Советник по времени OpenTime 2 – это целиком независимый торговый эксперт для торгового терминала МТ5, который позволяет реализовывать стратегии, основывающиеся на закономерности движения цены в определенное время суток.

Примечательной особенностью OpenTime 2 является тот факт, что функционал робота позволяет его сделать целиком независимым экспертом и находить закономерности движения цены на определённом активе с помощью оптимизации.

Таким образом, трейдер может создавать стратегии, завязанные на временных закономерностях, а также использовать его в качестве помощника для реализации своих идей, например, для открытия сделок, во время выхода новостей (торговля на ожиданиях).

Установка скрипта на график.

Первая версия советника по времени для торгового терминала МТ5 была разработана еще в 2017 году, однако функционал робота был настолько ограничен, что его можно было бы смело отнести к простым скриптам, нежели к полноценным роботам.

Однако после расширения функционала в 2018 году по рекомендациям многих трейдеров робот не только набрал популярности, но и две его версии было опубликовано в официальной библиотеке разработчиков МТ5.

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

Для установки советника через библиотеку произведите запуск вашего торгового терминала МТ5 и переместитесь в панель «Инструменты», где находится информация по вашим позициям и балансу.

Затем переместитесь во вкладку «Библиотека» и произведите простейшую сортировку, дабы в списке появились только советники.

После того как вы отсортируете список найдите в нем советник по времени OpenTime 2 и произведите его загрузку с помощью дополнительного меню как это показано на изображении ниже:

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

Для этого вам лишь понадобится в каталог терминала МТ5, а именно в папку Experts сбросить скачанный файл робота.

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

Применение советника по времени OpenTime 2

Как мы уже отмечали в самом начале статьи, советник по времени OpenTime 2 является помощником, который позволяет реализовывать стратегии на основе закономерности движения цены в определённое время суток.

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

Так в строках Use closing time interval и Closing time interval #2 вы можете дать разрешение на досрочное закрытие сделок по первому и второму временному интервалу, при этом время для каждого из интервалов закрытия можно задавать в строках Closing time interval 1,2.

Переменная Trailing stop позволяет активировать трелинг стоп , при этом шаг перемещения стопа указывается в строке Trailing step.

В переменных Trade on Monday – Friday вы можете запретить торговлю в определенный день недели, а в строках Opening start time interval и Opening end time interval задается временной промежуток, в течение которого должно произойти открытие позиции.

Переменная Duration in seconds отвечает за время удержание открытой позиции, а в строке Type of trade in time interval можно указать направление сделки, а именно на покупку либо продажу.

Переменная Volume transaction отвечает за торговый лот открываемого ордера, а в переменных StopLoss time interval и TakeProfit time interval можно указать профит и стоп приказ для вашей позиции.

В заключение стоит отметить, что советник по времени OpenTime 2 является более совершенным и автономным помощником, который позволяет реализовывать стратегии , базирующиеся на открытие позиций в определённое время суток.


© 2024
mamipizza.ru - Банки. Вклады и депозиты. Денежные переводы. Кредиты и налоги. Деньги и государство