주간 EMA 기반 데이 트레이딩 전략


생성 날짜: 2023-09-20 17:11:52 마지막으로 수정됨: 2023-09-20 17:11:52
복사: 0 클릭수: 830
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략의 핵심 아이디어는 더 긴 트렌드의 지원을 얻기 위해 주위의 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의 안정성을 결합하여 다음과 같은 장점을 가지고 있습니다.

  1. 순환선 EMA는 시장의 소음을 효과적으로 필터링하여 진정한 트렌드 움직임을 식별할 수 있습니다.

  2. 둘레 EMA 파라미터 설정은 더 안정적이며, 단기 가격 변동에 영향을 받지 않는다. 또한, 일내의 형태를 결합하여 추세를 판단하고, 출전이 더 조기에 이루어진다.

  3. EMA의 골드포크, 데드포크는 단계적 트렌드 전환점을 명확하게 판단할 수 있다. 이내 거래로 수익을 올리고, 전체적인 승률이 높다.

  4. 다양한 주기적 EMA의 조합을 사용하여, 긴, 중간, 짧은 다양한 수준에서 트렌드 기회를 잠금 할 수 있습니다.

  5. 전략 거래 빈도가 낮아 긴 라인 보유에 적합하다. 거래 횟수에서 발생하는 슬라이드 포인트 손실을 줄일 수 있다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 주경 EMA 입시 신호는 늦어질 수 있으며, 가격 변화의 가장 초기 시점을 파악할 수 없습니다.

  2. 하루 경기 출전은 EMA 교차에 의존하며, 형태, 변동 등의 요소를 고려하지 않고 조기 출전이 될 수 있다.

  3. EMA 다공이 교차하는 횟수가 적고, 일방적인 포지션 보유 기간이 너무 길어질 수 있다.

  4. 하지만, 이 경우, 이 시스템은 더 많은 인적 손실을 초래할 수 있습니다. 그리고 인적 손실을 줄일 수 있습니다.

  5. 변수 설정은 거대하고, 다른 동전들은 최적의 효과를 얻기 위해 조정할 필요가 있다.

위험은 다음과 같은 방법으로 줄일 수 있습니다.

  1. 다른 지표와 함께 ENTRY 형태를 식별하고, EMA 진입점을 미리 배열한다.

  2. 단편적인 포지션 보유 기간이 너무 길지 않도록, 포스트로스, 스도 스톱도와 같은 출장 규칙을 추가하십시오.

  3. EMA 주기 파라미터를 최적화하고, 다른 통화에 적합한 주기 조합을 테스트한다.

  4. 다단계 거래, 서로 다른 EMA 주기에서 분단 포지션을 보유하여 일방적인 포지션 위험을 줄인다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 거래의 형태, 거래량 등에 대한 접근 규칙을 추가하고, 입시 노이즈 필터링한다.

  2. Stoch, MACD 등과 같은 지표가 과매매를 판단하고, 진입과 출입을 정밀화한다.

  3. 더 많은 스톱로스, 더 많은 스톱, 더 적은 인출 위험, 더 많은 수익을 확보할 수 있습니다.

  4. EMA 주기 변수를 최적화하고, 다른 주기 조합의 효과를 테스트한다.

  5. DEMA, TEMA 등과 같은 다른 EMA 파라미터 설정을 시도하여 부드러움을 향상하십시오.

  6. 포지션 관리 메커니즘을 추가하고, 다른 EMA 신호는 다른 포지션을 사용합니다.

  7. 다양한 품종의 매개 변수 설정을 연구하고, 다양한 거래 쌍에 적합한 전략을 수립한다.

  8. 기계 학습 방법을 탐색하여 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)