Эта стратегия использует комбинацию полос Боллинджера и скользящих средних для идентификации и входа в тренд. Она использует способность распознавания трендов полос Боллинджера и фильтрующий эффект скользящих средних для эффективного определения направлений тренда рынка для входа на трендовые рынки.
Вычислить канал Боллинджера для определения направления тренда рынка
Вычислить размер тела бычьей свечи для сигналов остановки потерь и обратного движения
Ввести сделки в направлении канала при подтверждении тренда
Использование скользящих средних для фильтрации, чтобы избежать ложных сигналов
Систематическое определение тенденции, объединяющее диапазоны и скользящие средние
Переключающиеся средние фильтруют шум. Комбинация позволяет надежно обнаруживать тренд, устойчивый к спорадическим шокам рынка.
Эффективное управление рисками посредством остановки потерь тела свечи
Сравнение текущего тела свечи с исторической средней обнаруживает обратный тренд для остановки потерь и сокращения позиции.
Ясные правила количественного ввода и стоп-лосса
Строгие требования к движущейся средней и направлению канала для входа. Правило остановки потерь по размеру тела свечи. Заставляет всю систему входить и выходить ясной и систематической.
Потенциальные убытки на рынках с ограниченным диапазоном
Ценовые колебания по диапазонам могут привести к повторяющимся незначительным потерям.
Преждевременный стоп-лосс в сильных тенденциях
Краткосрочные ретрекции могут привести к остановкам в сильных восходящих/снижающихся тенденциях.
Ошибочные сигналы от плохой настройки параметров
Неоптимальные параметры скользящей средней и диапазонов могут вызывать ложные сигналы.
Оптимизировать перемещающийся средний период просмотра
Настройка периода для уменьшения сглаживания для более быстрого обнаружения изменения тренда.
Испытание альтернативных механизмов остановки потерь
Оценить остановки отслеживания, остановки ATR и т.д. для поиска оптимальной системы.
Включить модели машинного обучения
Подготовка моделей на обширные исторические данные для увеличения тенденции и предсказания сигналов.
Эта стратегия сбалансирует определение тренда и контроль риска с использованием полос Боллинджера и скользящих средних. Систематический количественный подход с четкими правилами входа / выхода позволяет эффективно захватывать вознаграждение с контролируемым риском. Дальнейшие улучшения с помощью настройки параметров и интеграции машинного обучения повысят надежность.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.3", shorttitle = "Scalper str 1.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %") needct = input(false, defval = false, title = "Counter-trend entry") len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period") needbb = input(true, defval = true, title = "Show Bands") needbg = input(true, defval = true, title = "Show Background") src = close //PriceChannel 1 lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 //Distance dist = abs(src - center) distsma = sma(dist, len) hd = center + distsma ld = center - distsma hd1 = center + distsma / 2 ld1 = center - distsma / 2 //Trend trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = ema(body, 30) candle = high - low //Engulfing min = min(open, close) max = max(open, close) bar = close > open ? 1 : close < open ? -1 : 0 upeng = bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1] ? 1 : 0 dneng = bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1] ? 1 : 0 //Signals up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0 dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0 dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0 if up7 == 1 or up8 == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na) if dn7 == 1 or dn8 == 1 strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)