리소스 로딩... 로딩...

돌파구 콜백 거래 전략

저자:차오장, 날짜: 2024-02-28 18:01:56
태그:

img

전반적인 설명

돌파구 콜백 트레이딩 전략은 절대 강도 지수와 MACD 지수를 계산하여 특정 트렌드에 따라 돌파구 콜백 트레이딩을 실현합니다. 그것은 단기 거래 전략에 속합니다. 이 전략은 주요 트렌드, 중장기 트렌드 및 단기 트렌드를 판단하기 위해 여러 지표를 통합합니다. 트렌드 조화 및 지표 보완 확인 신호를 통해 트렌드 추적 거래를 수행합니다.

전략 원칙

이 전략은 주로 절대 강도 지표와 MACD 가격 지표에 의존하여 돌파구 콜백 거래를 구현합니다. 첫째, 주요 트렌드 방향을 판단하기 위해 가격의 9 기간, 21 기간 및 50 기간 EMA를 계산합니다. 그 다음 단기 조정의 강도를 반영하기 위해 가격의 절대 강도 지표를 계산합니다. 마지막으로 단기 트렌드 방향을 판단하기 위해 MACD 지표를 계산합니다. 주요 트렌드가 상승하고 단기 조정이있을 때 구입합니다. 주요 트렌드가 하락하고 단기 리바운드가있을 때 판매합니다.

특히, 품종의 주요 상승 추세는 9일 EMA가 21일 EMA보다 높고, 21일 EMA가 50일 EMA보다 높아야 한다. 단기 조정의 판단 기준은 절대 강도 지수의 차이는 0보다 작고 MACDDIFF는 0보다 작다는 것이다. 품종의 주요 하락 추세는 9일 EMA가 21일 EMA보다 낮고, 21일 EMA가 50일 EMA보다 낮아야 한다. 단기 리바운드를 판단하는 기준은 절대 강도 지수의 차이는 0보다 크고 MACDDIFF가 0보다 크다는 것이다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 가짜 파장을 피하기 위해 주요 추세와 단기 조정 결합
  2. 더 많은 지표의 조합으로 더 높은 신뢰성
  3. 절대 강도 인덱스는 콜백의 품질을 판단하는 조정의 강도를 반영합니다.
  4. MACD는 단기 트렌드와 과잉 구매/ 과잉 판매 영역을 판단할 수 있습니다.

위험 분석

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 주요 추세에 대한 잘못된 판단은 무역 실패로 이어질 수 있습니다.
  2. 콜백 시간 및 강도에 대한 잘못된 판단은 유효하지 않은 콜백으로 이어질 수 있습니다.
  3. 극단적인 시장 조건에서 잘못된 신호로 인한 지표의 분산

위의 위험에 대응하여 매개 변수 최적화, 다른 주기의 지표를 판단, 단일 손실을 제어하기 위해 위치 규칙을 조정, 신호를 필터하기 위해 더 많은 지표를 결합하고 정확도를 향상시키는 방법과 같은 방법을 사용하여 전략을 개선 할 수 있습니다.

최적화 방향

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

  1. 더 적합한 거래 전략을 찾기 위해 더 많은 지표 조합을 테스트하십시오.
  2. 지표 감수성을 향상시키기 위해 지표 매개 변수를 최적화합니다.
  3. 최대 단일 손실을 줄이기 위해 스톱 손실 방법을 조정
  4. 더 효과적인 영역에서 신호를 발산하기 위해 필터링 조건을 높여
  5. 판단의 정확성을 향상시키기 위해 더 많은 시간 프레임 지표를 결합

요약

요약하자면, 돌파구 콜백 거래 전략은 일반적으로 비교적 안정적인 단기 거래 전략이다. 오스실레이션 시장에서 잘못된 거래를 피하기 위해 멀티 타임프레임 트렌드 판단을 결합합니다. 동시에, 지표의 결합 사용은 판단의 정확성을 향상시킵니다. 후속 테스트와 최적화를 통해이 전략은 장기적으로 보유 가치가있는 안정적인 전략이 될 수 있습니다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("Divergence Scalper [30MIN]", overlay=true , commission_value=0.04 ) 
message_long_entry = input("long entry message") 
message_long_exit = input("long exit message") 
message_short_entry = input("short entry message") 
message_short_exit = input("short exit message") 
//3x ema 
out9 = ta.ema(close,9) 
out21 = ta.ema(close,21) 
out50 = ta.ema(close,50) 
//abs 
absolute_str_formula( ) => 
    top=0.0 
    bottom=0.0 
    if(close>close[1]) 
        top:= nz(top[1])+(close/close[1]) 
    else 
        top:=nz(top[1]) 
    if(close<=close[1]) 
        bottom:= nz(bottom[1])+(close[1]/close) 
    else 
        bottom:=nz(bottom[1]) 
    if (top+bottom/2>=0) 
        1-1/(1+(top/2)/(bottom/2)) 
abs_partial=absolute_str_formula() 
abs_final = abs_partial - ta.sma(abs_partial,50) 
//macd 
fast_length = input(title="Fast Length", defval=23) 
slow_length = input(title="Slow Length", defval=11) 
src = input(title="Source", defval=open) 
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 6) 
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) 
sma_signal = input.string(title="Signal Line MA Type", defval="SMA", options=["SMA", "EMA"]) 
// Calculating 
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) 
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) 
macd = fast_ma - slow_ma 
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) 
hist = macd - signal 
long= abs_final > 0 and hist <0 and out9<out21 and out21<out50 
short = abs_final <0 and hist >0 and out9>out21 and out21>out50 
long_exit = abs_final <0 and hist >0 and out9>out21 and out21>out50 
short_exit = abs_final > 0 and hist <0 and out9<out21 and out21<out50 
strategy.entry("long", strategy.long, when = long and barstate.isconfirmed, alert_message = message_long_entry) 
strategy.entry("short", strategy.short, when = short and barstate.isconfirmed, alert_message = message_short_entry) 
strategy.close("long", when = long_exit and barstate.isconfirmed, alert_message = message_long_exit) 
strategy.close("short", when = short_exit and barstate.isconfirmed, alert_message = message_short_exit) 


더 많은