Oxy
..ιllιlι.lι.ιllι.ιlι..

 
Уровень 19

  Торгую в компаниях:


Группа "Кодоводство"

Рейтинг 128



РЕКОМЕНДУЮ



Пишем сами советник для MT4 (или MetaEditor против Exсel)

Этот топик — это ответ на статью Kaur-a Excel-прототипирование торговых систем: быстрый старт. На мой взгляд, программирование в Excel-е не менее сложное занятие, чем в MetaEditor-е для терминала MT4. И проще и логичнее сразу учиться свои идеи проверять не в Excel-е, а в терминале с помощью советника.

Торговая идея, которую проверяет Kaur:
рынок чаще идет в противоположную сторону относительно предыдущего дня.
Возьмем её за основу и поэтапно запрограммируем по ней советника для MT4.

Открываем MetaEditor и нажимаем кнопку «создать».


Создаем советник, пусть будет у него имя DAY_EA.

Еще пару раз нажимаем «далее» и «готово», пока не вникая, что нам предлагают.

Перед нами появилось окно с кодом.


Итак, наша идея схематично:


Нам надо один раз в начале дневной свечи проверять условие и открывать сделку.
С этим хорошо справится Time[0] — который возвращает время открытия бара. Ноль — это текущий бар. В терминале текущий бар — нулевой (0), предыдущий — 1, перед предыдущим — 2 и т.д.


Итак, если время открытия бара изменилось, значит — это новый бар.


Теперь дописываем условие в OnTick:


Продавать и покупать мы будем с помощью функции OrderSend:
OrderSend(валютная пара, BUY или SELL, лот, цена открытия ордера, проскальзывание, цена стопа, цена профита, комментарий, магик советника);



Итак, что мы запрограммировали? У нас на каждой новой свече будет открыта сделка. Надо теперь подумать над закрытием, чтобы прогнать нашу идею в тестере стратегий. У Kaur-a это будет освещено в следующей статье. Мы же закончим наш советник здесь.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Предлагаю вариант закрытия сделки:
сделка, открытая вначале дня, закрывается в конце дня после 22:00.


Допишем наш код:

Были использованы функции: OrderSelect, OrderCloseTime, OrderClose.

Нажимаем на кнопку «компилировать», чтобы появился файл ex4. И прогоняем наш советник в тестере:



А неплохие результаты!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Сам советник: DAY_EA.mq4 (5 Kb) DAY_EA.ex4 (6 Kb)

Внимание! Данный советник — как обучающий пример, поэтому использовать его рекомендую только в тестере. Чтобы его использовать на демо или реале, его еще надо дописать.

P.S. Нужен программист? Пишите в личку — подскажу, какие идеи возьмусь реализовывать и почём.
Также пользователи от 3-го уровня могут обращаться в "Стол заказов".
  • +32
  • Просмотров: 1221
  • 13 октября 2017, 03:21
  • Oxy
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Кодоводство", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
03 октября 2017

Комментарии (43)

+
+1
*good* 
avatar

  8  Nadejda-stav Сообщений: 112

  • 13 октября 2017, 08:49
+
+1
Данный советник — как обучающий пример, поэтому использовать его рекомендую только в тестере. Чтобы его использовать на демо или реале, его еще надо дописать.

А какие дописывания нужны для реала и даже демо? Ну просто на словах, в чем там дело? В какой-нибудь безопасности сделок может?
avatar

  4  hinin Сообщений: 88

  • 13 октября 2017, 12:11
+
+2
1) Закрытие в примере упростила — советник запоминает тикет и потом после 22:00 по нему закрывает. Но в жизни мы случайно терминал можем закрыть, или график переключить, или еще чего-нибудь. И в итоге номер тикета в советнике не сохранится. Поэтому лучше перебирать все открытые ордера на данной валютной паре по магику советника и их закрыть.
2) Не встречала брокера, который в полночь, на начале новой свечи позволит открыть сделку. (Может такие брокеты и есть.) А в советнике не проверяется — была открыта сделка или нет. Дается один раз команда на открытие и все — уже до следующего дня ждет.
3) Переменные, такие как лот, магик и другие — по-хорошему надо вынести во входящие.

Целью данной статьи было показать, что для тестера можно достаточно быстро написать несложный код. Чтобы просто проверить свою идею.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 13 октября 2017, 12:36
+
0
Это ценное дополнение. Спасибо.
avatar

  4  hinin Сообщений: 88

  • 13 октября 2017, 12:42
