트리플 EMA 추세 추종 전략


생성 날짜: 2023-12-20 15:00:44 마지막으로 수정됨: 2023-12-20 15:00:44
복사: 0 클릭수: 477
1
집중하다
1219
수행원

트리플 EMA 추세 추종 전략

개요

트리플 EMA 트렌드 추적 전략은 시장 트렌드를 추적하는 데 매우 적합한 전략이다. 그것은 세 개의 다른 주기적 EMA를 포지션 구축 신호로 사용하여 충분한 트렌드 확인이 발생할 때 오버 헤드 또는 빈 헤드 포지션을 구축한다.

이 전략의 장점은 가짜 신호를 줄이고 트렌드가 충분히 강해지면 다시 진입할 수 있다는 것이다. 동시에, 이 전략은 시장의 변동성에 따라 손실을 추적할 수 있는 적응형 손실 시스템을 가지고 있어 더 나은 위험 관리 효과를 얻을 수 있다.

전략 원칙

창고 논리

이 전략은 7, 14 및 21 주기의 세 개의 EMA를 포지션 신호 지표로 사용합니다. 구체적인 논리는, 가격이 동시에 세 개의 EMA를 상회할 때, 더 많이 하고, 가격이 동시에 세 개의 EMA를 상회할 때, 더 많이 하다는 것입니다.

이러한 디자인은 가짜 신호를 줄이고, 트렌드가 충분히 명확한 후 다시 입장을 보장할 수 있다. 동시에, 세 개의 EMA 주기가 적절하게 설정되어, 시장 추세 발생을 적시에 포착할 수 있다.

손해 방지 방법

이 전략은 ATR 및 최대 회수 기반의 적응적 손해 중지 시스템을 사용합니다. 그것은 실시간으로 가격 변동률을 계산하고 이에 따라 손해 중지 라인을 설정합니다. 구체적으로, ATR의 특정 배수를 손해 차단 구역으로 계산합니다.

상승 과정에서, 스톱 라인은 새로운 높은 상승과 함께 이동할 수 있으며, 더 좋은 추적 효과를 갖는다. 가격이 완충 구역의 낮은 지점으로 돌아갔을 때, 스톱 라인은 활성화되고, 평소 포지션 스톱이다. 이것은 특정 시장 상황에 따라 스톱 리스크를 제어할 수 있다.

이윤 창출 방법

이 전략은 일정한 비율의 중지 방식을 사용한다. 입장을 열고 나서, 입구 가격보다 일정한 비율의 중지 경계를 설정한다. 가격이 경계를 통과했을 때, 적극적으로 위치 평점을 취한다.

이 고정 비율 스톱의 장점은 목표 수익을 미리 설정할 수 있고, 달성한 후 만족 퇴출할 수 있다는 것이다. 또한 가격으로 다시 돌아오는 위험을 피하는 것이다. 스톱 비율은 필요에 따라 조정할 수 있다.

우위 분석

  • 위조 신호를 줄여서 포장 이후의 강력한 가격 경향을 보장할 수 있습니다.
  • EMA 주기적 중첩을 사용하여 시장 추세를 빠르게 파악할 수 있습니다.
  • 자기 적응식 손해 방지 시스템, 변동율에 따라 위험을 제어할 수 있다
  • 매출 목표에 도달한 후 퇴출
  • ATR 및 최대 회수 계산에 기반한 중지 방식은 시장 상황에 따라 최적화 할 수 있습니다.
  • 매개 변수를 변경하여 정책 스타일을 쉽게 조정할 수 있습니다.

위험 분석

  • 진동상태에서 EMA는 자주 교차할 수 있고, 쉽게 잡힐 수 있다.
  • 고정 스톱은 시장 상황에 따라 조정할 수 없으며, 더 많은 수익을 놓치거나 손실을 증가시킬 수 있습니다.
  • 손실을 추적하는 것을 중단하면 더 높은 지점을 다시 추적할 수 없으며 가격이 다시 떨어지면 손실이 증가 할 수 있습니다.
  • 일방적인 돌파행동에서 고정된 정지 비율이 너무 보수적이어서 충분한 수익을 얻지 못할 수 있습니다.

추세를 판단하는 지표와 결합하여 불안정한 상황에서 맹목적으로 입장을 세우는 것을 피할 수 있습니다. 또한 모바일 스톱 또는 손해배상 비율과 같은 방법을 사용하여 스톱 방식을 더 유연하게 할 수 있습니다. 전반적으로, 전략 사용과 함께 인공 판단이 여전히 필요합니다.

최적화 방향

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

  1. MACD, KD 등과 같은 더 많은 지표를 사용하여 진출 시기를 판단하여 충격적인 상황에 빠지지 않도록하십시오.

  2. 을 움직여보거나, 을 줄여보거나, 을 더 유연하게 만들 수 있습니다.

  3. 스톱 모드에서 다운 트래킹 메커니즘을 추가하여 가격이 다시 떨어지면 낮은 지점을 다시 추적하여 위험을 제어 할 수 있습니다.

  4. 다양한 품종의 특성에 따라 EMA 주기 파라미터를 조정하고, 트렌드에 대한 판단을 최적화한다.

  5. 포지션 관리 모듈을 추가하여 자금 사용 비율에 따라 단일 포지션을 조정할 수 있습니다.

요약하다

트리플 EMA 트렌드 추적 전략은 매우 실용적인 트렌드 추적 전략이다. 그것은 강한 트렌드 판단 능력을 가지고 있으며, 또한 자동으로 주문을 관리 할 수있는 적응형 스톱 스톱 스로드 메커니즘을 갖추고 있다. 최적화 측면에서, 스톱 스톱 스로드 시스템은 실시간 시장 상황에 맞게 조정할 수 있도록 추가적으로 개선 될 수 있다. 그러나 전체적으로, 이 전략은 실행하기 쉽고 위험 제어 가능한 선택이다.

전략 소스 코드
/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)


//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

ema_1 = ema(close, input(7))
ema_2 = ema(close, input(12))
ema_3 = ema(close, input(21))

Take_profit= ((input (4))/100)

longTakeProfit = strategy.position_avg_price * (1 + Take_profit)


length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)

go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3)



closeLong = close > longTakeProfit or crossunder(close, vStop)



//Entry 
strategy.entry(id="long", long = true, when = go_long and window())



//Exit
strategy.close("long", when = closeLong and window())

plot(vStop,"Vstop", color.black, linewidth=2)
plot(ema_1,"EMA Short", color.green, linewidth=1)
plot(ema_2,"EMA Mid", color.purple, linewidth=1)
plot(ema_3,"EMA Long", color.red, linewidth=1)