ADX EFI 50 이동평균 채널 회수 전략

저자:차오장, 날짜: 2023-09-19 17:10:51
태그:

전반적인 설명

이 전략은 트렌드 트레이딩을 위해 50주기 이동 평균 채널, ADX 방향 지표 및 EFI 에너지 지표의 조합을 사용합니다. EFI 에너지 지표가 트렌드 시작을 표시하면 50 MA 채널 영역 내에서 인하 기간 동안 시장에 진입합니다. 전략은 1 분 시간 프레임에 적합합니다.

전략 논리

  1. 50주기 이동평균 채널을 계산합니다. 상단역은 높은 가격의 이동평균이고 하단역은 낮은 가격의 이동평균입니다.

  2. 트렌드 강도를 결정하기 위해 ADX 방향 지수를 계산하고 강한 트렌드 (ADX>20) 도중만 거래를 고려합니다.

  3. 장기 (120주기) 및 단기 (15주기) EFI 에너지 인덱스를 계산합니다. 0 이상의 장기 인덱스는 에너지의 전반적인 상승 추세를 나타냅니다. 0 이하의 단기 인덱스는 단기 상승 추세를 나타냅니다.

  4. 장기 및 단기 EFI 인덱스가 구매 신호를 주고 가격이 50 MA 채널로 다시 끌어당길 때 긴 포지션을 취합니다.

  5. 장기 및 단기 EFI 인덱스가 판매 신호를 주고 가격이 50 MA 채널로 되돌아 갈 때, 짧은 포지션을 취합니다.

이점 분석

이 전략은 트렌드, 모멘텀 및 풀백 신호를 결합하여 대부분의 가짜 브레이크를 효과적으로 필터링합니다. 구체적인 장점은 다음과 같습니다.

  1. 50 MA 채널은 주요 트렌드 방향을 명확히 결정합니다.

  2. ADX 인덱스는 거래가 명확한 트렌드 중에만 이루어지는 것을 보장하며, 다양한 시장에서 위프사 (whipsaws) 를 피합니다.

  3. EFI 인덱스는 낮은 위험 입구점의 경향 에너지 급증을 포착합니다.

  4. 인출을 기다리는 것은 더 나은 위험/이익 비율을 허용합니다.

  5. 여러 가지 지표 조합은 거짓 파기 위험을 효과적으로 필터링합니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 강한 트렌드는 더 큰 인기를 가질 수 있으며 더 넓은 스톱 로스 범위가 필요합니다.

  2. 유동시장에서는 EFI가 잘못된 신호를 줄 수 있어 ADX와 같은 트렌드 필터링 지표와 결합해야 합니다.

  3. 너무 깊은 후퇴는 입구점을 놓칠 수 있으며, 아마도 MA 조정이 필요할 수 있습니다.

  4. 단일 거래 수단은 체계적인 시장 위험을 다양화시키지 못합니다.

최적화 방향

이 전략은 몇 가지 측면에서 개선될 수 있습니다.

  1. 최적의 보편적 매개 변수를 찾기 위해 더 많은 기기에 테스트합니다.

  2. 트레일링 스톱 손실을 통한 수익을 추가합니다.

  3. ADX, EFI 설정 및 더 많은 매개 변수 최적화.

  4. 강력한 트렌드 대 가짜 브레이크오웃 탐지를 위해 기계 학습을 통합합니다.

  5. 여러 시간 프레임 분석을 추가하고 시간 프레임 사이의 위치 크기를 조정합니다.

  6. 신호 품질을 향상시키기 위해 더 많은 트렌드 필터링 지표를 평가하십시오.

요약

전체적으로 이것은 트렌드, 모멘텀 및 풀백 신호를 결합하여 잘못된 브레이크오프를 필터하는 초보자를위한 훌륭한 트렌드 풀백 전략입니다. 스톱 로스, 매개 변수 조정, 타임프레임 및 기타의 정교화로 강력한 트렌드 추적 시스템이 될 수 있습니다. 요약하면 매우 실용적이고 연구 가치가있는 트렌드 거래 전략입니다.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
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/
// © trent777brown

//@version=5
// strategy("adx efi 50 ema channel, trend pullback", overlay=true, margin_long=100, margin_short=100, currency=currency.USD, initial_capital= 100000, close_entries_rule="ANY")

