EMA 및 MACD 지표를 기반으로 한 트레일링 스톱로스 트레이딩 전략


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

개요

이 전략은 지수 이동 평균 ((EMA) 과 이동 평균 수렴 이차 ((MACD) 두 지표를 결합하여 거래 신호를 생성하고, 트래킹 스톱 로스를 사용하여 위험을 제어합니다. 이 전략은 트렌디스틱한 행동에 적용되며, 중기 트렌드를 추적하는 긴 라인 포지션을 수행합니다.

전략 원칙

빠른 EMA 라인이 느린 EMA 라인을 통과하고 MACD 히스토그램 기둥이 공백되면, 전략은 더 많이; 다중 상위 포지션이 존재할 때, 하향 추적 스톱 손실 라인을 설정하고, 가격이 스톱 손실 라인을 넘어 떨어지면 일정 비율로 스톱 손실이 다중 상위 포지션에서 빠져 나갑니다.

구체적으로, 전략은 7일 EMA와 14일 EMA를 사용하여 느린 EMA를 구축합니다. 12일 EMA를 빼기 26일 EMA를 사용하여 MACD 값을 얻습니다. 9일 EMA를 사용하여 신호 라인을 얻습니다. 7일 EMA에서 14일 EMA를 통과하고 MACD 값에서 신호를 통과하면 더 많은 입장을 열고, 그 다음으로 하향 추적 스톱 라인을 설정하고, 가격이 높은 지점에서 어느 정도 이상 떨어지면 스톱 손실을 제거하여 더 많은 주문을합니다.

우위 분석

이 전략은 EMA와 MACD 두 지표를 결합하여 위조 돌파구를 효과적으로 필터링 할 수 있습니다. EMA는 트렌드 방향을 판단하고 MACD는 매매 지점을 판단합니다. 둘을 결합하면 거래 빈도를 줄이면서도 신호 품질을 향상시킬 수 있습니다.

회귀는 이 전략이 곰 시장에서도 좋은 수익을 얻을 수 있음을 보여 주며, 전략이 어느 정도 거칠다는 것을 보여준다. 전략 거래 빈도가 높지 않고, 중·장기 포지션 보유에 적합하다. 전략의 경향성을 조정하기 위해 EMA 사이클 파라미터를 적절히 조정할 수 있다.

위험 분석

이 전략은 주로 based on 지표에 기반하며, 중매될 위험이 있다. 시장이 충격적 조정 단계에 있을 때, 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)