
이 전략은 쌍의 EMA 지표와 AC 가속 진동 지표에 기반하여 설계되었다. 이 중 쌍의 EMA 지표는 가격 트렌드 방향을 판단하는 데 사용되며, AC 지표는 트렌드 신호를 확인하여 필터링 효과를 구현한다. 이 전략은 트렌드 추적과 신호 필터링의 두 가지 기능을 결합하여 신호 품질을 향상시키고 트렌드에서 수익을 창출하기 위해 고안되었습니다.
이 전략은 크게 두 가지로 구성되어 있습니다.
이중 EMA 모듈
2일 EMA와 20일 EMA를 사용하여 쌍 EMA 지표를 구성한다. 가격이 2일 EMA를 넘으면 구매 신호로 간주하고, 가격이 20일 EMA를 넘으면 판매 신호로 간주한다.
이 모듈은 가격의 단기 및 중기 트렌드 방향을 판단하여 기본적인 트렌드 추적을 구현한다.
AC 모듈
트렌드 신호를 확인하기 위해 AC 가속 진동 지표의 양과 음값을 사용한다. 쌍 EMA와 AC 지표가 같은 방향으로 있을 때만 거래 신호가 발생한다.
이 모듈은 가짜 신호를 필터링하여 신호의 신뢰도를 높인다.
종합적으로, 이 전략은 쌍 EMA 판단 큰 경향, 그리고 AC 지표 필터링 가짜 돌파구를 통합하여 체계적인 경향 추적 시스템을 형성한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이중 EMA는 중장선 트렌드를 추적하고, AC는 단기 잡음을 제거하고, 조합 효과는 좋다.
신호 필터링 효과는 좋으며, 다중 헤드 이득 후 맹목적으로 공백을 하거나, 빈 헤드 이득 후 맹목적으로 더 많은 일을 하는 상황을 피할 수 있다.
조정 매개 변수는 다양한 품종과 시장 환경 조정 매개 변수와 연동할 수 있으며, 적용 범위는 넓다.
전략적 사고는 명확하고 이해하기 쉽으며, 거래자의 최적화와 개선을 측정하는 데 도움이됩니다.
트렌드 품종에서 좋은 추적 수익을 얻을 수 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이중 EMA 파라미터를 잘못 설정하면 더 짧은 트렌드를 놓치거나 더 많은 거래를 할 수 있습니다.
AC 매개 변수를 잘못 설정하면 약한 유효 신호를 필터링하거나 충분한 소음을 필터링 할 수 없습니다.
급격한 변화의 시장과 같은 급격한 폭락에 대처할 수 없습니다.
이런 현상들은 시장의 불안정 상태에서 충분한 수익을 얻을 수 없으므로, 트렌드 추적 전략으로 사용해야 한다.
이 정책은 다음과 같은 차원에서 최적화될 수 있습니다:
다양한 종류의 특성에 맞는 최적의 변수를 찾기 위해 더 많은 변수 조합을 테스트합니다.
손실이 너무 커지면 손실을 멈추고 탈퇴하는 모듈을 추가합니다.
더 많은 지표와 결합하여 신호 필터링을 최적화하십시오.
장단 코스 포지션 전략을 개발하고, 트렌드에서 중장단 코스를 추적하고, 장단 코스를 위해 단축 코스를 대상으로 거래한다.
이 전략은 이중 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)