В статье представлена краткосрочная стратегия торговли, основанная на динамических ценовых каналах.
Стратегия основана на следующей логике:
Вычислить динамические ценовые каналы с использованием самых высоких и самых низких цен. Верхняя полоса - это среднее значение наивысшей цены и средней точки канала. Нижняя полоса - это средняя точка минус разница между самой низкой ценой и средней точкой.
Когда цена проходит выше верхней полосы, начинается восходящий тренд. Когда цена проходит ниже нижней полосы, начинается нисходящий тренд.
При восходящем тренде вы должны пойти на длинный, когда появляются две последовательные медвежие полоски.
Рассмотрим контра-тенденционные записи, чтобы преследовать рыночный импульс.
Установите процентные ставки прибыли, например, x% от входной цены, чтобы зафиксировать прибыль.
Преимущества этой стратегии включают:
Динамические каналы отражают изменения рынка в режиме реального времени для лучшего определения тренда.
Сочетание трендов и прорывов фильтрует ложные прорывы.
Противотендентные вложения используют рыночную динамику для получения избыточной доходности.
Снижение прибыли эффективно контролирует риски.
Логика проста и понятна для легкой реализации.
Также следует учитывать некоторые риски:
Канал может выйти из строя в период волатильности рынка.
Противотенденционные сделки подвержены убыткам.
Фальшивые прорывы могут привести к плохим сделкам.
Избегайте чрезмерной торговли, чтобы контролировать расходы.
Эта стратегия объединяет динамические каналы, прорывы и получение прибыли. При правильной настройке она может быть эффективным инструментом краткосрочной торговли.
/*backtest start: 2022-09-09 00:00:00 end: 2023-09-15 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.1", shorttitle = "Scalper str 1.1", 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 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 hd2 = center + distsma * 2 ld2 = center - distsma * 2 //Trend sma = sma(close, 20) smatrend = close > sma ? 1 : close < sma ? -1 : smatrend[1] trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 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) //Signals bar = close > open ? 1 : close < open ? -1 : 0 up7 = trend == 1 and bar == -1 and bar[1] == -1 ? 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 ? 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)