다중 기간 EMA 추세 돌파 거래 전략


생성 날짜: 2024-02-26 16:55:48 마지막으로 수정됨: 2024-02-26 16:55:48
복사: 0 클릭수: 736
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 기간 EMA 추세 돌파 거래 전략

개요

이 전략은 다중 주기 지수 이동 평균 ((EMA) 에 기반한 트렌드 추적 및 순차 돌파 거래 전략이다. 그것은 동시에 5개의 다른 주기의 EMA를 결합하여 강력한 트렌드 식별 능력을 가지고 있으며, 순차적으로 중·장선 가격 움직임을 잡을 수 있다.

전략 원칙

  1. 5개의 다른 주기의 EMA를 계산합니다. 구체적으로 12주기, 15주기, 18주기, 21주기 및 24주기 EMA입니다.

  2. EMA 순서: EMA12 > EMA15 > EMA18 > EMA21 > EMA24 구매 신호로; EMA12 < EMA15 < EMA18 < EMA21 < EMA24 판매 신호로.

  3. 트레이딩 신호는 사용자가 설정한 시작 날짜 이후에만 트레이딩됩니다.

  4. 구매 신호가 발생했을 때, 상장 개시 동작을 수행합니다. 판매 신호가 발생했을 때, 상장 개시 동작을 수행합니다.

이 전략은 여러 EMA를 조합하여 트렌드 채널을 형성하고, 채널 내외 궤도의 관계를 이용하여 가격 트렌드 방향을 판단한다. EMA 주기 설정이 비교적 가깝기 때문에, 돌파 신호에 대한 감수성을 높일 수 있으며, 또한 단기 시장 소음에 의해 오해되는 것을 피할 수 있다. 또한, 사용자가 전략의 시작 날짜를 사용자 정의할 수 있게 함으로써, 더 큰 유연성을 실현한다.

우위 분석

  1. 다중 EMA를 사용하여 트렌드 채널을 형성하고, 트렌드를 식별하는 능력이 강하다.

  2. EMA 주기 설정은 근접하고, 트렌드 돌파 신호에 민감하며, 중장선 트렌드를 적시에 포착할 수 있다.

  3. 사용자 정의 정책 시작 날짜, 사용 유연성

  4. 자금 관리는 개별 주문의 크기를 제어할 수 있습니다.

  5. 거래 규칙은 명확하고 간단하며 트렌드 추적에 적합합니다.

위험 분석

  1. EMA는 본질적으로 지연되어 있으며, 단기간에 급격한 변동을 놓칠 수 있다.

  2. 파격 거래는 쉽게 잡힐 수 있고, 합리적인 손실이 필요합니다.

  3. 트렌드가 바뀌면 큰 손실이 발생할 수 있습니다.

  4. 적절한 주식 품종을 선택해야 하며, 과도한 변동성이 있는 주식에는 적합하지 않다.

그에 따른 위험 제어 및 최적화 조치:

  1. 적절하게 EMA 변수를 조정하고, 사이클 조합을 최적화한다

  2. 다른 지표들을 필터링하여 트렌드 방향을 결정합니다.

  3. 단위 손실을 통제하기 위해 합리적으로 스톱포트를 설정하십시오.

더 나은 생각

  1. 다른 지표의 조합을 추가하여 전략의 효과를 향상시킵니다.

  2. 거래량에 대한 조건적 판단을 추가하여 가짜 돌파구를 피하십시오.

  3. EMA의 주기적 변수를 최적화하여 최적의 조합을 찾는다.

  4. 특정 기간 동안 거래를 중단하고 시장의 변동기를 피하십시오.

  5. 기계 학습 방법을 사용하여 EMA 주기 및 매개 변수를 동적으로 최적화하십시오.

요약하다

이 전략은 전반적으로 전형적인 트렌드 추적 전략이다. 이 전략은 EMA의 장점을 활용하여 여러 EMA를 조합하여 거래 채널을 형성하고, 가격이 채널을 뚫을 때 거래 신호를 생성한다. 전략의 장점은 거래 규칙이 간단하고 명확하며, 중장선 트렌드를 쉽게 추적할 수 있다는 것이다. 단점은 단기 시장 소음에 민감하며, 약간의 지연성이 있다. 적절한 매개 변수와 다른 보조 도구의 추가로 전략의 안정성과 효과를 높일 수 있다.

전략 소스 코드
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Scalping Strategy - EMA",
         shorttitle="EMA Scalp",
         overlay=true)

// User input for start date
startDateInput = input(title="Start Date", defval=timestamp("2024-02-01"))

// Calculate EMAs
ema_12 = ta.ema(close, 12)
ema_15 = ta.ema(close, 15)
ema_18 = ta.ema(close, 18)
ema_21 = ta.ema(close, 21)
ema_24 = ta.ema(close, 24)

// Plot EMAs
plot(ema_12, color=color.red, title="EMA 12")
plot(ema_15, color=color.orange, title="EMA 15")
plot(ema_18, color=color.yellow, title="EMA 18")
plot(ema_21, color=color.green, title="EMA 21")
plot(ema_24, color=color.blue, title="EMA 24")

// Define a start date for the strategy based on user input
isAfterStartDate = true

// Visualize the isAfterStartDate condition
bgcolor(isAfterStartDate ? color.new(color.green, 90) : na, title="After Start Date")

// Entry conditions
buy_condition = (ema_12 > ema_15) and (ema_15 > ema_18) and (ema_18 > ema_21) and (ema_21 > ema_24) and isAfterStartDate
sell_condition = (ema_12 < ema_15) and (ema_15 < ema_18) and (ema_18 < ema_21) and (ema_21 < ema_24) and isAfterStartDate

// Execute trades using conditional blocks
if (buy_condition)
    strategy.entry("Buy", strategy.long)
    
if (sell_condition)
    strategy.entry("Sell", strategy.short)