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

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

18

double riskPercent = 2.0; // Риск 2% от депозита

double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * riskPercent / 100;

double lotSize = riskAmount / (StopLoss * _Point * SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE));

```

4. Важные предупреждения:

1. Всегда тестируйте на демо-счете перед использованием на реальных деньгах

2. Адаптируйте параметры под конкретную валютную пару и таймфрейм

3. Мониторьте работу советника, особенно в первые недели торговли

4. Учитывайте спреды и свопы – они могут существенно повлиять на прибыльность

5. Используйте VPS для круглосуточной работы советника

5. Ограничения данной реализации:

1. Советник открывает только одну позицию на символ

2. Не учитывает корреляции между разными инструментами

3. Нет защиты от "зависаний" и сбоев связи

4. Требует постоянного мониторинга и периодической оптимизации параметров

Этот код представляет собой базовую реализацию стратегии следования за трендом. Для профессионального использования рекомендуется добавить дополнительные фильтры, улучшенное управление капиталом и систему мониторинга.

Робот 2: «Ловец отскоков» (Bounce Catcher)

Вот пример кода торгового робота "Bounce Catcher" для MetaTrader 5:

```mq5

//+–+

//| BounceCatcherRobot.mq5|

//| Copyright 2023, MetaQuotes Ltd. |

//| https://www.mql5.com |

//+–+

#property copyright "Copyright 2023, MetaQuotes Ltd."

#property link "https://www.mql5.com"

#property version "1.00"

//+–+

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

//+–+

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

input int BB_Period = 20; // Период Bollinger Bands

input double BB_Deviation = 2.0; // Отклонение Bollinger Bands

input int RSI_Period = 14; // Период RSI

input int RSI_OverSold = 30; // Уровень перепроданности

input int RSI_OverBought = 70; // Уровень перекупленности

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

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

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

input int TrailingStop_Points = 100;// Уровень трейлинг-стопа

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

//+–+

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

//+–+

int handleBB, handleRSI;

double bbUpper[], bbMiddle[], bbLower[];

double rsiBuffer[];

datetime lastTradeTime = 0;

//+–+

//| Expert initialization function |

//+–+

int OnInit()

{

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

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

{

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

return INIT_PARAMETERS_INCORRECT;

}

// Создание индикаторов

handleBB = iBands(_Symbol, _Period, BB_Period, 0, BB_Deviation, PRICE_CLOSE);

handleRSI = iRSI(_Symbol, _Period, RSI_Period, PRICE_CLOSE);

if(handleBB == INVALID_HANDLE || handleRSI == INVALID_HANDLE)

{

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