+
+2
Эксель проще все равно выглядит для тех, кто в программировании не шарит.
Плюс там больше информации для обучения и формулы не такие и сложные.
А в mql все таки порог вхождения выше по сложности.
avatar

  10  idarvel Сообщений: 129 - ♫♪♫♪

  • 13 октября 2017, 15:24
+
0
И чем он поможет, если надо проанализировать несколько индикаторов? Формулы индикаторов в эксель заносить? А в mql4 это несколько строк.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 13 октября 2017, 15:38
+
+1
А что, разве проще выучить mql ради теста пары индикаторов?
avatar

  10  idarvel Сообщений: 129 - ♫♪♫♪

  • 13 октября 2017, 21:34
+
0
Ответ кроется в степени желания самому тестировать
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 13 октября 2017, 23:17
+
0
ответ по моему очевиден и так и никак не зависит от желания.
проще потратить неделю и протестировать свое чудо в экселе, где ты все понимаешь шаг за шагом.
чем пару месяцев изучать mql и на нетвердых ногах пытаться написать эти пару строчек, которых на самом деле становится в итоге больше, а также учитывать всякую остальную шляпу, да и зачем в конце концов?
Когда в экселе будет все понятно и просто и времени меньше.

И одну из главных ролей будет играть комьюнити и количества материала.
Под эксель запросто любой уровень в любом месте и в соотв. форумах быстро отвечают, плюс от самих разработчиков очень подробные описания всего со скриншотами и видео.
А mql иное дело. Всем будет лень учить с азов новичка, будут тыкать в поисковик, где на самом деле не так и много актуальной информации, т.к. все потихоньку изменилось. Также лучше сразу использовать best practices, которых опять же нет. Ну навалишь ты кучу кода — копипаста в итоге и будешь разгребать по полдня. К тому моменту плюнешь уже давно на свой индикатор.
Редактирован: 14 октября 2017, 00:47
avatar

  10  idarvel Сообщений: 129 - ♫♪♫♪

  • 14 октября 2017, 00:43
+
0
проще потратить неделю и протестировать свое чудо в экселе
Если ваше чудо состоит из показаний индикаторов Stochastic, Force Index и MA. Как вы это собираетесь тестировать в Excel?
да и зачем в конце концов?
mql — это инструмент трейдинга. Почему бы хотя бы основы не изучить?
Под эксель запросто любой уровень в любом месте и в соотв. форумах быстро отвечают, плюс от самих разработчиков очень подробные описания всего со скриншотами и видео.
А mql иное дело. Всем будет лень учить с азов новичка, будут тыкать в поисковик, где на самом деле не так и много актуальной информации, т.к. все потихоньку изменилось.
По mql4 полно информации, видео. Пошаговой доступной информации.
Обучающие статьи по mql4.
Видеокурсы mql5. Если порыться, и для mql4 есть.
Пошаговый полный курс по mql4.
Плюс по скайпу учат за почасовую оплату.
На форуме если нормально спрашивать, показывать код, который не получается — никто никуда не посылает, помогают.

Меня другое удивляет, что со мной спорите именно вы, idarvel — насколько я помню, вы то знаете mql4.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 14 октября 2017, 01:17
+
0
В Excel-е ты ограничен возможностями Excel-я и, конечно, своими знаниями его.
А в MetaEditor ты ограничен только своими знаниями mql. Но нет ограничения в возможностях.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 14 октября 2017, 01:44
+
+1
Спорю с позиции обычного человека далеко от программирования, т.к. знаю трейдеров которым в принципе не хочется и не нужно знать ЯП чтобы торговать, но иногда хочется все же протестировать свои идеи.
Учиться хорошо, но по прежнему настаиваю на том, что все эти курсы в целом темный лес, который можно проходить только поставив себе цель и большое желание.
Возможностей больше да и более того результаты точнее и можно даже учитывать некоторые факторы рынка и т.д.
Но суть в том, что зная уже ЯП легко рассуждать как на нем все прекрасно и легко :) 
avatar

  10  idarvel Сообщений: 129 - ♫♪♫♪

  • 14 октября 2017, 18:38
+
+2
Полностью согласен.
Для обычного человека, не знакомого с программированием ступор настанет сразу после:
Перед нами появилось окно с кодом.

Excel куда проще.
Ну а про курсы смеялись даже мои носки в углу :D 
P.S. Статья годная, но не для новичка. Это что то типа:
avatar

  14  pacak Сообщений: 439 - варвар Andre

  • 14 октября 2017, 19:04
