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

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

18

//+–+

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

input int TakeProfit_Pips = 10; // Тейк-профит в пипсах

input int StopLoss_Pips = 5; // Стоп-лосс в пипсах

input int MaxDailyTrades = 100; // Максимум сделок в день

input double MaxSpread_Pips = 0.5; // Максимальный спред в пипсах

input bool UseEquityProtection = true;// Защита по эквити

input double EquityProtectionPercent = 5;// Макс. просадка эквити в %

input int MagicNumber = 789012; // Магический номер

input bool UseNewsFilter = true; // Фильтр новостей

input int NewsBeforeMinutes = 30; // Не торговать за N минут до новостей

input int NewsAfterMinutes = 30; // Не торговать N минут после новостей

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

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

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

input ENUM_MA_METHOD MA_Method = MODE_EMA;// Метод MA

input int Volume_Threshold = 100; // Порог объема

input int Momentum_Period = 3; // Период момента

input double MinTickSpeed = 0.5; // Мин. скорость тиков (тиков/сек)

//+–+

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

//+–+

int handleFastMA, handleSlowMA, handleMomentum;

double fastMA[], slowMA[], momentum[];

datetime lastTradeTime = 0;

int todayTrades = 0;

datetime lastTradeDate = 0;

double initialEquity = 0;

MqlDateTime currentTime;

int tickCounter = 0;

datetime lastTickTime = 0;

double tickSpeed = 0;

// Структура для хранения информации о новостях

struct NewsEvent

{

datetime time;

string currency;

string event;

int impact; // 0=low, 1=medium, 2=high, 3=very high

};

//+–+

//| Expert initialization function |

//+–+

int OnInit()

{

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

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

{

Print("Некорректный размер лота!");

return INIT_PARAMETERS_INCORRECT;

}

if(TakeProfit_Pips <= 0 || StopLoss_Pips <= 0)

{

Print("Некорректные уровни TP/SL!");

return INIT_PARAMETERS_INCORRECT;

}

// Инициализация индикаторов

handleFastMA = iMA(_Symbol, PERIOD_M1, FastMA_Period, 0, MA_Method, PRICE_CLOSE);

handleSlowMA = iMA(_Symbol, PERIOD_M1, SlowMA_Period, 0, MA_Method, PRICE_CLOSE);

handleMomentum = iMomentum(_Symbol, PERIOD_M1, Momentum_Period, PRICE_CLOSE);

if(handleFastMA == INVALID_HANDLE || handleSlowMA == INVALID_HANDLE ||

handleMomentum == INVALID_HANDLE)

{

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

return INIT_FAILED;