Автор: Alexey Lopatin
Понравилась ваша идея и реализация в коде!!!
хотел спросить ( и возможно-ли доработать?):
1. вариант критического отключения теминала (пропадание интернет.соединения, отключ.PC), достаточно MagicNumber, или нужно добавлять GV ??? ... чтобы после повторного включения (запуска терминала с советником), советник (по вашей eaTemplate) продолжал ранее начатую торговлю, а не начинал торговлю с начала?
2. как учитывать в eaTemplate, ордера открытые в ручную через панель терминала ? Нужно новый magic или на ваш взгляд есть др.решение?
3. возможно, как-то "прицепить" для отображения на графике, как comment или Label, инфо.строчки: MarginLevel, max-DrawDown , current-DrawDown, BUY-Lot-open, SELL-Lot-open, BUY-STOP-Lot-open,SELL-Lot-open, BUY-LIMIT-Lot-open, SELL-LIMIT-Lot-open ???
4. блок открытия/закрытия ордеров, отрабатывает все типы ордеров (и отложенных) ?
Отдельно, хотел спросить, по варианту отображения на графике MA (н.п. период=100) , т.е. советнику дя расчётов достаточно указания в коде условий МА, но для отображения линии МА (хотя-бы послед.100 баров) на графике(именно на графике, а не в отдельном окне индикаторов/осциляторов) нужна дополнит.функция и указание в коде на отображение. Может могли-бы подсказать, как это сделать/конкретно реализовать? Немного инфо.нашёл, но она устаревшая, а с новыми терминалами(МТ4.670), как я предполагаю, возможно реализовать , отображение МА на графике, интереснее.
1. Для таких случаев достаточно MagicNumber, если Вы не храните какие-либо данные в глобальных переменных советника. После перезапуска советник автоматически подхватит свои ордера.
2. Для такого учета можно отбирать ордера либо по текущему символу, либо по полю комментарий (например, писать туда какое-либо кодовое слово, а советник через OrderComment() будет искать это кодовое слово). MagicNumber в таких случаях не работает (его нужно отключить).
3. Возможно. Как будет время, реализую в следующей версии.
4. Да, блок закрытия ордеров закрывает все рыночные позиции и удаляет все отложки.
Это всего лишь шаблон с наиболее часто используемыми функциями при создании советника. Его задача - убрать часть рутинной работы при написании. Вы можете добавлять какие угодно функции и менять функции работы с ордерами по Вашему усмотрению.
По поводу отображения МА на графике почитайте вот https://docs.mql4.com/ru/chart_operations/chartapplytemplate
"...По поводу отображения МА на графике
почитайте вот https://docs.mql4.com/ru/chart_operations/chartapplytemplate ..."
Спасибо, за комментарий и ссылку.
Касательно,ссылки я знаю о шаблоне/ах,
но мой вопрос был о другом варианте,
т.е. как полностью интегрировать МА и "рисование" на графике, в "тело" кода советника?
(старые статьи я прочитал, но спрашиваю, исходя что в настоящее время многоновых "веяний" в mq4/5,
возможно есть более гибкие решения, на ваш взляд?)
Это нагружает советник, но в некоторых случаях это необходимо,
для принятия правильного решения и быстрого анализа ситуации,
чтобы вовремя и корректно "подправить" работу самого советника в ручную,
если он делает техн.правильные, но логически некоректные действия.
P.S. дублирую свой вопрос из англ.версии:
Спасибо за комментарий выше (и в русском варианте также!)
выше указанный блок (class orders_counter) "подсчитывает" ордера (pendigs orders) только со своим MagicNumber,
(или я не совсем понял, пожалуйста поправьте)
а, как сделать/добавить в этот блок, также "подсчёт" ордеров (pendigs orders),
которые дополнительно поставлены на график вручную, в этом случае у открытых вручную ордеров не присутствует MagicNumber, терминал их не указывает ?
Такая-же ситуация для BUY/SELL orders.
По общей логике(настоящая редакция EA-template ),
заложенной в EA-template все ордера открытые в ручную выпадают из торговли, т.к.терминал их не указывает MagicNumber !?
Как это поправить? , чтобы открытые вручную ордера (также и pendigs orders), "подхватывались" и управлялись в EA-template совместно дальше?
P.S. извините за "назойливость", но всё это обязательно нужно и важно для дальнейшего использования EA-template
P.S. дублирую свой вопрос из англ.версии:
Спасибо за комментарий выше (и в русском варианте также!)
выше указанный блок (class orders_counter) "подсчитывает" ордера (pendigs orders) только со своим MagicNumber,
(или я не совсем понял, пожалуйста поправьте)
а, как сделать/добавить в этот блок, также "подсчёт" ордеров (pendigs orders),
которые дополнительно поставлены на график вручную, в этом случае у открытых вручную ордеров не присутствует MagicNumber, терминал их не указывает ?
Такая-же ситуация для BUY/SELL orders.
По общей логике(настоящая редакция EA-template ),
заложенной в EA-template все ордера открытые в ручную выпадают из торговли, т.к.терминал их не указывает MagicNumber !?
Как это поправить? , чтобы открытые вручную ордера (также и pendigs orders), "подхватывались" и управлялись в EA-template совместно дальше?
P.S. извините за "назойливость", но всё это обязательно нужно и важно для дальнейшего использования EA-template
Вы можете установить orders_magic = 0, в таком случае MagicNumber не учитывается при подсчете. Таким образом, будут считаться все ордера, символ которых совпадает с символом графика.
Отложенные ордера классом orders_counter считаются. Например, для получения количества отложенных ордеров Buy stop нужно вызвать метод класса
get_orders_count()
с параметром OP_BUYSTOP:
orders_counter trades_counter(0 Symbol(), MODE_TRADES); trades_counter.refresh_data(); int buy_stops = trades_counter.get_orders_count(OP_BUYSTOP);
В шаблоне функция orders_count() считает и рыночные, и отложенные ордера. Для того, чтобы советник считал вручную открытые ордера, нужно немного изменить функцию orders_count(), а именно удалить фильтрацию по MagicNumber. Таким образом функция приобретет вид:
int orders_count() { int orders_total = OrdersTotal(), count = 0; for( int i = 0; i < orders_total; i++ ) { if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) { if( OrderSymbol() != Symbol() ) continue; count++; } } return(count); }
Спасибо за комментарий! Корректно!
Буду пробовать/проверять как на реале работает с MagicNumber=0
Интересно, а нельзя каким нибудь образом "завязать" два MagicNumber
один для "вручную" MagicNumber=0 открываемых ордеров и н.п.MagicNumber=12345 для советника,
и чтобы он эти два MagicNumber'а воспринимал как свои ?
Это на тот случай, если будет необходимо на графики (один торг.счёт) "вешать" разные по назначению советники. Было-бы очень практично.
Может есть возможность? конкретные решения? Как вы думаете?
Спасибо за комментарий! Корректно!
Буду пробовать/проверять как на реале работает с MagicNumber=0
Интересно, а нельзя каким нибудь образом "завязать" два MagicNumber
один для "вручную" MagicNumber=0 открываемых ордеров и н.п.MagicNumber=12345 для советника,
и чтобы он эти два MagicNumber'а воспринимал как свои ?
Это на тот случай, если будет необходимо на графики (один торг.счёт) "вешать" разные по назначению советники. Было-бы очень практично.
Может есть возможность? конкретные решения? Как вы думаете?
Да, возможно необходимо просто доработать функцию подсчета количества ордеров и вставить туда что-то вроде:
order_magic = OrderMagic(); if( order_magic == Magic || order_magic == 0 ) { //... }
ok! Спасибо за комментарий !
Буду пробовать/экспериментировать.
P.S. по вашему совету: с MagicNumber=0, РАБОТАЕТ !!!
Осталось разобраться(поэкспериментировать), как получится с обоими (=0 и =1234).
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
eaTemplate:
Код-шаблон советника, содержащий базовый набор функций, необходимых при создании стратегии.
В нем содержатся основные параметры и функции, необходимые при создании стратегии:
Автор: Alexey Lopatin