+
0
Даже картинки было лень рассматривать? Только первую и вторую у меня глянул? В Excel-е проще проверить стратегию по 3-м индикаторам Stochastic, Force Index и MA? Да большинство даже формул этих индикаторов не знают.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 14 октября 2017, 20:51
+
+1
Формулы узнать проще простого, тут не нужен ни эксель, ни mql, а только голова.
Еще раз — для тех, кто не знаком и не хочет пользоваться mql всегда будет выбор на другие инструменты в том числе эксель, которые не требуют предварительной подготовки.
Остальные действия не такие и сложные, как добыть котировки, загрузить их, сделать формулы и не требуют никаких специфических знаний.
Статья годная для новичков, которые только изучают mql и поможет им в чем-то, но глупо делать версус на этом.
avatar

  10  idarvel Сообщений: 129 - ♫♪♫♪

  • 14 октября 2017, 21:27
+
0
Статья годная для новичков, которые только изучают mql и поможет им в чем-то, но глупо делать версус на этом.
Ну если вы и правда думаете, что статья для этого 8-) 
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 октября 2017, 03:00
+
0
темный лес, который можно проходить только поставив себе цель и большое желание.
А для того, чтобы разобраться, как проверить свою стратегию в Excel-e, цели и желания не нужно? Разобраться, как закачать котировки, разобраться, на основании каких формул считаются индикаторы, самим построить формулы. И главное! Не проверить — а правильно ли все сделал. Вообще это не проверить!
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 14 октября 2017, 21:04
+
0
Здравствуйте. Я хотел у вас спросить. А можно как то поменять в советнике функцию OnTick, так чтоб советник работал не на каждом тике, а скажем через 10 тиков, и так чтобы можно было самому прописать количество тиков?
avatar

  12  beton2011 Сообщений: 809

  • 15 октября 2017, 18:00
+
0
В самой функции OnTick подсчитывать тики. И запускать код через каждые 10.
Есть функция OnTimer: периодичность наступления события по времени.
Есть функция OnChartEvent: кнопку на графике нажали или еще какое событие случилось.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 октября 2017, 18:59
+
0
Надо именно подсчет тиков.

Если вам не трудно, скажите как это сделать.
avatar

  12  beton2011 Сообщений: 809

  • 15 октября 2017, 19:20
+
0
вот:
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 октября 2017, 19:29
+
0
Спасибо вам, буду пробовать :) 
avatar

  12  beton2011 Сообщений: 809

  • 15 октября 2017, 19:33
+
0
Не знаю насчёт экселя, но MQL — простейший и прозрачнейший язык для интерпретатора.
У меня получилось так. Заинтересовал простой советник открывавший bay выше MA и sell ниже. Автор дорабатывать его не захотел. Тогда я взял исходник этого советника и нескольких других советников и через месяц у меня уже был комбайн в котором: добавлен фильтр по MA с большим периодом или другим TF, фильтр по 3 Level Semafor, тралл ордеров, закрытие по профиту bay sell all, локирование позиций, перекрытие дальних убыточных ордеров и т.д…
Для этого понадобилась лишь голова и справка метаэдитора.
avatar

  1  AlGriS Сообщений: 12

  • 17 октября 2017, 16:34
+
0
И вы искренне полагаете, что это применимо ко всем? Вот прямо любой берет и делает себе комбайн в MQL? <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
MQL — это обычный язык. Не сложный, но и не простой. Его можно определить, как язык с сиподобным синтаксисом + библиотека трейдерских функций. Чтобы считать работу с ним возможным, необходимо хоть немного иметь программерское мышление, достаточно иметь опыт в любом языке (признайтесь, имеете такой опыт?). Подавляющее число людей далеки от всего этого.
Редактирован: 17 октября 2017, 17:23
avatar

  37  Bishop Сообщений: 5173 - АЛЬФАСАМЕЦ-Машковод

  • 17 октября 2017, 17:21
+
0
Да, я полагаю, что это применимо ко всем, кто в течение жизни заботится не только о своем теле, о своей диете, о своей изворотливости в жизни, но ёще не забывает тренировать свой мозг, так как он тоже орган человеческого тела и деградирует без тренировки.
А если мозг у человека не тренирован, то что ему делать в трейдинге, кроме как отдавать кому-то свои деньги.
Кстати трейдинг, освоение MQL — это и есть тоже тренировка мозга.
Да, забыл ответить, что опыт имел до этого лишь Exel, Access — но тоже самоучка.
Редактирован: 17 октября 2017, 17:36
avatar

  1  AlGriS Сообщений: 12

  • 17 октября 2017, 17:32
+
0
А если мозг у человека не тренирован, то что ему делать в трейдинге, кроме как отдавать кому-то свои деньги.

90% людей делать в трейдинге как раз и нечего. Осталось только им всем это сказать. Начать можно со Стола Заказов и заставить всех на входе перед заказом делать какой-нибудь прототип своего советника <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp;  А большинство этих людей, кстати, плюсовали топик. Ну просто за халявный советник.

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

