이중 EMA 및 AC 지표 기반 트렌드 다음 전략

저자:차오장, 날짜: 2024-01-15 12:02:54
태그:

img

전반적인 설명

이 전략은 이중 EMA 및 AC 가속 오시레이터 지표에 기반하여 설계되었습니다. 이중 EMA 지표는 가격 트렌드 방향을 결정하는 데 사용되며, AC 지표는 필터링 효과를 위해 트렌드 신호를 확인하는 데 사용됩니다. 이 전략은 신호 품질을 향상시키고 트렌드로부터 이익을 얻기 위해 트렌드 추적 및 신호 필터링 기능을 모두 결합합니다.

전략 논리

이 전략은 두 가지 모듈으로 구성됩니다.

  1. 이중 EMA 모듈

    • 2일 EMA와 20일 EMA를 사용하여 이중 EMA 지표를 구축합니다. 가격이 2일 EMA를 넘을 때 구매 신호가 생성됩니다. 가격이 20일 EMA를 넘을 때 판매 신호가 생성됩니다.

    • 이 모듈은 기본 트렌드를 따르는 단기 및 중기 트렌드 방향을 결정합니다.

  2. AC 모듈

    • 트렌드 신호를 확인하기 위해 AC 가속 오시레이터의 양수와 음수를 사용하십시오. 트레이딩 신호는 이중 EMA와 AC 지표가 방향에 동의 할 때만 생성됩니다.

    • 이 모듈은 잘못된 신호를 필터링하고 신뢰성을 향상시킵니다.

요약하자면 이 전략은 주요 추세를 탐지하기 위한 이중 EMA와 잘못된 파장을 필터링하기 위한 AC 지표를 통합하여, 방법론에 따라 체계적인 추세를 형성합니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 이중 EMA는 중장기 트렌드를 추적하고, AC는 단기 잡음을 필터링합니다.

  2. 훌륭한 필터링 효과로 긴 수익 후 판매 또는 짧은 수익 후 구매를 피합니다.

  3. 다양한 제품과 시장 환경에 적응 할 수있는 유연한 매개 변수 조정.

  4. 명확한 전략 논리, 이해하기 쉽고 최적화하고 개선하기 쉽습니다.

  5. 트렌딩 상품의 수익 잠재력을 따라 괜찮은 추세입니다.

위험 분석

이 전략에는 몇 가지 위험이 있습니다.

  1. 부적절한 이중 EMA 매개 변수 설정은 짧은 트렌드를 놓칠 수도 있고 불필요한 거래를 일으킬 수도 있습니다.

  2. 잘못된 AC 매개 변수 설정은 유효하지만 약한 신호를 필터링하거나 충분한 잡음을 필터링하지 않을 수 있습니다.

  3. 급변하는 시장에 적응할 수 없는 것 처럼

  4. 다양한 시장에서 수익성이 부족하면 트렌드를 따르는 전략으로 사용해야합니다.

최적화 방향

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

  1. 다른 제품 특성에 맞는 최적의 매개 변수를 찾기 위해 더 많은 매개 변수 조합을 테스트합니다.

  2. 스톱 로스 모듈을 추가하면 큰 손실로 종료됩니다.

  3. 더 많은 지표로 신호를 필터합니다.

  4. 중장기 트렌드를 추적하기 위해 장기 단기 콤보 전략을 개발하고, 트렌드를 따라 포지션을 줄이거나 추가하기 위해 단기 트레이드를 활용합니다.

결론

트렌드를 위한 이중 EMA와 소음을 필터링하기 위한 AC를 결합하는 아이디어는 학습할 가치가 있다. 이 전략은 트렌딩 제품을 추적하기에 적합한 품질 신호와 신뢰성을 가지고 있다. 적절한 매개 변수 조정으로, 이 전략을 사용하여 트렌드를 타고 큰 이익을 얻을 수 있다.


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/01/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The Accelerator Oscillator has been developed by Bill Williams 
// as the development of the Awesome Oscillator. It represents the 
// difference between the Awesome Oscillator and the 5-period moving 
// average, and as such it shows the speed of change of the Awesome 
// Oscillator, which can be useful to find trend reversals before the 
// Awesome Oscillator does.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos

AC(nLengthSlow,nLengthFast) =>
    pos = 0.0
    xSMA1_hl2 = ta.sma(hl2, nLengthFast)
    xSMA2_hl2 = ta.sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = ta.sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    cClr = nRes > nRes[1] ? color.blue : color.red
    iff_1 = nRes > 0 ? 1 : nz(pos[1], 0)
    pos := nRes < 0 ? -1 : iff_1           
    pos

strategy(title='Combo 2/20 EMA & Accelerator Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Accelerator Oscillator  ═════●'
nLengthSlow = input(33,  title="Length Slow", group=I2)
nLengthFast = input(6, title="Length Fast", group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)

StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosAC = AC(nLengthSlow,nLengthFast)
iff_1 = posEMA20 == -1 and prePosAC == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosAC == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)

더 많은