Советник Nonfarm payrolls для автоматической торговли на Forex
В начале января один их читателей блога, Олег Медведев, обратился ко мне с просьбой написать торгового советника, работающего исключительно на сильных новостях, например, как Nonfarm payrolls.
Не секрет, что многие трейдеры ждут такие сильные новости и торгуют на них путём выставления противоположных отложенных ордеров в надежде, что с выходом новости цена начнёт стремительно меняться так, что отложенная сделка не только откроется, но и быстро выйдет в прибыль. После этого второй отложенный ордер удаляется, а на отработавшем ордере можно либо зафиксировать профит, либо включить на нём автоматический трал с минимальным отставанием.
Преимущества такого способа торговли очевидны — за очень короткое время, зачастую меньше 1 минуты, трейдер может без особого риска наторговать едва ли не больше, чем за несколько дней и даже недель при обычном движении рынка. Олег предложил мне совместить скорость работы компьютера с торговлей на скоротечном движении рынка, результатом чего стал предлагаемый торговый советник.
Данный советник работает на любых валютных парах, которые вам доступны. Единственное отличие условий работы касается 5-ти значных торговых счетов, для корректной работы с ними параметры StartLevel и Tral необходимо увеличить в 10 раз.
Подготовка робота к торговле состоит из следующих шагов:
- В окне терминала открываете нужную вам валютную пару, или золото, или прочее.
- Из окна «Навигатор» тащите мышкой советник News_Non_Farm на окно графика, появляется окно настроек робота.
- В параметрах робота устанавливаете дату и время нужного события, то есть сильной новости.
- WaitingMinutes — время «жизни» отложенных ордеров в минутах.
- Choise — алгоритм вычисления объёма лотов: 5.1 Prots — процент от свободных средств для автоматического расчёта объёма открываемых сделок. 5.2 Lots — строгое количество лотов для объёма открываемых сделок.
- StartLevel — начальный уровень срабатывания отложенных ордеров.
- Tral — отставание цены от текущей во время новости.
Нажимаете Ок. Если вы всё сделали правильно, наверху справа появится улыбающийся смайлик, а наверху слева — уведомление о работе советника и таймер до указанного события.
Как работает данный торговый советник. Примерно за тридцать секунд до указанного вами времени робот открывает две отложенные сделки в противоположных направлениях.
Точное время может отличаться в том случае, если возникнет проскальзывание или другая техническая проблема. Цены открытия будут находиться на таком расстоянии от текущей цены, которое вы указали в параметре StartLevel, по умолчанию равно 8. В тот момент, когда начинает сильная новость, такая как Nonfarm payrolls, цена резко или падает, или поднимается, после чего один из отложенных ордеров становится открытой сделкой.
С этого момента робот начинает тралить эту сделку, то есть при каждом изменении цены в сторону открытия он передвигает стоплосс на расстояние Tral от текущей цены. Через какое-то время, примерно через 10-20 секунд при сильной волатильности, цена перестаёт двигаться в эту сторону, начинает возвращаться обратно и срабатывает стоплосс. Советник фиксирует прибыль и для второй отложки пересчитывает объём с учётом изменившегося депозита.
После этого, если цена возвращается до прежнего уровня, обычно это происходит тогда, когда новость недостаточно сильно повлияла на рынок, то советник может отработать по аналогичной схеме второй отложенный ордер. Но если с начала открытия отложенных ордеров прошло WaitingMinutes минут, то отложенный ордер удаляется.
Касательно параметров StartLevel и Tral необходимо иметь в виду следующее. Если вы установите StartLevel небольшим и по какой-либо причине новостная свеча не сразу двинется в одну сторону, а зацепит противоположный отложник, а потом уже двинется туда, куда надо, вы получите убыток по первой отложке. В этом случае советник также пересчитает объём лотов для второй отложки. Аналогично с параметром Tral, если вы укажете его небольшим, то ваша сделка может закрыться раньше в случае, если из-за ценового шума сработает стоплосс. С другой стороны, большие значения данных параметров уменьшают ваш потенциальный профит. Так что решайте сами!
После закрытия всех ордеров вы можете кликнуть по смайлику и ввести новую дату события.
Обратите внимание, что многие брокеры не любят скальпинг и торговлю на новостях, поэтому рекомендую регулярно выводить прибыль.
Автор статьи и советника, посетитель нашего блога — Айрат! За что ему отдельное спасибо!
Скачать советник News_Non_Farm (обновлено 1 апреля 2015)
Я хочу быть трейдером
Я хочу быть инвестором
Комментарии теперь в Telegram!Для удобства пользователей мы решили сделать группу в Telegram, где можно общаться и следить за новостями, пользуясь всеми преимуществами популярного мессенджера.
Посоветуйте нормальный брокер для торговли на новостях, плиз)
Актуально. У меня вообще какой-то бред. Ставлю на 15:30. Он пишет что начнет работу за 2 минуты до 15:30. Т.е. в 15:28. Грубо говоря если стоит время ожидания 2 минуты. Получается что робот не начнет работу вообще или не в то время. Странно другое, я поставил начало работы 15:32 (думал эти 2 минуты — все смотрю четко начнет работу вовремя) Но когда время подошло к 15:30, а робот писал что до начала работы его 30 сек — время исчезло и робот включился в 15:32. Пфф…
Нет, у меня с этим проблем не было, запускается правильно по времени… у меня стоит за 30 сек… так и есть. Нужно ставить тебе на указанное время выхода новости, а запустится он должен за две минуты
Максифорекс , максимаркетс, работает без проскоков вообще.
Добрый день! Попробовал на сегодняшних первых новостях по США. Советник открыл по две отложки в каждом направлении, через 2 минуты ни один из ордеров не удалился. Брокер Инста, центовый счёт.
Все правильно. Волатильности нет. Все уже до этой новости отработало.
Странно, я только что проверил, всё удаляется. Поставил 2 мин. Вот время обеих отложек: 1199970047 2015.01.15 15:48:38 buy stop 95.59 eurusd 1.1784 1.1776 0.0000 2015.01.15 15:50:50 1.1701 cancelled 1199970050 2015.01.15 15:48:38 sell stop 95.59 eurusd 1.1621 1.1629 0.0000 2015.01.15 15:50:55 1.1699 cancelled
Да, бывало у меня тоже по истекающему времени не удалялись
Пользовался версией, скачанной по ссылке из вчерашнего обсуждения (которая с доработанным счётчиком). Сейчас попробую заменю на версию из этого свежего архива.
Он разве изменен?
Файл в архиве в два раза увесистее по сравнению с тем, который я качал утром. И пропал вариант работы по проценту риска.
Стал весить больше
Стал весить больше потому, что добавил всевозможные сообщения об ошибках открытия ордеров.
Wakko, «И пропал вариант работы по проценту риска.» Дело в том, что я сегодня реализовал расчёт такого процента, но почему то он неправильно считает на 5-ти значном счёте Финама. На моём 4-х знаке Инсты нормально считает.
Немного поправил таймер. Был глюк — часы писались с секундами, хотя по моей задумке часы должны отображаться без минут и секунд, так сказать, грубый отсчёт. Минуты и секунды должны появляться в последний час. https://yadi.sk/d/vMnDvIY4drnrg
Может исключить суматоху из-за значности котировок?
int init() и далее…
Айрат, а возможно ли в программу внести такой же профит запрограмированный?
Какой профит? В смысле?
Я понимаю, что тейк профит, я не понимаю, чего вы хотите? Сформулируйте вопрос по другому.
Насчёт 5-т знака. Это действительно кому-то надо? Не, мне не сложно на самом деле, просто надо ли?
Как я понял, имеется ввиду не триал стоп, а фиксированный тейк. допустим если сработала отложка в бай, то заложить тейк профит 20 пунктов допустим.
Если вы на самом деле про обычный тейк при достижении определённого уровня цены, то я не буду его реализовывать, потому что это лишает всякого смысла изначальную идею — скальпить выстрел новости.
я думаю, что его возможно применять не только тогда, когда выходят новости… если есть небольшие, но стабильные колебания в рынке, можно тоже пробовать, но для этого нужен тейк для заработка, скажем небольших сумм… уже пытался)
Трейлинг поставьте который точно не отобъет и закрывайте вручную наздоровье. Это как вариант.
нет, нужен именно фиксированный тейк, так как колебания бывают резкие, и сразу же обратные, что выводит на минус, а при тейке и резком вылете свечи можно ухватить плюс..
Риски по-моему больше так получить либо лосс, либо недополучить прибыль. имхо.
Ряд вопросов все же есть. Народ хочет разобраться. Итак: 1) Цитата «Цены открытия будут находиться на таком расстоянии от текущей цены, которое вы указали в параметре StartLevel, по умолчанию равно 8.» вопрос — что такое это 8? величина расстояния в бп, см, литрах или еще чем то? Поясню, очень давно, лет 5-6 когда начинал торговать, тоже был умнее всех, ставил отложки вверх и вниз, отстопленные, даже если получал лося, то прибыль перекрывала некоторый убыток (имею ввиду новости дающие более 50 бп движения. При этом, непосредственно перед новостью и в первые секунды, движение (даже без проскальзываний) было +30 вверх и вниз, и даже помню случаи когда цепляло отложки на 35 бп от цены новости. Но я тогда был юн и наивен)))) Вот поэтому интересуюсь чему кратно 8 в настройках. Кстати, подозреваю и Трал со значением 7 чему то эквивалентен. Возможно, более дальние цели отложек, если можно будет понять их кратность в настройках позволят избегать лосей (как вариант) каждый выберет свое. 2) при ночном тесте демо на аусси в 2-30 по терминалу на 5ти значном счете робот открыл одну отложку на продажу (в итоге цена ушла вверх) верхняя стояла ручками на реальном счете. Робот открыл успешно отложку вниз, схватил 600 баксов минуса и успешно закрылся. В чем засада? Какова величина отложки от текущей цены в стандартных параметрах? 3) днем, пока все офигевали от 30 фигур падения франка, на 11 часовых по терминалу новостях по гейропе робот успешно открыл обе отложки, и так же удачно их закрыл не сработавшими. Все нормуль движухи не было. У терминала не был, глазами не видел, но в истории сделок обе есть, отмененные. значит все сработало, но…То есть работа нестабильна, если вспомнить ночной пшик по аусси. 4) касаемо 5ти знаков, да и 4х тоже, если не затруднительно, выложить на общее обозрение чему соответствует каждая цифра настроек робота (например чем 7\4 лучше 7\5 или хуже 10\10, при этом, сами видите какое обилие новичков, мозг не вставить, конечно, но простейшую табличку для настроек 4х и 5 значных счетов не мешало бы (просьба, не более), по моим наблюдениям за последние дни, что писать в настройках и что они значат большинство не понимает 7\4 или 70\40 да еще вместо 10\10 100\100 на пятизнаках. 5) в качестве бреда, возможность синхронизации по времени с временем терминала и точного отсчета до время Ч, многим трудно с часовыми поясами, хотя новости имеют свойство запаздывать, на минуту две, но это учтено временем жизни отложек. И в качестве пожелания, если автор сайта (Максим) не будет против устроить на всех нас подопытных кроликах тест, ибо данные у всех очень разнятся, кто то 500 баксов получает минус, кому то 10 в плюс уже за радость (ну от депо зависит), тем не менее, будет ясна общая картина и понятны проблемы робота, где он косячит и можно ли с этим что то сделать в дальнейшнем. А так, по всему, удачи вашему детищу, а всем еще раз хотел напомнить, святой грааль никто еще не придумал, есть более или менее толковые вспомогашки, но голову, анализ, фундамент и интуицию еще никто не отменял. Всем удачи и профитов…
Спасибо за пожелание удачи! ) Отвечаю по пунктам. Для меня немного странно, но ладно. 1. Что такое StartLevel и Tral в пунктах? Это те пункты изменения цены, которые видны в терминале для 4-х значного счёта. Возьмём его для примера. Пусть StartLevel=8, Tral=5. Робот за 30 сек до указанного времени открывает две противоположные отложки, взяв за основу текущую цену. Например, на момент начала работы советника курс EURUSD стал 1.1600. Робот открывает отложенный ордер на продажу, указав цену открытия 1.1600-8=1.1594. Робот открывает отложенный ордер на покупку, указав цену открытия 1.1600+8=1.1608. Если в момент вылета свечи во время новости цена превышает, например, уровень открытия покупки, то отложенный ордер становится открытым ордером, при этом стоп лосс устанавливается ниже текущей цена на величину Tral. Например, цена долетела до 1.1700 и тогда стоп лосс будет равен 1.1695. Цена упала до этого уровня, стоп лосс сработал. Как эти числа вы называте, я не знаю. Наверное, пипсы, минимальный шаг изменения цены. И конечно же, в реальности цены немного сложнее, есть Bid и Ask, есть спреды, все они создают дополнительные отклонения, но суть такая же. 2. Не знаю, в чём засада. Вы единственный, кто такое писал мне. Если ещё кто, напишите! Буду думать! 4. По величинам StartLevel и Tral вопрос непростой, совсем. Суть вот в чём. В идеале хочется, чтобы новость отрабатывалась так — пришло время новости, цена полетела сразу в одну сторону и начала бы отскакивать только через много пунктов/пипсов. Для такого случая StartLevel можно было бы ставить очень маленький, буквально 1-2 пункта, и Tral можно было бы такой же ставить, потому что чем раньше откроется сделка, тем выгоднее. А параметр StartLevel как раз и отвечает за то, сколько пунктов цена будет двигаться, прежде чем отложка станет открытой сделкой. Но в реальности реакция рынка может быть разной. Поэтому нужен какой-то признак того, что цена ровно пошла в одну сторону. Я принял за основу StartLevel=8 как признак того, что цена точно полетела в эту сторону. То же самое с тралом. В идеале, чем меньше трал, тем больше профит, но в реальности цена во время движения по новости обязательно будет чуть-чуть прыгать. Возникает дилемма. С одной стороны мы не знаем, как чётко полетит цена на новости, а с другой стороны мы точно знаем, что чем больше трал, то есть динамический стоп лосс, тем меньше профит. Скажем, сидят рядом два друга-трейдера. Один рисковый, а другой спокойный. Один поставил StartLevel=2, Tral=1, а второй поставил StartLevel=10, Tral=10. Вот пошла новость, началась движуха. Никто не знает, как изменится цена в данный момент и в какую сторону двинется дальше. Может случиться так, что сначала цена дёрнется наверх, а там у рискового трейдера сразу висит отложка на бай, тогда она станет открытой сделкой. Но в следующий момент цена начнёт двигаться вниз и это будет, например, основным движением. Тогда у этого рискового друга сначала сработает стоп лосс по покупку, а потом откроется отложка на селл и он начнёт работатать в прибыль. Но у него маленький трал и цена, пройдя 15 пунктов новости, вдруг метнулась на 2 пунтка вниз. Всё, сработает стоп лосс, советник отработал. Что происходило в этот момент у осторожного трейдера. Первые биения цены его никак не коснулись, потому что уровень открытия сделок у него далеко, аж 10 пунктов от начальной цены. И когда цена по пути вниз зацепила отложку и начала немного колебаться, но в целом также лететь вниз, открытый ордер также защищён, потому что стоп лосс ниже биений. В этом примере более осторожный трейдер получит больше профита, потому что, несмотря на то, что он зафиксирует прибыль не на самом верху новостной свечи, а как минимум на 10 пунктов ниже, всё равно в сумме это больше, чем у рискового трейдера. Я выбрал StartLevel=8 и Tral=5 просто как нечто среднее, что хорошо показало себя по последней истории. Однако, сам автор Олег Медведев рекомендует StartLevel=8 и Tral=5 как более прибыльные по более обширной картине по истории. Какие надо ставить параметры для каждой конкретной новости, я не скажу, и никто не скажет. 5. А с чем синхронизировать время? На новостных календарях, например, на инвестинге, одно время, у вас на компьютере другое время, а у терминала третье время. Скажем, у Инсты и Форекс4ю время отличается на 1 час. Предложите мне чёткий однозначный алгоритм, я реализую. Заметьте, я вам не предлагаю «возьмите код и сами меняйте чё надо» 😀 .
Кстати время жизни отложек влияет только на сами отложки. Если время в терминале стало больше указанного времени события, например, из-за проскальзывания, отложки вообще не откроются. Это защита от множественных срабатываний.
А какое у вас было пожелание в конце поста? Два раз прочитал, всё равно не понял ))).
И, конечно, я прекрасно понимаю, что грааль не изобрёл. Честное слово, как вижу, что по таймеру осталось 20-15 секунд, у самого сердце начинает стучать. Всё боюсь убыток поймать и слиться. 😀