La estrategia de negociación Bugra es una estrategia que combina el indicador OTT desarrollado por mi querido maestro Anıl Özekşi y el indicador Wavetrend Oscillator de lonestar108.
La estrategia de negociación Bugra calcula primero la línea media de las bandas de Bollinger, que es la línea de promedio móvil MAvg. Luego, basándose en el rango porcentual y el período establecido por el usuario, calcula el stop loss largo longStop y el stop loss corto shortStop. Cuando el precio rompe el carril superior, vaya largo. Cuando rompe el carril inferior, vaya corto. La señal de cierre es cuando el precio regresa alrededor del promedio móvil.
Específicamente, el indicador central de esta estrategia es el indicador OTT. El indicador OTT consiste en un promedio móvil y líneas límite. Ajusta la posición de las líneas límite de acuerdo con la volatilidad del mercado basado en ciertos algoritmos. Cuando el precio rompe la línea límite inferior OTT, vaya corto. Cuando rompe la línea límite superior OTT, vaya largo.
Esta estrategia también utiliza el indicador Wavetrend para determinar la dirección de la tendencia del precio. Si se juzga que es una tendencia a la baja, solo vaya corto, no largo. Si se juzga que es una tendencia al alza, solo vaya largo, no corto.
La estrategia de negociación de Bugra combina las ventajas de los promedios móviles, bandas de Bollinger e indicadores OTT. Puede ajustar automáticamente las posiciones de stop loss y reducir la probabilidad de que se desencadene una stop loss. Al mismo tiempo, al incorporar indicadores de juicio de tendencia, evita quedar atrapado en tendencias oscilantes.
En concreto, las principales ventajas de esta estrategia son:
La estrategia comercial de Bugra también presenta algunos riesgos, principalmente en los siguientes aspectos:
Las contramedidas son principalmente las siguientes:
Todavía hay espacio para una mayor optimización de la estrategia de negociación de la media móvil cinética dual:
La estrategia de trading de promedios móviles dobles integra las ventajas de múltiples indicadores. Puede ajustar automáticamente las posiciones de stop loss, juzgar las señales de reversión e identificar las direcciones de tendencia. Tiene ventajas como fuertes capacidades de control de riesgos y fácil de entender y usar. Pero también tiene riesgos como quedar atrapado y señales inexactas. Esta estrategia se puede optimizar aún más combinándola con otros indicadores, estudiando algoritmos adaptativos, etc. En general, la estrategia de trading de promedios móviles dobles es una estrategia de trading de ruptura práctica.
/*backtest start: 2023-02-12 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Bugra trade strategy", shorttitle="Bugra trade strategy", overlay=true) // Kullanıcı Girdileri length = input(5, title="Period", minval=1) percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0) mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"]) wt_n1 = input(10, title="Kanal Periyodu") wt_n2 = input(21, title="Averaj Uzunluğu") src = close // Tarih Aralığı Girdileri startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)") endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)") // Tarih Filtresi Fonksiyonu isDateInRange() => true // Özel Fonksiyonlar 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, length) vDD = sum(vdd1, length) vCMO = (vUD - vDD) / (vUD + vDD) varResult = 0.0 varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1])) varResult Wwma_Func(src, length) => wwalpha = 1 / length wwma = 0.0 wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1]) wwma Zlema_Func(src, length) => zxLag = floor(length / 2) zxEMAData = src + (src - src[zxLag]) zlema = ema(zxEMAData, length) zlema Tsf_Func(src, length) => lrc = linreg(src, length, 0) lrs = lrc - linreg(src, length, 1) tsf = lrc + lrs tsf getMA(src, length) => ma = mav == "SMA" ? sma(src, length) : mav == "EMA" ? ema(src, length) : mav == "WMA" ? wma(src, length) : mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) : mav == "VAR" ? Var_Func(src, length) : mav == "WWMA" ? Wwma_Func(src, length) : mav == "ZLEMA" ? Zlema_Func(src, length) : mav == "TSF" ? Tsf_Func(src, length) : na // Strateji Hesaplamaları MAvg = getMA(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(OTT, title="BugRA", color=color.rgb(251, 126, 9)) // Alım ve Satım Koşulları longCondition = crossover(src, OTT) and isDateInRange() shortCondition = crossunder(src, OTT) and isDateInRange() // Strateji Giriş ve Çıkış Emirleri if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.close("Long")