EMA와 MACD 트레이닝 스톱 로스 트레이닝 트레이딩 전략

저자:차오장, 날짜: 2023-09-20 11:21:14
태그:

전반적인 설명

이 전략은 지수 이동 평균 (EMA) 및 이동 평균 회전 분차 (MACD) 지표를 결합하여 거래 신호를 생성하고 위험을 제어하기 위해 후속 스톱 손실을 채택합니다. 이 전략은 트렌딩 시장에 적합하며 장기 보유에 대한 중장기 트렌드를 추적하는 것을 목표로합니다.

전략 논리

빠른 EMA 라인이 느린 EMA 라인의 위를 넘어서 MACD 히스토그램이 하향으로 변하면 전략은 길게됩니다. 긴 포지션이 존재하면 하향 추종 스톱 로스 라인이 설정됩니다. 가격이 특정 비율로 스톱 로스 라인 아래에 떨어지면 긴 포지션이 중단됩니다.

특히, 전략은 7일 EMA와 14일 EMA를 사용하여 빠른 EMA와 느린 EMA를 구성합니다. MACD 값은 26일 EMA를 12일 EMA에서 빼고, 신호선은 MACD의 9일 EMA로 얻습니다. 7일 EMA가 14일 EMA를 넘고 MACD 값이 신호선을 넘으면 긴 포지션이 열립니다. 그 다음 하향 트레일링 스톱 로스 라인이 설정됩니다. 가격이 높은 수준에서 일정 비율로 떨어지면 긴 포지션이 중단됩니다.

이점 분석

이 전략은 EMA와 MACD 지표를 결합하여 잘못된 브레이크오웃을 효과적으로 필터할 수 있다. EMA는 트렌드 방향을 판단하고 MACD는 엔트리 포인트를 결정한다. 이 둘을 결합하면 신호 품질을 향상시키는 동시에 거래 빈도를 줄일 수 있다. 후속 스톱 손실은 기존의 이익을 최대한 보호하고 주요 불리한 움직임이 발생할 때 적시에 스톱 손실을 줄일 수 있다.

백테스트는 이 전략이 곰 시장에서도 적당한 수익을 창출할 수 있음을 보여줍니다. 이는 특정 안정성을 나타냅니다. 거래 빈도는 높지 않으며 중장기 보유에 적합합니다. EMA 기간 매개 변수는 트렌드를 따르는 경향에 맞게 조정 할 수 있습니다.

위험 분석

이 전략은 주로 지표에 의존하며, 윙사워 될 위험이 있습니다. 범위 제한 통합 중 EMA와 MACD는 과도한 잘못된 신호를 생성하여 과도한 거래 및 손실로 이어질 수 있습니다. 후속 스톱 손실은 하향 브레이크에서만 작동하며, 상승 브레이크 후 급격한 반전을 처리 할 수 없습니다.

EMA 기간을 적절하게 확장하면 잘못된 신호를 줄일 수 있습니다. 부피 또는 변동성 지표와 같은 다른 지표가 필터 신호로 결합 될 수 있습니다. 또한, 중지 손실 비율은 시장 조건에 따라 조정 될 수 있습니다. 중지 손실 및 윙사 위험을 균형을 맞추기 위해.

최적화 방향

  1. 더 적합한 매개 변수를 찾기 위해 다른 EMA 기간 조합을 테스트 할 수 있습니다.

  2. 신호 필터링과 품질 향상을 위해 RSI, KD와 같은 다른 지표가 추가 될 수 있습니다.

  3. 스톱 로스 비율은 서로 다른 상품에 따라 조정할 수 있고, 동적 트레일링 스톱도 있습니다.

  4. 브레이크아웃, 패턴 인식 및 다른 기법이 더 사용자 정의 가능한 입출장 규칙을 위해 통합 될 수 있습니다.

  5. 머신러닝은 EMA를 돕기 위해 전반적인 트렌드 방향을 예측하는 데 도움이 될 수 있습니다.

요약

전체적으로 전략은 상당히 견고하며, 곰 시장에서도 적당한 수익을 창출합니다. 그러나 특정 윙사 위험이 존재하며, 매개 변수 조정 및 신호 필터링이 필요합니다. 다른 기술적 지표와 기계 학습과 함께 추가 최적화가 크게 개선 될 수 있습니다. 요약하자면, 전략은 양적 거래에 신뢰할 수있는 템플릿을 제공합니다.


/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-19 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule

//@version=5
strategy('EMA and MACD with Trailing Stop Loss',
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=30,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

// EMAs 
fastEMA = ta.ema(close, 7)
slowEMA = ta.ema(close, 14)
plot(fastEMA, color = color.blue)
plot(slowEMA, color = color.green)
//buyCondition1 = ta.crossover(fastEMA, slowEMA)
buyCondition1 = fastEMA > slowEMA


// DMI and MACD inputs and calculations
[macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9)
buyCondition2 = ta.crossover(macd_signal, macd)


// Configure trail stop level with input options
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

// Determine trail stop loss prices
longStopPrice = 0.0
shortStopPrice = 0.0

longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - longTrailPerc)
    math.max(stopValue, longStopPrice[1])
else
    0

shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + shortTrailPerc)
    math.min(stopValue, shortStopPrice[1])
else
    999999
    

if (buyCondition1 and buyCondition2 and notInTrade and timePeriod)
    strategy.entry(id="Long", direction = strategy.long)

strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)


//if (sellCondition1 and sellCondition2 and notInTrade and timePeriod)
//strategy.close(id="Close", when = sellCondition1 or sellCondition2)


더 많은