Модуль TemplateDealCondition.mqh



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

На данном этапе следует определить:

  • Какой торговый инструмент будет использоваться?
  • Какова точность торгового инструмента и какое значение для параметра проскальзывания следует установить?
  • Какие значения по умолчанию следует установить для Stop loss и Take profit?
  • Какие сведения о сделках следует ещё включить в статические массивы?
  • Как торговая система будет осуществлять управление капиталом (функция GetLots)? Какие значения по умолчанию следует установить для внешних переменных LotDeal и Prots?
  • Следует ли добавить особые процедуры в обработку или контроль сделок?

 

Внешние переменные:

Обозначение параметра Название параметра Значение по умолчанию
1 LotDeal Устанавливаемое количество лотов. 0
2 Prots Часть от свободных средств. 0
3 Slippage Параметр проскальзывания в пунктах. 5
4 StopLoss Stop loss. 0
5 TakeProfit Take profit. 0
6 Expiration Срок истечения отложенных ордеров. 0

 

  1. LotDeal

Фиксированное количество лотов, устанавливаемое перед запуском советника. Все сделки, заключаемые советником, открываются именно с этим значением количества лотов. Если LotDeal = 0, то в действие вступает прогрессивное вложение средств с помощью переменной Prots.

 

  1. Prots

Часть от свободных средств, которая вкладывается в торговлю каждый раз при заключении сделки. Если Prots = 0, то каждый раз вкладывается фиксированная часть средств в размере минимального лота.

 

  1. Slippage

Параметр проскальзывания в пунктах используется при заключении и выхода из сделок. И означает максимально допустимое отклонение цены для рыночных ордеров на покупку или продажу. Т.е. если запрашиваемая цена присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон [price - slippage; price + slippage]. По умолчанию равен 5 пунктам. Если возникают ошибки при заключении или выхода из сделок советником, этот параметр имеет смысл увеличить.

 

  1. StopLoss

Значение stop loss для открытой позиции в пунктах. Если это значение равно 0, то StopLoss не устанавливается.

 

  1. TakeProfit

Значение take profit для открытой позиции в пунктах. Если это значение равно 0, то TakeProfit не устанавливается.

 

  1. Expiration

Срок истечения для отложенного ордера в виде конечной даты.

 

Статические переменные:

Обозначение параметра Название параметра
1 CounterDeal Счётчик сделок. Увеличивается на 1 при срабатывании условий на заключение сделки.
2 CounterDealBuy Счётчик сделок Buy. Увеличивается на 1 при срабатывании условий на заключение сделки на buy.
3 CounterDealSell Счётчик сделок Sell. Увеличивается на 1 при срабатывании условий на заключение сделки на sell.
4 IndexDeal Количество открытых сделок. Увеличивается на 1 при открытии сделки. Не уменьшается. Контролирует размер массивов сделок.
5 IndexDealBuy Количество открытых сделок Buy. Увеличивается на 1 при открытии сделки на buy. Уменьшается на 1 при закрытии сделки на buy.
6 IndexDealSell Количество открытых сделок Sell. Увеличивается на 1 при открытии сделки на sell. Уменьшается на 1 при закрытии сделки на sell.
7 IndexPeriodDeal Количество открытых сделок за период. Увеличивается на 1 при открытии сделки. Обнуляется при очередном обновлении периода.
8 IndexPeriodDealBuy Количество открытых сделок Buy за период. Увеличивается на 1 при открытии сделки на buy. Обнуляется при очередном обновлении периода.
9 IndexPeriodDealSell Количество открытых сделок Sell за период. Увеличивается на 1 при открытии сделки на sell. Обнуляется при очередном обновлении периода.
10 ArrayConclusionDealBuy Массив условий заключения сделок на покупку. Должны выполниться все условия.
11 ArrayConclusionDealSell Массив условий заключения сделок на продажу. Должны выполниться все условия.
12 ArrayPendingDealBuy Массив условий заключения отложенных сделок на покупку. Должны выполниться все условия.
13 ArrayPendingDealSell Массив условий заключения отложенных сделок на продажу. Должны выполниться все условия.
14 ArrayControlDeal Массив условий выхода из сделок. Должны выполниться все условия.
15 ArrayControlPendingDeal Массив условий удаления отложенных ордеров. Должны выполниться все условия.
16 ArrayIndicator Массив текущих значений индикатора.
17 ArrayDealTicket Массив тикетов (идентификаторов) открытых и уже отработанных сделок.
18 ArrayDealPrice Массив цен сделок.
19 ArrayDealTrellingSL Массив цен для Trelling Stop Loss.
20 ArrayDealTrellingTP Массив цен для Trelling Take Profit.
21 ArrayDealStopLoss Массив значений Stop Loss для сделок.
22 ArrayDealTakeProfit Массив значений Take Profit для сделок.

 

Функции:

Название Описание Параметры
1 GetLots Возвращает количество лотов для торговли. Функция управления капиталом. -
2 InitConclusionDeal Инициализация условий заключения сделок. -
3 InitControlDeal Инициализация условий выхода из сделок. -
4 ConclusionDeal Обработчик сделок. Возвращает ticket выставленной сделки, 0 или -1 в случае ошибки. Pending – режим отложенных ордеров (true / false).
5 ControlDeal Контроль сделок. Возвращает true, если данная сделка закрылась (или удалился данный отложенный ордер) или false в противном случае. ticket – идентификатор сделки. Pending – режим отложенных ордеров (true / false).

 

Модуль TemplateIndicator.mqh

В этом модуле осуществляется инициализация, расчёт и деинициализация индикаторов. Текущие значения индикаторов записываются в глобальный массив ArrayIndicator. Значения индикаторов используются для задания условий заключения и выхода из сделок. В торговой системе могут использоваться один или несколько индикаторов, могут рассчитываться некоторые их значения (часть из принятых значений). В этом модуле объявлены глобальные переменные для обновления периода и несколько внешних переменных. Все включаемые в систему внешние переменные, по большей части, нужно писать сюда.

Также в этом модуле имеет смысл подключать основные DLL-библиотеки, если они будут использоваться.

На данном этапе следует определить:

  • Как будет формироваться период торгового инструмента? Будет ли он стандартным (M1, M5, M15, M30, H1, H4, D1, W1, MN) или комбинированным (сложным, нестандартным)?
  • Какие внешние переменные следует задать для торговой системы?
  • С какой периодичностью будут рассчитываться значения индикатора (каждый раз или вместе с периодом торгового инструмента)?
  • Какую роль будут выполнять индикаторы в торговой системе (для заключения сделок или для выхода, основную или вспомогательную роли)?
  • По какому алгоритму будут рассчитываться индикаторы?
  • Какие особенности имеются в алгоритме расчёта?

 

Внешние переменные:

Обозначение параметра Название параметра Значение по умолчанию
1 Sanction Разрешение на торговлю. true
2 ValPeriod Сложный период. 1
3 TimePeriod Период графика в минутах. 60
4 TypeTime Используемое настоящее время. TIME_CURRENT

 

  1. Sanction

Параметр, разрешающий советнику торговать (заключать сделки).

· False – запрет на заключение сделок.

· True – разрешение на заключение сделок.

 

  1. ValPeriod

Параметр сложного периода, составленного из простого или стандартного периода TimePeriod отображения баров на графике. Задаётся для построения сложных периодов графика. Равен 1, если используется один из стандартных периодов: M1, M5, M15, M30, H1, H4, D1, W1, MN.

 

  1. TimePeriod

Период графика, выраженный в минутах. Отражает значение текущего периода графика. В советнике используются стандартные значения для этого параметра:

· 1 – график M1 (1 минута).

· 5 – график M5 (5 минут).

· 15 – график M15 (15 минут).

· 30 – график M30 (30 минут).

· 60 – график H1 (1 час).

· 240 – график H4 (4 часа).

· 1440 – график D1 (1 день).

· 10080 – график W1 (1 неделя).

· 43200 – график MN (1 месяц).

 

  1. TypeTime

Тип используемого в торговой системе времени. Используется функцией GetTime. Может быть одним из типов:

· TIME_CURRENT = 0 – последнее известное время сервера.

· TIME_LOCAL = 1 – локальное компьютерное время.

