Стратегия KA-Gold Bot
KA-Gold Bot — это порт советника MetaTrader «KA-Gold Bot». Стратегия торгует пробои пользовательского канала Кельтнера и подтверждает сигналы трендовыми фильтрами EMA. Реализация использует высокоуровневые подписки StockSharp, чтобы сохранить параметры управляемыми через интерфейс и готовыми к оптимизации.
Логика торговли
- Рассчитываются три экспоненциальные средние:
- EMA(10) — быстрый индикатор импульса.
- EMA(200) — фильтр глобального тренда.
- EMA(period) — центральная линия канала, на ту же длину усредняется диапазон свечей (High-Low).
- Простое скользящее среднее от диапазона формирует границы:
- Верхняя граница = EMA(period) + SMA(high-low, period).
- Нижняя граница = EMA(period) − SMA(high-low, period).
- Лонг открывается, когда на последней закрытой свече выполняются условия:
- Цена закрытия выше верхней границы.
- Цена закрытия выше EMA(200).
- EMA(10) пересекает верхнюю границу снизу вверх между предыдущей и текущей свечой.
- Шорт симметричен:
- Цена закрытия ниже нижней границы.
- Цена закрытия ниже EMA(200).
- EMA(10) пересекает нижнюю границу сверху вниз между предыдущей и текущей свечой.
- Одновременно допускается только одна позиция.
Размер позиции
- Фиксированный лот — торговать объемом
BaseVolume. - Процент от капитала — при
UseRiskPercent = trueтекущая стоимость портфеля умножается наRiskPercent, результат масштабируется по метатрейдеровской схеме (деление на 100000) и округляется до шагаBaseVolumeс учётом ограничений инструмента (MinVolume,MaxVolume,VolumeStep). При отсутствии данных по капиталу стратегия возвращается к фиксированному объёму.
Управление риском
- Стоп-лосс и тейк-профит задаются в пунктах. Пункт пересчитывается в абсолютную цену через
PriceStep; для инструментов с 3 или 5 знаками используется правило MetaTraderpip = step × 10. - После открытия позиции выставляются защитные ордера (стоп и тейк) объёмом текущей позиции.
- Трейлинг активируется, когда плавающая прибыль достигает
TrailingTriggerPips:- Для лонга стоп следует за ценой на расстоянии
TrailingStopPips. - Для шорта стоп держится на той же дистанции выше цены.
- Перестановка выполняется, только если улучшение не меньше
TrailingStepPips, чтобы избежать излишнего шума.
- Для лонга стоп следует за ценой на расстоянии
- При закрытии позиции все защитные заявки отменяются.
Фильтры по времени и спреду
- Временное окно задаётся параметрами
UseTimeFilter,StartHour,StartMinute,EndHour,EndMinute. Окно работает по принципу [начало, конец), ночной режим поддерживается (если конец раньше начала, окно проходит через полночь). - Спред-фильтр сравнивает текущий спред в шагах цены (
BestAsk - BestBid) сMaxSpreadPoints. Если котировки отсутствуют, проверка пропускается.
Особенности реализации
- Candles подписываются через
SubscribeCandles().Bind(...); значения EMA(10) и EMA(200) поступают напрямую, а канал и средний диапазон обновляются внутри обработчика безGetValue. - Для повторения
CopyBufferхранятся только последние две свечи и соответствующие значения индикаторов. - Стопы и трейлинг реализованы через высокоуровневые методы
BuyStop,SellStop,BuyLimit,SellLimit, что повторяетPositionModifyиз MetaTrader. - Расчёт риска опирается на
Portfolio.CurrentValueилиPortfolio.BeginValue; при нулевых данных включается fallback.
Параметры
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
KeltnerPeriod |
Период EMA и сглаживания диапазона. | 50 |
FastEmaPeriod |
Длина быстрой EMA. | 10 |
SlowEmaPeriod |
Длина медленной EMA. | 200 |
BaseVolume |
Базовый торговый объём. | 0.01 |
UseRiskPercent |
Использовать расчёт по проценту риска. | true |
RiskPercent |
Процент капитала на сделку. | 1 |
StopLossPips |
Размер стоп-лосса в пунктах. | 500 |
TakeProfitPips |
Размер тейк-профита в пунктах (0 — отключить). | 500 |
TrailingTriggerPips |
Прибыль для включения трейлинга. | 300 |
TrailingStopPips |
Расстояние трейлинг-стопа. | 300 |
TrailingStepPips |
Минимальное улучшение для переноса стопа. | 100 |
UseTimeFilter |
Включить торговое окно. | true |
StartHour, StartMinute |
Время начала окна. | 02:30 |
EndHour, EndMinute |
Время окончания (исключительно). | 21:00 |
MaxSpreadPoints |
Максимальный допустимый спред (0 — без ограничения). | 65 |
CandleType |
Таймфрейм сигналов. | 5-минутные свечи |
Отличия от оригинала MetaTrader
- Перенос трейлинг-стопа выполняется стоп-заявками на бирже, что эквивалентно
PositionModify, но требует подтверждения торговой площадки. - Средняя ширина канала считается через SMA(high-low), как и в исходном коде.
- Для оценки доступных средств используется стоимость портфеля, что может слегка отличаться от FreeMargin в MetaTrader, но сохраняет концепцию риска в процентах.
- При отсутствии котировок best bid/ask спред-фильтр пропускается, что соответствует поведению советника при «плавающем» спреде.
Рекомендации
- Изначально алгоритм рассчитан на XAUUSD; для других инструментов оптимизируйте периоды EMA и ширину канала.
- Убедитесь, что значения капитала портфеля доступны, если используется режим процента риска.
- Контролируйте шаг цены инструмента: параметры в пунктах предполагают форекс-лот (3 или 5 знаков после запятой).