Форекс советник по зигзагу

**Форекс советник на основе индикатора зигзаг**

**Входные параметры:**

* **ZigzagDepth:** Глубина отката зигзага (в процентах)
* **ZigzagDeviation:** Отклонение зигзага (в пунктах)
* **StopLoss:** Стоп-лосс (в пунктах)
* **TakeProfit:** Тейк-профит (в пунктах)
* **Lots:** Размер лота
* **MagicNumber:** Волшебное число

**Логика советника:**

Советник анализирует график цены на основе индикатора зигзаг и генерирует торговые сигналы при следующих условиях:

**Сделка на покупку:**

* Образовался последующий максимум зигзага, превышающий предыдущий максимум.
* Цена находится выше последнего минимума зигзага.

**Сделка на продажу:**

* Образовался последующий минимум зигзага, ниже предыдущего минимума.
* Цена находится ниже последнего максимума зигзага.

**Размещение ордера:**

* Советник открывает сделку на покупку, если выполняются условия для сделки на покупку.
* Советник открывает сделку на продажу, если выполняются условия для сделки на продажу.
* Размеры лота, стоп-лосса и тейк-профита берутся из входных параметров.

**Управление ордером:**

* Стоп-лосс и тейк-профит устанавливаются при размещении ордера.
* Советник не осуществляет управление ордером и не перемещает стоп-лосс или тейк-профит.
* Ордер закрывается при достижении тейк-профита или стоп-лосса.

**Пример кода:**

«`mql4
#property indicator_chart_window
#property indicator_separate_window

// Входные параметры
input int ZigzagDepth=11;
input double ZigzagDeviation=5;
input int StopLoss=10;
input int TakeProfit=20;
input double Lots=0.1;
input int MagicNumber=12345;

// Индикатор зигзаг
Zigzag zigzag;

int OnInit()
{
// Инициализировать индикатор зигзаг
zigzag.SetDepth(ZigzagDepth);
zigzag.SetDeviation(ZigzagDeviation);
zigzag.Init();

return(INIT_SUCCEEDED);
}

int OnTick()
{
// Проверить на наличие нового бара
if(!IsNewBar())
return(0);

// Получить данные индикатора зигзаг
double zigzagHigh[], zigzagLow[];
zigzag.Values(HIGH,ArraySize(zigzagHigh),zigzagHigh);
zigzag.Values(LOW,ArraySize(zigzagLow),zigzagLow);

// Проверить условия для сделок на покупку и продажу
bool buySignal=false, sellSignal=false;

if(zigzagHigh[0]>zigzagHigh[1])
{
if(Ask>zigzagLow[1])
buySignal=true;
}
if(zigzagLow[0]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *