реклама
Бургер менюБургер меню

Алексей Боровков – 10 роботов для автоматической торговли на Форекс (страница 1)

18

Алексей Боровков

10 роботов для автоматической торговли на Форекс

Робот 1: «Следователь за трендом» (Trend Follower) – MQL5 Код

Вот полный код советника для MetaTrader 5, реализующий стратегию следования за трендом:

```mql5

//+–+

//| TrendFollower.mq5 |

//| Автор: Алготрейдинг Книга |

//| https://example.com |

//+–+

#property copyright "Алготрейдинг Книга"

#property link "https://example.com"

#property version "1.00"

//+–+

//| Входные параметры советника |

//+–+

input double LotSize = 0.1; // Размер лота

input int FastMAPeriod = 50; // Период быстрой MA

input int SlowMAPeriod = 200; // Период медленной MA

input int ADXPeriod = 14; // Период ADX

input double ADXThreshold = 25.0; // Пороговое значение ADX для силы тренда

input int StopLoss = 200; // Стоп-лосс в пунктах

input int TakeProfit = 400; // Тейк-профит в пунктах

input bool UseTrailingStop = false; // Использовать трейлинг-стоп

input int TrailingStop = 100; // Размер трейлинг-стопа в пунктах

input int MagicNumber = 123456; // Магический номер для идентификации ордеров

input string OrderComment = "TrendFollower"; // Комментарий к ордерам

//+–+

//| Глобальные переменные |

//+–+

int fastMAHandle; // Хэндл для быстрой MA

int slowMAHandle; // Хэндл для медленной MA

int adxHandle; // Хэндл для ADX

double prevFastMA = 0; // Значение быстрой MA на предыдущем баре

double prevSlowMA = 0; // Значение медленной MA на предыдущем баре

//+–+

//| Функция инициализации советника |

//+–+

int OnInit()

{

// Проверка входных параметров

if(FastMAPeriod >= SlowMAPeriod)

{

Alert("Ошибка: Период быстрой MA должен быть меньше периода медленной MA");

return INIT_PARAMETERS_INCORRECT;

}

if(LotSize <= 0 || LotSize > 100)

{

Alert("Ошибка: Неверный размер лота");

return INIT_PARAMETERS_INCORRECT;

}

// Создание хэндлов для индикаторов

fastMAHandle = iMA(_Symbol, _Period, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE);

slowMAHandle = iMA(_Symbol, _Period, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE);

adxHandle = iADX(_Symbol, _Period, ADXPeriod);

// Проверка создания хэндлов

if(fastMAHandle == INVALID_HANDLE || slowMAHandle == INVALID_HANDLE || adxHandle == INVALID_HANDLE)

{

Alert("Ошибка создания индикаторов");

return INIT_FAILED;

}

// Получение начальных значений индикаторов

double fastMA[1], slowMA[1];

if(CopyBuffer(fastMAHandle, 0, 1, 1, fastMA) < 1 || CopyBuffer(slowMAHandle, 0, 1, 1, slowMA) < 1)

{

Alert("Ошибка копирования данных индикаторов");