Советники: eaTemplate

 

eaTemplate:

Код-шаблон советника, содержащий базовый набор функций, необходимых при создании стратегии.

В нем содержатся основные параметры и функции, необходимые при создании стратегии:

  • Расчет величины пункта для 3/5-значных пар;
  • Установка тэйкпрофита и стоплосса;
  • Задание идентификационного номера для позиций Magic number;
  • Возможность задания фиксированного объема позиции;
  • Функция мани менеджмента - расчет объема позиции, исходя из заданного процента от текущего баланса счета;
  • Возможность установки ордера в 2 этапа (установка ордера, а затем задание стопов) - работа на ECN - счетах;
  • Возможность открытия позиций в противоположную сторону от торгового сигнала;
  • Ограничение работы в зависимости от максимально заданной величины спреда;
  • Установка максимально возможного отклонения цены;
  • Установка ордеров в несколько попыток в случае неудачи (по умолчанию количество попыток=10);
  • Функция для расчета суммарной прибыли всех позиций советника в валюте;
  • Функция для закрытия всех позиций советника;
  • Вывод информации об ошибках в журнал.

Автор: Alexey Lopatin

 
Automated-Trading:

eaTemplate:

Автор: 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), как я предполагаю, возможно реализовать , отображение МА на графике, интереснее.

 
mobility-energy:

1. Для таких случаев достаточно MagicNumber, если Вы не храните какие-либо данные в глобальных переменных советника. После перезапуска советник автоматически подхватит свои ордера.

2. Для такого учета можно отбирать ордера либо по текущему символу, либо по полю комментарий (например, писать туда какое-либо кодовое слово, а советник через OrderComment() будет искать это кодовое слово). MagicNumber в таких случаях не работает (его нужно отключить).

3. Возможно. Как будет время, реализую в следующей версии.

4. Да, блок закрытия ордеров закрывает все рыночные позиции и удаляет все отложки.

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

По поводу отображения МА на графике почитайте вот https://docs.mql4.com/ru/chart_operations/chartapplytemplate

ChartApplyTemplate - Документация на MQL4
  • docs.mql4.com
ChartApplyTemplate - Документация на MQL4
 

"...По поводу отображения МА на графике

почитайте вот https://docs.mql4.com/ru/chart_operations/chartapplytemplate ..."

 

Спасибо, за комментарий и ссылку.

Касательно,ссылки я знаю о шаблоне/ах,

но мой вопрос был о другом варианте,

т.е. как полностью интегрировать МА и "рисование" на графике, в "тело" кода советника?

(старые статьи я прочитал, но спрашиваю, исходя что в настоящее время многоновых "веяний" в mq4/5,

возможно есть более гибкие решения, на ваш взляд?) 

Это нагружает советник, но в некоторых случаях это необходимо,

для принятия  правильного решения и быстрого анализа ситуации,

чтобы вовремя и корректно "подправить" работу самого советника в ручную,

если он делает техн.правильные, но логически некоректные действия. 

ChartApplyTemplate - Документация на MQL4
  • docs.mql4.com
ChartApplyTemplate - Документация на MQL4
 

 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

 
mobility-energy:

 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'а воспринимал как свои ?

Это на тот случай, если будет необходимо на графики (один торг.счёт) "вешать" разные по назначению советники. Было-бы очень практично.

Может есть возможность? конкретные решения? Как вы думаете? 

 
mobility-energy:

Спасибо за комментарий! Корректно!

Буду пробовать/проверять как на реале работает с 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). 

Причина обращения: