Модуль 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 |
- LotDeal
Фиксированное количество лотов, устанавливаемое перед запуском советника. Все сделки, заключаемые советником, открываются именно с этим значением количества лотов. Если LotDeal = 0, то в действие вступает прогрессивное вложение средств с помощью переменной Prots.
|
|
- Prots
Часть от свободных средств, которая вкладывается в торговлю каждый раз при заключении сделки. Если Prots = 0, то каждый раз вкладывается фиксированная часть средств в размере минимального лота.
- Slippage
Параметр проскальзывания в пунктах используется при заключении и выхода из сделок. И означает максимально допустимое отклонение цены для рыночных ордеров на покупку или продажу. Т.е. если запрашиваемая цена присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон [price - slippage; price + slippage]. По умолчанию равен 5 пунктам. Если возникают ошибки при заключении или выхода из сделок советником, этот параметр имеет смысл увеличить.
- StopLoss
Значение stop loss для открытой позиции в пунктах. Если это значение равно 0, то StopLoss не устанавливается.
- TakeProfit
Значение take profit для открытой позиции в пунктах. Если это значение равно 0, то TakeProfit не устанавливается.
- 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 |
- Sanction
Параметр, разрешающий советнику торговать (заключать сделки).
· False – запрет на заключение сделок.
· True – разрешение на заключение сделок.
- ValPeriod
Параметр сложного периода, составленного из простого или стандартного периода TimePeriod отображения баров на графике. Задаётся для построения сложных периодов графика. Равен 1, если используется один из стандартных периодов: M1, M5, M15, M30, H1, H4, D1, W1, MN.
- 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 месяц).
- 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 |
- Pending
Режим отложенных ордеров.
· False – режим выключен. В данном случае используется торговля в режиме реального времени on-line. Сделки открываются и закрываются при непосредственном контроле их советником.
· True – режим включён. В данном случае при заключении сделок предварительно выставляются отложенные ордера. Несработавшие ордера впоследствии удаляются советником. Этот режим может быть использован для полуавтоматической торговли или при торговле off-line.
- Trelling
Режим передвижных Stop loss и Take profit.
· False – режим выключен. Используются обычные статичные уровни Stop loss и Take profit.
· True – режим включён. Используются передвижные уровни Stop loss и Take profit. Передвигаются в зависимости от текущей цены в одну сторону: Stop loss – вверх, Take profit – вниз.
- 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!