부그라 트레이딩 전략은 제 귀한 스승인 안일 오제키시 (Anıl Özekşi) 가 개발한 OTT 지표와 lonestar108의 웨브트렌드 오시레이터 지표를 결합한 전략입니다. 두 지표를 통합하여 성공적인 거래 지표를 형성합니다. 전략은 양방향 시장에서 길고 짧은 거래를 할 수 있습니다.
부그라 거래 전략은 먼저 볼링거 밴드의 중간선을 계산합니다. 이동 평균 라인 MAvg입니다. 그런 다음 사용자가 설정 한 비율 범위 및 기간을 기반으로 긴 스톱 손실 롱 스톱과 짧은 스톱 손실 쇼트 스톱을 계산합니다. 가격이 상부 레일을 통과하면 길게 가십시오. 하부 레일을 통과하면 짧게 가십시오. 종료 신호는 가격이 이동 평균 주위에 돌아옵니다.
특히, 이 전략의 핵심 지표는 OTT 지표이다. OTT 지표는 이동 평균과 경계선으로 구성된다. 특정 알고리즘에 기초하여 시장의 변동성에 따라 경계선의 위치를 조정한다. 가격이 하부 경계선을 OTT로 넘을 때, 짧게 가다. 상부 경계선을 OTT로 넘을 때, 길게 가다.
이 전략은 또한 물결 트렌드 지표를 사용하여 가격 트렌드의 방향을 결정합니다. 하락 추세로 판단되면 길지 않고 짧게 가십시오. 상승 추세로 판단되면 길지 않고 짧게 가십시오.
부그라 거래 전략은 이동 평균, 볼링거 밴드 및 OTT 지표의 장점을 결합합니다. 자동으로 스톱 로스 포지션을 조정하고 스톱 로스 발생 가능성을 줄일 수 있습니다. 동시에 트렌드 판단 지표를 통합함으로써 변동 트렌드에 갇히지 않도록합니다.
특히 이 전략의 주요 장점은 다음과 같습니다.
부그라 무역 전략은 다음과 같은 측면에서 주요한 위험을 가지고 있습니다.
대책은 주로 다음과 같습니다.
이중 운동적 이동 평균 거래 전략의 추가 최적화에 대한 여지가 여전히 있습니다.
이중 운동적 이동 평균 거래 전략은 여러 지표의 장점을 통합합니다. 자동으로 스톱 로스 포지션을 조정하고 반전 신호를 판단하고 트렌드 방향을 식별 할 수 있습니다. 강력한 위험 통제 기능과 이해하기 쉽고 사용하기 쉬운 등의 장점이 있습니다. 그러나 함락 및 부정확한 신호와 같은 위험도 있습니다. 이 전략은 다른 지표와 결합하여 더 이상 최적화 될 수 있습니다. 적응 알고리즘 등을 연구합니다. 일반적으로 이중 운동적 이동 평균 거래 전략은 실용적인 브레이크아웃 거래 전략입니다.
/*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")