Да, забыл ответить, что опыт имел до этого лишь Exel, Access — но тоже самоучка.

Опыт Exсel и тем более Access — это тоже вполне себе нормальный предварительный опыт. Самоучка или нет, не имеет значения. Более того, программист обязан иметь навыки самоорганизации и самообразования.
Редактирован: 17 октября 2017, 18:10
avatar

  37  Bishop Сообщений: 5173 - АЛЬФАСАМЕЦ-Машковод

  • 17 октября 2017, 18:05
+
+1
Охy, спасибо огромное!!!
avatar

  6  maksGruv Сообщений: 122

  • 13 октября 2017, 17:24
+
+1
Хорошая статья, надо собраться, детально изучить *good* 
avatar

  10  cerber04 Сообщений: 321

  • 14 октября 2017, 01:47
+
+1
Хорошая статья.
avatar

  14  oyama Сообщений: 298 - Александр

  • 15 октября 2017, 16:51
+
0
Хорошо бы проверить результаты исполнения OrderSend, OrderClose и, хотя бы, вывести на печать _LastError.
И совсем не понятно упоминание про excel…
Редактирован: 15 октября 2017, 17:53
avatar

  4  work2it Сообщений: 42 - Сергей

  • 15 октября 2017, 17:52
+
0
Хорошо бы проверить результаты исполнения OrderSend, OrderClose и, хотя бы, вывести на печать _LastError

Ответ можете найти выше в 3-м комментарии:
Целью данной статьи было показать, что для тестера можно достаточно быстро написать несложный код. Чтобы просто проверить свою идею.

И совсем не понятно упоминание про excel…
Ну про это уже совсем в начале статьи.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 15 октября 2017, 18:55
+
0
А можно сделать еще один вариант советника в противоположную сторону, чтобы ордер открывался по тренду? А то я решил советника испытать на рендж-барах и кривая доходности в противоположную сторону пошла. В экселе правда тоже в минуса. А вдруг получится в плюс?
avatar

  3  sledopyt Сообщений: 45

  • 25 октября 2017, 19:21
+
+1
то что вы перевернете сделки редко когда помогает изменить общую картину при подобной торговле.
avatar

  10  idarvel Сообщений: 129 - ♫♪♫♪

  • 25 октября 2017, 19:49
+
+1
А можно сделать еще один вариант советника в противоположную сторону, чтобы ордер открывался по тренду?
Вот это местами поменять и скомпилировать:


P.S. Еще раз предупреждаю, что данный советник только для тестера.
Редактирован: 25 октября 2017, 20:16
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 октября 2017, 20:15
+
0
И совсем не понятно упоминание про excel…

Потому что первичным является этот топик — excel.opentraders.ru/41681.html
avatar

  37  Bishop Сообщений: 5173 - АЛЬФАСАМЕЦ-Машковод

  • 15 октября 2017, 18:55
+
+1
В экселе поменял направление по тренду и кривая сначала пошла в плюс, а потом в конце снова вернулась в минуса. Теперь надо что-то оптимизировать.
Редактирован: 25 октября 2017, 19:25
avatar

  3  sledopyt Сообщений: 45

  • 25 октября 2017, 19:19
+
0
Эксель — это к Kaur-у: excel.opentraders.ru/41681.html
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 октября 2017, 20:17
+
0
Поменял местами эти строчки и со второго раза получилось перенаправить советника по тренду. Однако результат улучшился не на много. Все равно кривая движется в минуса. Надо что-то придумать дополнительно, скрестить по тренду и против тренда.

avatar

  3  sledopyt Сообщений: 45

  • 25 октября 2017, 21:06
+
0
Вы специально на таймфрейме M5 тестируете? Суть данной стратегии для Daily свечей.
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 октября 2017, 21:13
+
0
Это у меня график рендж-баров с длиной бара по 40 пунктов, что находится примерно на уровне между Н4 и Д1. Думал, что получится положительный результат, но пока не сложилось.
avatar

  3  sledopyt Сообщений: 45

  • 25 октября 2017, 21:59
+
0
Есть отличие от графиков ренко?
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 октября 2017, 22:10
+
+1

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

Редактирован: 25 октября 2017, 22:26
avatar

  3  sledopyt Сообщений: 45

  • 25 октября 2017, 22:26
+
0
понятно, спасибо
avatar

  19  Oxy Автор Сообщений: 3043 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 октября 2017, 23:27

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари

 
Как начать: открываем первую торговую сделку за 7 шагов →