이 전략의 핵심 아이디어는 EMA 지표를 주간 시간 프레임에서 일일 거래로 지도하는 것입니다.
이 전략은 먼저 일일 차트에서 6일, 12일, 26일, 52일 EMA를 계산하고, 주간 EMA 매개 변수 설정에 해당하는 42일, 84일, 182일, 364일 EMA를 계산합니다.
다음으로, 42일 EMA와 84일 EMA의 교차가 장기 트렌드를 결정하는데 사용되며, 84일 EMA와 182일 EMA의 교차가 중장기 트렌드를 결정하는데 사용된다.
더 짧은 기간 EMA가 더 긴 기간 EMA를 넘을 때, 긴 기간 EMA를 넘을 때, 더 짧은 기간 EMA가 더 긴 기간 EMA를 넘을 때, 포지션을 닫습니다.
이 매핑 방법을 통해 우리는 일일 거래에서 주간 수준의 EMA 지표로부터 지원을 받습니다. 이것은 약간의 소음을 필터링하고 더 큰 트렌드 기회를 포착하는 데 도움이됩니다.
이 전략은 일일 거래의 유연성과 주간 EMA의 안정성을 결합하며 다음과 같은 장점을 가지고 있습니다.
주간 EMA는 시장 소음을 효과적으로 필터하고 실제 트렌드 움직임을 식별 할 수 있습니다. 매일 거래는 매일 형식에 따라 더 정확한 입력을 선택할 수 있습니다.
주간 EMA 매개 변수는 더 안정적이며, 단기 가격 변동에 덜 영향을 받습니다. 동시에, 트렌드 판단과 결합된 일일 형식은 보다 신속한 종료로 이어집니다.
EMA 교차점은 순환 트렌드 반전 지점을 명확하게 식별 할 수 있습니다. 매일 거래를 통해 이점을 얻는 것은 상대적으로 높은 승률으로 이어집니다.
다른 기간 EMA 조합은 장기, 중장기 및 단기 트렌드 기회를 포착합니다.
이 전략은 거래 빈도가 낮고, 장기 보유에 적합합니다. 과도한 거래로 인한 미끄러짐 비용을 줄여줍니다.
이 전략의 주요 위험은 다음과 같습니다.
주간 EMA 진입 신호는 가장 이른 가격 변화 시기를 잡지 못하고 지연할 수 있습니다.
출입은 EMA 교차에 의존하고, 형성, 변동성 등을 고려하지 않고, 조기 출입으로 이어질 수 있습니다.
몇 가지 EMA 교차가 일방적인 보유를 과도하게 늘리는 경향이 있습니다.
스톱 손실이 없다는 것은 높은 마감 위험을 의미합니다. 적극적인 인간 관리가 필요합니다.
거친 매개 변수 조정, 다양한 동전에서 최적의 성능을 위해 조정해야합니다.
위험은 다음을 통해 줄일 수 있습니다.
다른 지표로 진입 포메이션을 식별하고 EMA 신호보다 먼저 포지션을 취합니다.
탈락 규칙, 즉, 손실을 멈추고, 이익을 취하는 것을 추가해서
EMA 기간을 최적화하고, 다른 코인들에 적합한 기간 조합을 테스트합니다.
다단계 거래, 여러 계층 포지션에 대한 다른 EMA, 일방적인 보유 위험을 낮추는
이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.
소음을 필터링하기 위해 매일 입력되는 규칙, 형식, 부피 등을 추가합니다.
주식, MACD를 조합해서 더 나은 입출입을 위해 과소매-대수매를 판단합니다.
스톱 로스를 추가하고, 수익을 취해서 마이너 다운로드를 낮추고, 수익을 고정합니다.
EMA 기간을 최적화하고, 다른 기간의 콤보를 테스트합니다.
더 부드러운 매개 변수를 위해 DEMA, TEMA와 같은 다른 EMA를 시도하십시오.
다른 EMA 신호에 기초한 위치 크기를 추가합니다.
다른 거래 쌍에 대한 연구 매개 변수
동적 EMA 최적화를 위한 기계 학습 방법을 탐구합니다.
이것은 장기 보유에 적합한 우수한 트렌드 다음 전략입니다. 그것은 현명하게 주간 트렌드 판단과 매일 실행을 결합합니다. 적절한 개선으로 매우 실용적인 멀티 타임프레임 거래 시스템이 될 수 있습니다.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=1 strategy("Investing Weekly mapped to Daily", overlay=true, pyramiding=100) // === PLOTTING EMA === plot(ema(close, 6), color=aqua, transp=0, linewidth=2, title="ema6") plot(ema(close, 12), color=white, transp=0, linewidth=2, title="ema12") plot(ema(close, 26), color=#9802FF, transp=0, linewidth=2, title="ema26") plot(ema(close, 52), color=orange, transp=0, linewidth=2, title="ema52") plot(ema(close, 42), color=aqua, transp=0, linewidth=5, title="W-ema6") plot(ema(close, 84), color=white, transp=0, linewidth=5, title="W-ema12") plot(ema(close, 182), color=#9802FF, transp=0, linewidth=5, title="W-ema26") plot(ema(close, 364), color=orange, transp=0, linewidth=5, title="W-ema52") // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2017, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === STRATEGY FOR CRYPTO === ema42= ema(close, 42) ema84= ema(close, 84) ema182= ema(close, 182) enterLong1 = cross(ema42, ema84) and ema42 > ema84 exitLong1 = cross(ema42, ema84) and ema42 < ema84 enterLong2 = cross(ema84, ema182) and ema84 > ema182 exitLong2 = cross(ema84, ema182) and ema84 < ema182 strategy.entry(id="Entry_1", long=true, when=enterLong1) strategy.entry(id="Entry_2", long=true, when=enterLong2) strategy.entry(id="Exit_1", long=false, when=exitLong1) strategy.entry(id="Exit_2", long=false, when=exitLong2)