Эта стратегия, которая сочетает в себе динамический индикатор K, случайный индикатор K, а также индикатор ATR, динамически корректирующий стоп-линию и входную линию K в зависимости от значения ATR, реализует идею автоматической корректировки стоп-линий и входных линий в зависимости от рыночных колебаний.
Вычислим K-значения длины len sma (((stoch (((close, high, low, len), smoothK), представляющие собой значения случайных показателей K。
ATR, рассчитанная на длину лэнatr ((len) ∈
Нарисуйте стоп-линию (rsi, atr, len) +lowLine, …, title = “low line”) и входную линию (rsi, atr, len) на основе значения ATR*-1+100-lowLine, …, title = “up line”)。
Определить, когда K-значения прорывают входную линию (crossover) и остановочную линию (crossunder), создавая сигналы покупки и продажи.
Нарисуйте цвет фона покупки и продажи.
При выполнении вышеуказанного сигнала производится операция покупки и продажи и устанавливается стоп-лосс.
Стратегия динамически корректирует линию остановки и линию входа в зависимости от волатильности ATR на рынке и может автоматически корректировать риск остановки в зависимости от волатильности рынка.
Когда рынок сильно колеблется, расстояние между стоп-линией и входной линией увеличивается, чтобы предотвратить потери.
Когда рынок колеблется спокойно, стоп-линии и входные линии сокращаются, можно своевременно остановить убытки.
Используйте значение K для определения входа и выхода. Значение K может реагировать на скорость изменения цены и может улавливать переломные моменты.
В сочетании с динамическим и волатильным индикаторами, можно как улавливать тенденции, так и автоматически корректировать риск в зависимости от волатильности.
K-значения легко создают ложные прорывы, которые могут вызвать ненужные торговые сигналы. К-значения могут быть скорректированы с помощью параметров smoothK, чтобы сгладить K-линию.
ATR параметры len установлены слишком большими, стоп-линии и входных линий слишком большие, риск может быть слишком высоким. Можно проверить стабильность различных параметров len.
Чистое отслеживание остановки не позволяет определить, является ли место остановки обоснованным, и не позволяет контролировать риск однократной остановки. Можно рассмотреть возможность управления риском однократной остановки в сочетании с алгоритмом ожидаемой остановки.
Сигналы стратегии часто встречаются, а расходы на торговлю высоки. Можно соответствующим образом регулировать параметры входной линии lowLine, контролируя частоту торгов.
Тестирование настройки параметров K-значений smoothK, чтобы найти оптимальную комбинацию параметров для сглаживания K-значений.
Тестирование различных значений параметров ATR len для определения подходящих ATR-параметров.
Оптимизируйте входную линию с параметрами lowLine, чтобы найти оптимальные параметры для управления частотой торгов.
Подумайте о фильтрации входных сигналов в сочетании с другими показателями, чтобы избежать ложных прорывов. Например, в сочетании с показателями объема торгов, показателями KDJ и т. Д.
Рассмотрение оптимизации методов остановки убытков, улучшение ожидаемых остановок, активное управление рисками остановки убытков.
Стратегия, основанная на динамическом показателе K-значения и показателе волатильности ATR, реализует идею динамической корректировки стоп-линий и входных линий, которая может как улавливать тенденции, так и автоматически корректировать риск в зависимости от волатильности. Это очень инновационная и практическая стратегическая идея.
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input(34, minval=1, title="Length for Main Stochastic & ATR")
smoothK = input(2, minval=1, title="SmoothK for Main Stochastic")
lowLine = input(10, minval=-50, maxval=50, title="Multiplier for up/low lines")
//Stoch formula
k = sma(stoch(close, high, low, len), smoothK)
plot(k, color=aqua, title = "Stoch")
//len=input
atr=atr(len)
plot(rsi(atr, len)+lowLine , color=red,linewidth=2, title = "low line")
plot(rsi(atr, len)*-1+100-lowLine, color=lime,linewidth=2, title = "up line")
aboveLine = crossunder(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine = crossover(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0
aboveLine2 = crossover(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine2 = crossunder(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0
skip=(aboveLine2==1 or belowLine2==1) and (aboveLine==1 or belowLine==1)? 1 : 0
//BackGroound Color Plots
plotchar(belowLine==1 and skip==0, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine==1 and skip==0, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)
plotchar(belowLine2==1 and skip==0, title="Close Signal", char='C', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine2==1 and skip==0, title="Close Signal", char='C', location=location.top, color=white, transp=0, offset=0)
bgcolor(aboveLine==1 ? red : na, transp=30, title = "sell signal")
bgcolor(belowLine==1 ? lime : na, transp=30, title = "buy signal")
bgcolor(aboveLine2==1 ? lime : na, transp=80, title = "close short")
bgcolor(belowLine2==1 ? red : na, transp=80, title = "close long")
bgcolor(skip==1 ? black : na, transp=0, title = "skip signal")
//strategy
longCondition = belowLine==1
shortCondition = aboveLine==1
strategy.entry("BUY", strategy.long, when = longCondition)
strategy.entry("SELL", strategy.short, when = shortCondition)
strategy.cancel_all(when = skip==1)