이중 이동 평균 지능 추적 거래 전략은 이동 평균과 특정 지표에 기반한 트렌드 다음 전략이다. 이 전략은 채널을 구축하기 위해 서로 다른 매개 변수 설정을 가진 두 개의 이동 평균을 사용하고 OTT 지표를 결합하여 채널의 상부와 하부 한계를 설정하여 가격 추세를 지능적으로 추적합니다. 가격이 채널을 통과하면 구매 또는 판매 작전이 실행됩니다.
이 전략의 핵심 방법론은 두 개의 이동 평균과 OTT 지표를 사용하여 적응 채널을 구축하는 것입니다. 특히:
빠른 선 MAvg를 계산하여 CLOSE와 사용자 정의 이동 평균을 입력으로 사용하여 5개의 기간을 계산합니다.
MAvg와 미리 설정된 비율을 기준으로 채널의 긴 라인 위치 LongStop와 짧은 라인 위치 ShortStop를 계산합니다.
OTT 지표에서 채널 스톱 로스 MT를 계산하고, 길고 짧은 방향에 기초한 채널 가격 OTT를 계산합니다.
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")