1. Получение сигнала от индикатора и т.п. о необходимости открыть сделку;
2. Проверка на наличие уже открытой сделки по имеющемуся сигналу.
Если с первым пунктом не должно возникнуть неясности, то второй пункт требует пояснения. В основном, код по открытию сделки прописывается разработчиком в зарезервированной MQL процедуре OnTick(). Эта процедура запускается на каждом тике цены на инструменте, котором запущен советник. Сигнал на вход в сделку может возникнуть на любом тике и оставаться в течение бара как минимум. Поэтому и необходима проверка на то, была ли открыты уже сделка или нет. Если же сигнал на вход в сделку поступает строга на первом тике нового бара, то для этого применяется несколько иной подход. Его мы рассмотрим в другой статье.
Итак, в общем виде код на открытие сделки будет выглядеть так:
ЕСЛИ сигнал от индикатора на вход в позицию поступил И открытой сделки нет - открыть сделку
Для примера опишем условно вход в покупку при бычьем тренде и продажу при медвежьем:
- Код: выделить все
if(<Тренд> == "Бычий")
{
if(<Покупки> == 0)
{
<Тикет ордера> = OrderSend(<Символ>, OP_BUY, <Размер лота>, Ask,<Проскальзывание>, <SL>, <TP>, "", 0, 0, clrGreen);
}
}
else if(<Тренд> == "Медвежий")
{
if(<Продажи> == 0)
{
<Тикет ордера> = OrderSend(<Символ>, OP_SELL, <Размер лота>, Bid, <Проскальзывание>, <SL>, <TP>, "", 0, 0, clrRed);
}
}
Примечание: В <...> скобках указаны имена переменных которые определить разработчику в советнике и подставить в данный код.
В следующей статье мы рассмотрим применение данного подхода для открытия сделок в советнике со скользящей средней.