//bollingerbands
[basis, upperband, lowerband]= ta.bb(ohlc4, 50, 3) 
[basis2, upperband2, lowerband2]= ta.bb(ohlc4, 50, 2)
psar= ta.sar(.1, .1, .09)
ema50= ta.ema(hlc3, 50) 
ema50hi= ta.ema(high, 50) 
ema50lo= ta.ema(low, 50) 
ema18= ta.wma(hlc3, 15)
wma9= ta.wma(open, 9) 
wma5= ta.wma(ohlc4, 5) 
ema34= ta.rma(hlc3, 10)
[macdline, signalline, histline]= ta.macd(hlc3, 5, 34, 5) 
[macdline2, signalline2, histline2]= ta.macd(hlc3, 15,70, 24) 
[diplus, diminus, adx]= ta.dmi(20, 20) 
[diplus2, diminus2, adx2]= ta.dmi(12, 12)
rsi= ta.rsi(hlc3, 14)
rsisma= ta.sma(rsi, 10) 
stoch= ta.stoch(close, high, low, 21)
k= ta.wma(stoch, 3)
d= ta.wma(k, 3)
trendline5= ta.wma(hlc3, 300) 
trendline9= ta.wma(open, 540) 
trendline18= ta.wma(open, 1080)
atr=ta.atr(14)
plot(psar, color=color.red, style=plot.style_circles)
plot(ema50, color=color.white, linewidth=4) 
plot(ema50hi, color=color.yellow, linewidth=4)
plot(ema50lo, color=color.yellow, linewidth=4)
plot(ema34, color=color.aqua, linewidth=4)
plot(wma9, color=color.gray, linewidth=4) 
plot(wma5, color=color.lime, linewidth=4) 
plot(trendline18, color=color.orange, linewidth=4) 
plot(upperband, color=color.navy, linewidth=4) 
plot(lowerband, color=color.navy, linewidth=4)
plot(upperband2, color=color.navy, linewidth=4)
plot(lowerband2, color=color.navy, linewidth=4)
plot(trendline9, color=color.maroon, linewidth=4)
plot(trendline5, color=color.yellow, linewidth=4)


efi = ta.rma(ta.change(close) * volume, 15)
efi2= ta.rma(ta.change(close) * volume, 120)

buy= efi2 > 0 and efi < 0 and efi[1] < efi  and adx >= 20 and open < ema50hi
sell= efi2 < 0 and efi > 0 and efi[1] > efi and adx >= 20 and open > ema50lo

//ell= rsi > 50 and ta.crossunder(wma5, wma9) and psar > high and ema18 <= ema50hi and macdline > 0 and macdline < signalline
//buy= ta.crossunder(close, ema50) and rsi < 50 and adx2 < adx2[1] and k < 25 and psar > high
//uy= rsi < 60 and ta.crossover(wma5, wma9)  and psar < low and ema18 >= ema50 and macdline2 > 0 and diplus2 < 30 // and histline2 < 0  
//buy=  ema18 > ema50 and ta.crossunder(rsi, 45) and open < ema50hi and adx2[3] < adx2 and diplus2 < 25 and macdline < 0  and adx < 10
//sell= ta.crossover(close, ema50) and rsi > 50 and adx2 < adx2[1] and k > 75 and psar < low
//ell= ema18 < ema50 and ta.crossover(rsi, 60) and open > ema50lo and diminus2 < 30 and macdline2 < 0 and adx2[2] < adx2 
//buy sell conditions 1
//buy= ta.crossover(wma5, ema18) and ema18 > ema50lo and diplus > 22 and diminus < 22 and adx > 15
//ell= ta.crossover(psar, high) and macdline2 < signalline2 and rsi < rsisma
//when conditions
buytrig= ema34 >= ema50lo
selltrig= ema34 <= ema50hi
//strategy
sl= low - atr * 8
tp= high +  atr * 4
sellsl= high + atr * 8
selltp= low - atr * 4
if(buy)
    strategy.entry("buy", strategy.long, when= buytrig)
    strategy.exit("exit buy", "buy", limit= tp, stop= sl)
    strategy.close("close", when= ta.crossunder(ema34, ema50lo))
if(sell)
    strategy.entry("sell", strategy.short, when= selltrig)
    strategy.exit("exit sell", "sell", limit= selltp, stop= sellsl)


더 많은