이 전략은 렌코 촛불 차트에 기반한 이동 평균 크로스오버 전략이다. 그것은 크로스오버 신호를 구성하기 위해 TEMA 지표를 사용하고 필터링을 위해 장기 이동 평균을 결합하여 렌코 차트에서 트렌드를 식별하고 구매 및 판매 신호를 생성하는 것을 목표로합니다.
이 전략의 주요 신호 소스는 단기 TEMA 지표와 SMA 지표의 황금 십자가와 죽음의 십자가에서 나옵니다. 구체적으로 논리는 다음과 같습니다.
단기 TEMA가 단기 SMA를 넘을 때, 긴 지점에 가자; 단기 TEMA가 단기 SMA를 넘을 때, 포지션을 닫는다.
또한 전략은 또한 두 가지 선택적 매개 변수를 설정합니다. avg_protection 및 gain_protection:
avg_protection>0일 때, 닫기 가격이 현재 평균 보유 가격보다 낮을 때만 구매합니다. 이는 비용 기반을 줄일 수 있습니다.
이득_보호>0일 때, 닫기 가격이 출입 가격을 일정 비율로 초과할 때만 매각하여 수익을 올릴 수 있습니다.
마지막으로, 전략은 또한 장기 SMMA 지표를 트렌드 필터로 사용합니다. 닫기 가격이 SMMA 이하일 때만 긴 신호가 작동됩니다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략에는 또한 몇 가지 위험이 있습니다.
이러한 위험을 줄이기 위해 적절한 매개 변수 조정, 중지 손실 설정 등을 채택 할 수 있습니다.
이 전략의 주요 최적화 방향은 다음과 같습니다.
일반적으로 이것은 기본적이고 간단하지만 매우 실용적인 이동 평균 크로스오버 전략입니다. 주로 렌코 바의 우수한 소음 감소 효과와 신호를 생성하는 TEMA 지표의 높은 민감도에 의존합니다. 한편, 장기 및 단기 이동 평균 간의 협업은 또한 트렌드를 따르는 능력을 향상시킵니다. 매개 변수 조정 및 적절한 최적화로이 전략은 양적 거래에 효과적인 선택이 될 수 있습니다.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("TEMA Cross", overlay = true) tema(src, len) => 3*ema(src, len) - 3*ema(ema(src, len), len) + ema(ema(ema(src, len),len),len) smma(src, len) => sa = 0.0 sa := na(sa[1]) ? sma(src, len) : (sa[1] * (len - 1) + src) / len sa temaLength = input(5) smaLength = input(3) smmaLength = input(30) tema1 = tema(close, temaLength) sma1 = sma(tema1, smaLength) smma1 = smma(close,smmaLength) plot(tema1, color = green, title = "TEMA") plot(sma1, color = orange, title = "SMA") plot(smma1, color = red, title = "SMMA") minGainPercent = input(2) gainMultiplier = minGainPercent * 0.01 + 1 avg_protection = input(1) gain_protection = input(1) longCondition = crossover(tema1, sma1) and tema1 < smma1 shortCondition = crossunder(tema1, sma1) strategy.entry("Buy", strategy.long, when = longCondition and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true)) strategy.close_all(when = shortCondition and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))