· TIME_OPEN = 2 – время открытия последнего бара.

 

Статические переменные:

Обозначение параметра Название параметра
1 Refresh Количество баров (периодов) от теоретического начала времени.
2 Iter_Refresh Количество обновлений периода.
3 bl_Refresh Флаг обновления периода.

 

Функции:

Название Описание Параметры
1 InitIndicator Инициализация индикатора (прописывается в функции init). -
2 Indicator Функционирование индикатора (прописывается в функции start). -
3 DeinitIndicator Деинициализация индикатора (прописывается в функции deinit). -

 

Модуль TemplateDeal.mqh

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

· ArrayConclusionDealBuy и ArrayConclusionDealSell – условия для заключения сделок на buy и на sell соответственно.

· ArrayPendingDealBuy и ArrayPendingDealSell – условия для выставления отложенных ордеров на buy и на sell соответственно.

· ArrayControlDeal – условия на выход из сделок.

· ArrayControlPendingDeal – условия на удаление отложенных ордеров.

Инициализация этих массивов в значение false происходит в модуле TemplateDealCondition.mqh. В данном модуле конкретному условию выставляется значение true в соответствующем массиве, чтобы оно было учтено. Если все условия выполняются, то сделка на покупку или продажу срабатывает. Размеры массивам задаются в модуле TemplateDealDefine.mqh.

На данном этапе следует определить:

  • Каким образом связать конкретные условия с их содержанием? Т.е. как, например, связать выполнение условий со значениями индикаторов?
  • Какие условия должны быть связаны с обновлением периода?
  • Для чего следует использовать функцию обновления периода? Она нужна или следует её убрать?

 

Внешние переменные:

Обозначение параметра Название параметра Значение по умолчанию
1 Pending Режим отложенных сделок. false
2 Trelling Режим Trelling Stop Loss & Trelling Take Profit. false
3 IterPeriodBar Количество баров до разрешения на заключение сделок. 0

 

  1. Pending

Режим отложенных ордеров.

· False – режим выключен. В данном случае используется торговля в режиме реального времени on-line. Сделки открываются и закрываются при непосредственном контроле их советником.

· True – режим включён. В данном случае при заключении сделок предварительно выставляются отложенные ордера. Несработавшие ордера впоследствии удаляются советником. Этот режим может быть использован для полуавтоматической торговли или при торговле off-line.

 

  1. Trelling

Режим передвижных Stop loss и Take profit.

· False – режим выключен. Используются обычные статичные уровни Stop loss и Take profit.

· True – режим включён. Используются передвижные уровни Stop loss и Take profit. Передвигаются в зависимости от текущей цены в одну сторону: Stop loss – вверх, Take profit – вниз.

 

  1. IterPeriodBar

Количество баров, которое будет игнорироваться торговой системой с момента её запуска. Сделки начинают заключаться с бара номер IterPeriodBar + 1.

 

Функции:

Название Описание Параметры
1 BarRefresh Истечение периода. Refresh – количество баров (периодов) от теоретического начала времени. Подставляется из глобальной переменной. Iter_Refresh – количество обновлений периода. Подставляется из глобальной переменной. TimePeriod – Период графика в минутах. Представлен внешней переменной. ValPeriod – Сложный период. Представлен внешней переменной.
2 GenerationConclusion Генерация условий на заключение сделок. -
3 GenerationControl Генерация условий на выход из сделок. index – индекс выбранной сделки в массиве сделок. ticket – тикет (идентификатор) выбранной сделки.

 

Модуль TemplateTrade.mq4

Это модуль исполняемой программы, где написаны основные функции выполнения: init, start, deinit. Здесь реализуется основной алгоритм торговой системы, приведённый выше. Он объединяет весь код модулей воедино. По большей части здесь ничего менять не следует, а всё оставить в таком виде. Поменять при необходимости лишь можно: инициализацию переменных, включить или исключить функцию выполнения индикатора Indicator в/из обновления периода.

На данном этапе следует определить:

  • Какие переменные должны быть проинициализированы перед выполнением советника?
  • Следует ли слегка скорректировать основной алгоритм выполнения торговой системы?

 


Дата добавления: 2018-06-01; просмотров: 235; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!