Автокредиты. Акции. Деньги. Ипотека. Кредиты. Миллион. Основы. Инвестиции

Празднование дня финансово-экономической службы вооруженных сил российской федерации День финансиста 22 октября

Порядок предоставления служебного жилья военнослужащим

Локальные сметные расчеты (сметы)

Распределение затрат на примере ООО «Диана

Пособие на ребенка до 1.5 лет оформить. Кто может обратиться за услугой

Оценка экономической безопасности предприятия

Причины и виды безработицы

Как и зачем ведутся поиски нефти на шельфе?

Платежное поручение бланк образец скачать word

Методы и инструменты денежно-кредитной политики Операции на открытых рынках

Шесть последствий вашей серой зарплаты

Денежная реформа 1947. Денежные реформы в ссср. Реформа сразу после войны

Карты "детская" и "дошкольная"

Почему "взрываются" банки Через сколько взрываются банки с заготовками

Экономическая культура презентация к уроку по обществознанию (10 класс) на тему Сущность экономической свободы

Как ограничить время торговли Forex советников? Trade Scheduler - ограничение работы советника Установка и настройка эксперта

Сегодня речь пойдёт о роботе 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качиваний: 147)

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

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


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

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

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

Заключение.

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

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

Советник готов работать на любом торговом инструменте, в любом торговлм терминале 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 - магик номер для определения своих ордеров и мультивалютной торговли.

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

Одним из вариантов решения нашей задачи является составление файла с расписанием важных событий. Чтение этого файла нашим экспертом, и определение когда можно работать, а когда нет. В учебнике 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, например в той же

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

Решение проблемы - вспомогательный советник 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/

Вам также будет интересно:

Условия программы «Ветхое жилье»: переселение из аварийного и ветхого жилья по шагам
Переселение из ветхого и аварийного жилья – необходимая мера, направленная на...
Как ИП открыть расчетный счет в Сбербанке?
Расчетный счет необходим юридическим и физическим лицам для того, чтобы участвовать в...
Как и когда лучше продавать квартиру после вступления в наследство, налог, риски покупателя и продавца Жилье доставшееся по наследству
Для продажи унаследованной квартиры сначала следует официально вступить в наследство , а...
Важно новое страхование. Важно. Новое страхование Что со страховой компанией важно
Акционерное общество «Важно. Новое страхование» представляет собой достаточно стремительно...
Когда применяется правило пяти процентов по ндс
Финансисты напомнили, в каком случае у компаний есть право не вести раздельный учет сумм...