A estratégia de negociação Bugra é uma estratégia que combina o indicador OTT desenvolvido pelo meu querido professor Anıl Özekşi e o indicador Wavetrend Oscillator do lonestar108.
A estratégia de negociação Bugra primeiro calcula a linha média das Bandas de Bollinger, que é a linha média móvel MAvg. Em seguida, com base no intervalo percentual e no período definido pelo usuário, calcula a longa stop loss longStop e a curta stop loss shortStop. Quando o preço atravessa o trilho superior, vá longo. Quando atravessa o trilho inferior, vá curto. O sinal de fechamento é quando o preço volta ao redor da média móvel.
Especificamente, o indicador central desta estratégia é o indicador OTT. O indicador OTT consiste em uma média móvel e linhas de limite. Ele ajusta a posição das linhas de limite de acordo com a volatilidade do mercado com base em certos algoritmos. Quando o preço atravessa a linha de limite inferior OTT, vá curto. Quando atravessa a linha de limite superior OTT, vá longo.
Esta estratégia também usa o indicador Wavetrend para determinar a direção da tendência do preço. Se for julgado uma tendência de queda, vá apenas curto, não longo. Se for julgado uma tendência de alta, vá apenas longo, não curto.
A estratégia de negociação Bugra combina as vantagens de médias móveis, Bandas de Bollinger e indicadores OTT. Pode ajustar automaticamente as posições de stop loss e reduzir a probabilidade de ação de stop loss. Ao mesmo tempo, incorporando indicadores de julgamento de tendência, evita ser preso em tendências oscilantes.
Especificamente, as principais vantagens desta estratégia são:
A estratégia comercial da Bugra apresenta também alguns riscos, principalmente nos seguintes aspectos:
As contra-medidas são principalmente as seguintes:
A estratégia de negociação da média móvel cinética dupla ainda pode ser melhorada:
A estratégia de negociação de média móvel dinâmica dupla integra as vantagens de vários indicadores. Ela pode ajustar automaticamente as posições de stop loss, julgar sinais de reversão e identificar direções de tendência. Ela tem vantagens como fortes capacidades de controle de risco e fácil de entender e usar. Mas também tem riscos como ficar preso e sinais imprecisos. Esta estratégia pode ser otimizada ainda mais combinando com outros indicadores, estudando algoritmos adaptativos, etc. Em geral, a estratégia de negociação de média móvel dinâmica dupla é uma estratégia de negociação prática de ruptura.
/*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")