Алексей Боровков – 10 роботов для автоматической торговли на Форекс (страница 7)
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("Ошибка создания индикаторов!");