부그라 트레이딩 전략 이중 운동 이동 평균에 기반

저자:차오장, 날짜: 2024-02-19 14:36:37
태그:

img

전반적인 설명

부그라 트레이딩 전략은 제 귀한 스승인 안일 오제키시 (Anıl Özekşi) 가 개발한 OTT 지표와 lonestar108의 웨브트렌드 오시레이터 지표를 결합한 전략입니다. 두 지표를 통합하여 성공적인 거래 지표를 형성합니다. 전략은 양방향 시장에서 길고 짧은 거래를 할 수 있습니다.

전략 원칙

부그라 거래 전략은 먼저 볼링거 밴드의 중간선을 계산합니다. 이동 평균 라인 MAvg입니다. 그런 다음 사용자가 설정 한 비율 범위 및 기간을 기반으로 긴 스톱 손실 롱 스톱과 짧은 스톱 손실 쇼트 스톱을 계산합니다. 가격이 상부 레일을 통과하면 길게 가십시오. 하부 레일을 통과하면 짧게 가십시오. 종료 신호는 가격이 이동 평균 주위에 돌아옵니다.

특히, 이 전략의 핵심 지표는 OTT 지표이다. OTT 지표는 이동 평균과 경계선으로 구성된다. 특정 알고리즘에 기초하여 시장의 변동성에 따라 경계선의 위치를 조정한다. 가격이 하부 경계선을 OTT로 넘을 때, 짧게 가다. 상부 경계선을 OTT로 넘을 때, 길게 가다.

이 전략은 또한 물결 트렌드 지표를 사용하여 가격 트렌드의 방향을 결정합니다. 하락 추세로 판단되면 길지 않고 짧게 가십시오. 상승 추세로 판단되면 길지 않고 짧게 가십시오.

이점 분석

부그라 거래 전략은 이동 평균, 볼링거 밴드 및 OTT 지표의 장점을 결합합니다. 자동으로 스톱 로스 포지션을 조정하고 스톱 로스 발생 가능성을 줄일 수 있습니다. 동시에 트렌드 판단 지표를 통합함으로써 변동 트렌드에 갇히지 않도록합니다.

특히 이 전략의 주요 장점은 다음과 같습니다.

  1. 자동으로 스톱 로스 포지션을 조정하여 위험을 효과적으로 제어할 수 있습니다.
  2. OTT 지표는 반전점을 비교적 정확하게 결정할 수 있습니다.
  3. 트렌드 판단 지표를 적용함으로써 변동 시장에 갇히지 않도록 합니다.
  4. 그 규칙은 비교적 간단하고 명확하며 이해하기 쉽고 적용하기 쉽습니다.

위험 분석

부그라 무역 전략은 다음과 같은 측면에서 주요한 위험을 가지고 있습니다.

  1. 폭력적인 시장 조건에서 스톱 로스는 깨질 수 있고 더 큰 손실을 초래할 수 있습니다.
  2. OTT 지표에 의해 판단된 반전 신호는 정확하지 않을 수 있고, 잘못된 신호가 발생할 수 있습니다.
  3. 트렌드 판단도 틀릴 수 있습니다. 하향 변동에서 장기간 거래하면 손실이 발생할 수 있습니다.
  4. 부적절한 매개 변수 설정도 전략 성능에 영향을 줄 것입니다.

대책은 주로 다음과 같습니다.

  1. 스톱 로스 라인이 쉽게 활성화되지 않도록 스톱 로스 범위를 적절히 느슨하게 합니다.
  2. 다른 지표와 결합하여 OTT 신호의 신뢰성을 판단하여 잘못된 신호를 피합니다.
  3. 트렌드 판단을 더 신뢰할 수 있도록 적절한 매개 변수를 조정합니다.
  4. 가장 좋은 매개 변수 조합을 찾기 위해 매개 변수를 최적화합니다.

최적화 방향

이중 운동적 이동 평균 거래 전략의 추가 최적화에 대한 여지가 여전히 있습니다.

  1. 신호 판단의 정확성을 높이기 위해 다른 지표와 결합하는 것을 고려하십시오.
  2. 시장 변동에 따라 스톱 로스 라인을 조정할 수 있도록 적응 스톱 로스 알고리즘을 연구합니다.
  3. 거래량 지표를 추가하여 거래량이 낮을 때 잘못된 브레이크오웃을 피합니다.
  4. 가장 적합한 이동평균을 찾기 위해 다양한 종류의 이동평균을 테스트합니다.
  5. 기계 학습과 다른 방법을 시도해서 자동으로 매개 변수를 최적화하세요.

요약

이중 운동적 이동 평균 거래 전략은 여러 지표의 장점을 통합합니다. 자동으로 스톱 로스 포지션을 조정하고 반전 신호를 판단하고 트렌드 방향을 식별 할 수 있습니다. 강력한 위험 통제 기능과 이해하기 쉽고 사용하기 쉬운 등의 장점이 있습니다. 그러나 함락 및 부정확한 신호와 같은 위험도 있습니다. 이 전략은 다른 지표와 결합하여 더 이상 최적화 될 수 있습니다. 적응 알고리즘 등을 연구합니다. 일반적으로 이중 운동적 이동 평균 거래 전략은 실용적인 브레이크아웃 거래 전략입니다.


/*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")


더 많은