Quant Lights - это комбинированная стратегия, использующая стохастический индикатор и индикатор OTT. Стратегия использует стохастический индикатор для генерации сигналов купли и продажи и объединяет их с индикатором OTT для фильтрации сигналов, пытаясь поймать большой тренд и уменьшить влияние колебаний рынка, которые вызывают ложные сигналы.
Основная идея стратегии заключается в том, чтобы наложить индикатор OTT на индикатор Стохастический для фильтрации сигнала.
Код устанавливает высокий уровень Стохастика на 1080 и низкий уровень на 1020. Когда Стохастическое значение находится между ними, это диапазонная область. Когда Стохастический генерирует сигналы покупки / продажи, код определяет действительность сигнала на основе индикатора OTT. Если цена пересекает среднюю линию OTT, выпускается сигнал покупки. Если цена пересекает среднюю линию OTT, выпускается сигнал продажи.
Эта комбинация использует Stochastic для определения условий перекупа и перепродажи и генерирования сигналов входа, в то время как OTT отвечает за отслеживание тенденций и использование остановок для фильтрации ложных сигналов, вызванных чрезмерными колебаниями рынка, тем самым оптимизируя точность и волатильность сигнала.
Стратегия объединяет индикаторы Stochastic и OTT для оптимизации следующих аспектов:
В целом, используя OTT для фильтрации стохастических сигналов, стратегия эффективно улучшает качество сигналов и доходность инвестиций, сокращая при этом количество транзакций и волатильность стратегии, достигая эффекта низкого риска, высокой доходности и тщательного отслеживания тенденций.
В отношении вышеуказанных рисков могут быть приняты следующие меры для улучшения:
Стратегия может быть дополнительно оптимизирована в следующих аспектах:
Настройки параметров регулируются в соответствии с различными рынками и типами акций.
Внедрить механизмы снятия прибыли и снятия прибыли. В настоящее время с использованием динамических фиксированных остановок невозможно динамически отслеживать потери и прибыли. Можно проводить тестирование внедрения движущихся остановок и снятия прибыли для дальнейшего контроля риска и прибыли.
Оптимизировать логику суждения о сигнале. Современная логика суждения относительно проста, непосредственно маркирует сигналы купли и продажи, когда цены распадаются или падают. Для обеспечения надежности сигнала можно включить больше индикаторов и ценовых моделей.
Увеличить условия открытых позиций и механизмы фильтрации. Нынешняя стратегия без разбора обрабатывает каждый сигнал. Можно ввести индикаторы объема, индикаторы объема торговли и другие условия открытых позиций, а также определенное время сигналов для фильтрации ложных сигналов.
В настоящее время используется комбинация стохастических и OTT. Можно проверить эффективность комбинирования других индикаторов, таких как MACD и RSI с OTT.
Интегрировать модули управления капиталом и размещения позиций. В настоящее время нет механизмов управления капиталом и контроля позиций, полностью опирающихся на остановки. Различные типы методов управления капиталом и размещения позиций могут быть протестированы для дальнейшего контроля отдельных и общих рисков.
Quant Lights - это количественная стратегия, которая органично сочетает в себе стохастический индикатор с индикатором OTT. Он использует взаимодополняющие силы двух индикаторов для улучшения точности сигнала и эффективного улавливания основных тенденций при снижении рисков.
Преимущества этой стратегии включают низкий уровень ошибок, четкие сигналы и небольшую волатильность.
В то же время в этой стратегии еще есть место для улучшения. Благодаря оптимизации параметров, улучшению механизма остановки, улучшению сигналов и механизмов фильтрации и т. Д. Стратегия может развиваться в более стабильном, автоматизированном и интеллектуальном направлении. Это также цель нашей последующей работы.
/*backtest start: 2023-12-27 00:00:00 end: 2024-01-03 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic //created by: @Anil_Ozeksi //developer: ANIL ÖZEKŞİ //author: @kivancozbilgic strategy(title="Stochastic Optimized Trend Tracker", shorttitle="SOTT", format=format.price, precision=2) periodK = input(250, title="%K Length", minval=1) smoothK = input(50, title="%K Smoothing", minval=1) src1 = input(close, title="Source") length=input(3, "OTT Period", minval=1) percent=input(0.618, "OTT Percent", type=input.float, step=0.1, minval=0) showsupport = input(title="Show Support Line?", type=input.bool, defval=false) showsignalsc = input(title="Show Stochastic/OTT Crossing Signals?", type=input.bool, defval=false) Var_Func1(src1,length)=> valpha1=2/(length+1) vud11=src1>src1[1] ? src1-src1[1] : 0 vdd11=src1<src1[1] ? src1[1]-src1 : 0 vUD1=sum(vud11,9) vDD1=sum(vdd11,9) vCMO1=nz((vUD1-vDD1)/(vUD1+vDD1)) VAR1=0.0 VAR1:=nz(valpha1*abs(vCMO1)*src1)+(1-valpha1*abs(vCMO1))*nz(VAR1[1]) VAR1=Var_Func1(src1,length) k = Var_Func1(stoch(close, high, low, periodK), smoothK) src=k+1000 Var_Func(src,length)=> valpha=2/(length+1) vud1=src>src[1] ? src-src[1] : 0 vdd1=src<src[1] ? src[1]-src : 0 vUD=sum(vud1,9) vDD=sum(vdd1,9) vCMO=nz((vUD-vDD)/(vUD+vDD)) VAR=0.0 VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1]) VAR=Var_Func(src,length) h0 = hline(1080, "Upper Band", color=#606060) h1 = hline(1020, "Lower Band", color=#606060) fill(h0, h1, color=#9915FF, transp=80, title="Background") plot(k+1000, title="%K", color=#0094FF) MAvg=Var_Func(src, length) fark=MAvg*percent*0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir==1 ? longStop: shortStop OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line") OTTC = #B800D9 pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0) alertcondition(cross(src, OTT[2]), title="Price Cross Alert", message="OTT - Price Crossing!") alertcondition(crossover(src, OTT[2]), title="Price Crossover Alarm", message="PRICE OVER OTT - BUY SIGNAL!") alertcondition(crossunder(src, OTT[2]), title="Price Crossunder Alarm", message="PRICE UNDER OTT - SELL SIGNAL!") buySignalc = crossover(src, OTT[2]) plotshape(buySignalc and showsignalsc ? OTT*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) sellSignallc = crossunder(src, OTT[2]) plotshape(sellSignallc and showsignalsc ? OTT*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) dummy0 = input(true, title = "=Backtest Inputs=") FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromYear = input(defval = 2005, title = "From Year", minval = 2005) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToYear = input(defval = 9999, title = "To Year", minval = 2006) Start = timestamp(FromYear, FromMonth, FromDay, 00, 00) Finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) Timerange() => time >= Start and time <= Finish ? true : false if buySignalc strategy.entry("Long", strategy.long,when=Timerange()) if sellSignallc strategy.entry("Short", strategy.short,when=Timerange())