Эта стратегия использует в основном двойные движущиеся средние линии в качестве сигналов к покупке и продаже, чтобы получить прибыль при изменении тренда. Обычная стратегия отслеживания стоп-лосса состоит в том, чтобы делать больше, когда короткие движущиеся средние линии проходят через длинные движущиеся средние линии, и делать больше, когда короткие движущиеся средние линии проходят через длинные движущиеся средние линии.
Стратегия сначала устанавливает две движущиеся средние линии, более короткую 20-дневную среднюю линию и более длительную 60-дневную среднюю линию. Затем, чтобы определить вход, определяется пересечение короткой и долгой средних линий.
В частности, когда краткосрочная средняя линия пересекает долгосрочную среднюю линию, это означает, что в настоящее время она находится в восходящем тренде, то делать больше; когда краткосрочная средняя линия пересекает долгосрочную среднюю линию, это означает, что в настоящее время она находится в нисходящем тренде, то делать больше.
Строгое использование стоп-лосса - это отслеживание стоп-лосса, при котором максимальная прибыль может быть зафиксирована на основе максимальной и минимальной цены.
Основная логика кода:
В частности, в частности:
В то же время в этой стратегии есть некоторые риски:
Оптимизация рисков может быть осуществлена следующими способами:
Эта стратегия может быть оптимизирована в следующих аспектах:
Добавление фильтрации других индикаторов, формирование механизма многоусловного входа, предотвращение ложных прорывов.
Оптимизировать параметры циклов движущейся угловой линии, чтобы найти оптимальную комбинацию параметров. Можно протестировать параметры различных циклов пошаговым ходом.
Оптимизировать диапазон остановки. Можно вычислить оптимальный диапазон остановки с помощью данных обратного измерения. Можно также установить динамический диапазон остановки.
Установка механизма повторного входа. После выхода с остановки можно установить разумную логику повторного входа, чтобы уменьшить количество сделок.
В сочетании с индикаторами определения тренда, приостанавливают торговлю, когда тенденция не очевидна, чтобы избежать недействительных сделок.
Присоединиться к механизму управления позициями, динамически регулировать позиции и диапазон стоп-лосса в соответствии с рыночными условиями.
Двойная стратегия обратного движения двойной средней линии является обычным и эффективным методом определения трендовых поворотных точек с помощью двойной прямой линии. Однако существует определенный риск, который требует оптимизированного тестирования параметров и диапазонов остановки убытков, а также использования в сочетании с другими фильтрующими показателями, чтобы максимально эффективно использовать стратегию. Если стратегия будет тщательно оптимизирована и строго управлена рисками, она может стать стабильно прибыльной стратегией торговли на частоте.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", 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, %") needbe = input(true, defval = true, title = "Bands Entry") needct = input(false, defval = false, title = "Counter-trend entry") needdb = input(true, defval = true, title = "Double Body") 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 hd2 = center + distsma * 2 ld2 = 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(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2") plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1") plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = needdb == false ? ema(body, 30) : ema(body, 30) * 2 candle = high - low //Signals bar = close > open ? 1 : close < open ? -1 : 0 up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0 dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) 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 bar == 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)