
이중평선 지능적 추적 거래 전략은 평선과 특정 지표에 기반한 트렌드 추적 전략이다. 이 전략은 두 개의 다른 파라미터 설정을 사용하여 평선을 구성하는 채널을 사용하고, OTT 지표와 결합하여 채널의 상하계를 설정하여 가격 트렌드에 대한 지능적 추적을 구현한다. 가격이 채널을 뚫었을 때 구매 또는 판매 작업을 수행한다.
이 전략은 주로 두 개의 이동 평균과 OTT 지표를 사용하여 적응 통로를 구축합니다. 구체적인 원칙은 다음과 같습니다:
빠른 라인 MAvg를 계산하고, CLOSE 종료 가격과 사용자 정의 평균 라인을 입력합니다. 길이는 5입니다.
MAvg와 설정 비율에 따라, 채널 상하의 최저 장선 위치 장단 스톱 및 짧은 장선 위치 단 단 단 스톱을 계산합니다.
OTT 지표의 채널 이동 중지 MT를 계산하고, 빈 상태에 따라 채널 가격을 계산합니다.
OTT를 통과하면 거래 신호가 발생한다.
위와 같이 적응 통로를 구축하는 과정은 전략이 가격 변화의 동향을 실시간으로 추적하여 거래 신호를 생성 할 수 있도록합니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
위와 같은 위험에는 변수 최적화, 다른 지표 또는 기본 필터링 신호와 같은 방법으로 개선 및 최적화가 가능합니다.
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
이 전략은 전체적으로 쌍방향 채널과 OTT 지표에 기반한 트렌드 추적 전략으로, 핵심 아이디어는 적응 채널을 구축하고, 돌파구를 통해 거래 신호를 생성하는 것이다. 이 전략은 장점이 있지만, 개선할 수 있는 여지가 있다. 매개 변수와 규칙을 최적화하면, 이 전략은 실험적으로 검증할 가치가 있는 고효율의 거래 전략이 될 수 있다.
/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 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")