이동평균의 크로스오버 전략에 따른 경향

저자:차오장, 날짜: 2023-11-01 17:18:13
태그:

img

전반적인 설명

이 전략은 트렌드 식별 및 추적을 돕기 위해 RSI 지표와 결합한 이동 평균의 황금 십자 및 죽음의 십자 원리를 활용합니다. 단기 이동 평균이 장기 이동 평균보다 높을 때 길게 이동하고 단기 이동 평균이 장기 이동 평균보다 낮을 때 짧게 이동합니다. 이것은 전형적인 트렌드 다음 전략입니다.

전략 논리

이 전략은 다음과 같은 원칙에 기초합니다.

  1. 최근 가격 변화를 더 잘 반영하고 브레이크에 더 빨리 반응하기 위해 SMA 대신 EMA를 사용하십시오.

  2. 이중 이동 평균 크로스오버 시스템: 단기 EMA가 장기 EMA 위에 넘어가면 긴 진입을 신호하고, 단기 EMA가 장기 EMA 아래에 넘어가면 짧은 진입을 신호합니다. 이것은 금색 십자가와 죽음의 십자가 원리를 사용하여 트렌드 반전을 결정합니다.

  3. RSI 지표는 과잉 구매/ 과잉 판매 상황을 신호함으로써 거짓 파장을 필터링하는 데 도움이 됩니다.

  4. 여러 이동 평균이 함께 쌓여 있습니다. 단기 신호에 55주기 EMA, 중기 트렌드에 100주기 EMA, 장기 트렌드 필터링에 200주기 EMA.

  5. 합리적인 스톱 로스 및 수익 설정으로 위험을 조절합니다.

주요 거래 논리는 다음과 같습니다.

  1. 55주기 EMA가 100주기 EMA를 넘어서고 12주기 EMA가 200주기 EMA를 넘어서면 긴 주식을 입력합니다.

  2. 100주기 EMA가 200주기 EMA를 넘을 때 단축됩니다.

  3. 수익을 최적화하기 위해 입시에 Stop Loss를 설정하고 수익을 취합니다.

  4. 리버설 리스크를 피하기 위해 RSI가 과잉 구매/ 과잉 판매를 나타낼 때 긴/단기 포지션을 닫습니다.

  5. 여러 이동 평균 기간의 조합은 트렌드 추적과 역전 확인을 모두 설명하고, 따라서 주요 트렌드를 따라가는 동안 장기적인 통합에 갇히지 않도록합니다.

장점

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

  1. 움직이는 평균의 크로스오버에 기반한 간단한 논리, 이해하기 쉽고 구현하기 쉽습니다.

  2. EMA를 이용하면 가격 변화와 트렌드 반전에 더 빠르게 반응할 수 있습니다.

  3. 다중 이동 평균 기간은 트렌드 추적과 역전 식별을 모두 차지합니다.

  4. RSI는 거짓 신호를 필터링하고 신호의 정확도를 높여줍니다.

  5. 기본 스톱 로스/프로프트 테이크 매개 변수는 거래 위험을 효과적으로 제어합니다.

  6. 이동 평균 기간, 스톱 로스/익스피스 비율 등을 조정함으로써 매우 사용자 정의 가능합니다.

위험성

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

  1. 변동성 있는 시장에서 속임수를 받을 확률이 높고, 과도한 비활성 신호를 발생시킵니다.

  2. 기본 매개 변수는 모든 제품과 시간 틀에 맞지 않을 수 있으므로 최적화가 필요합니다.

  3. 순전히 기술적인 신호로 움직이고, 근본적인 변화와 사건의 위험에 노출되어 있습니다.

  4. 인덱스가 상승하지만 시장 폭이 분산할 때 실적이 떨어질 수 있습니다.

  5. 너무 일찍 수익을 취하고 트렌드 움직임의 대부분을 놓칠 위험이 있습니다.

이러한 위험을 해결하기 위해 다음과 같은 최적화를 할 수 있습니다.

  1. 부피와 같은 필터를 추가해서 가짜 파장을 피합니다.

  2. 각 제품에 최적의 매개 변수를 찾기 위해 백테스트

  3. 더 엄격한 스톱 로즈와 수익 취득을 통해 다양한 시장에서 위프사 리스크를 제한합니다.

  4. 주요 사건 전에 신호를 피하기 위해 기본적인 필터를 포함합니다.

최적화 방향

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

  1. 이동 평균 기간을 최적화하여 기계 학습 등을 통해 가장 좋은 단기, 중장기 및 장기 조합을 찾습니다.

  2. 성능에 대한 전형적인 가격에 대한 폐쇄 가격 테스트.

  3. 부피 필터를 추가해서 부피가 높은 바에서 신호만 받습니다

  4. 더 높은 정밀도를 위해 스톱 로스/트랙 이윤 비율을 최적화하거나

  5. 성능을 향상시키기 위해 스토카스틱스, MACD, 볼링거 밴드 같은 추가 지표와 함께 복합 모델을 구축합니다.

  6. 다양한 제품, 시간 및 시장 조건에 대한 안정성 백테스트

  7. 다차원적인 매개 변수 최적화를 위해 기계 학습을 활용합니다.

결론

이것은 간단한 이동 평균 크로스오버 로직을 기반으로 한 전략을 따르는 추세를 이해하기 쉽습니다. 그것은 쉬운 구현, 신뢰성 및 높은 사용자 정의 잠재력과 같은 장점을 가지고 있습니다. 그러나 그것은 또한 역 테스트 결과를 기반으로 한 매개 변수 및 모듈의 지속적인 최적화를 필요로하는 고유한 시장 위험을 지니고 있습니다. 전략을 더 견고하고 지능적으로 만들기 위해. 기술적 분석과 기초 연구를 결합하면 완전성과 신뢰성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 15m
basePeriod: 5m
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/
// © pernath

//@version=5
strategy("TREND_CATCHER", overlay=true, commission_value=0.05, commission_type=strategy.commission.percent, initial_capital=1000)

//#####variables##############
profit_short=input(title='profit_short', defval=27)
stop_short=input(title='stop_short', defval=2)

stop_long=input(title='stop_long', defval=3)
profit_long=input(title='profit_long', defval=35)


media_1=input(title='media_1', defval=55)
media_2=input(title='media_2', defval=100)
resta_medias=input(title='resta_medias', defval=0)
resta_medias2=input(title='resta_medias2', defval=0)

RSI_periodos=input(title='RSI_periodos', defval=42)
//###############VARIABLES###################




//#####Alert#####
id_bot = ""
email_token = ""
long_open =""
long_close =""
short_open =""
short_close =""
//#  {{strategy.order.alert_message}}


//#############################
//#############################

//###############EMA##############/
//plot(ta.ema(close, 1), title='ema 5', color=color.white)
plot(ta.ema(close, 12), title='ema 12', color=color.white)
plot(ta.ema(close, 25), title='ema 25', color=color.white)
plot(ta.ema(close, 30), title='ema 30', color=color.white, linewidth=1)
plot(ta.ema(close, 40), title='ema 40', color=color.white, linewidth=1)
plot(ta.ema(close, 55), title='ema 55', color=color.orange, linewidth=1)
plot(ta.ema(close, 100), title='ema 100', color=color.red, linewidth=1)
plot(ta.ema(close, 200), title='ema 200', color=color.white, linewidth=3)

//#############################/





//######VISUAL#############
EMA50 = ta.ema(close, 55)
EMA100 = ta.ema(close, 100)


estado_medias=EMA50-EMA100




a = plot(EMA50, title="EMA(50)", color=color.orange, linewidth=1 ) 
b = plot(EMA100, title="EMA(100)", color=color.red, linewidth=1 )


var color col = na
col := estado_medias>resta_medias ? color.green : color.red
fill(a,b,color=col,transp=40)


//######VISUAL#############





Go_Short=(ta.crossunder(ta.ema(close,100),ta.ema(close,200)))
Go_Long=((ta.crossover(ta.ema(close,55),ta.ema(close,100))and(ta.ema(close,12)>ta.ema(close,200))))


strategy.close("enter long", (Go_Short),alert_message=long_open)

cancelar_short=((ta.crossunder(ta.ema(close,25),ta.ema(close,6))))



if Go_Short
    strategy.entry("enter short", strategy.short,1, alert_message=short_open) 
  
strategy.exit("cerrar short", "enter short", 1, profit=close*profit_short/100/syminfo.mintick, loss=close*stop_short/100/syminfo.mintick, alert_message=short_close)




strategy.close("enter short", (Go_Long),alert_message=short_close)
cancelar=((ta.crossunder(ta.ema(close,12),ta.ema(close,30))))



if Go_Long
    strategy.entry("enter long", strategy.long,1,alert_message=long_open)

strategy.exit("cerrar long", "enter long", 1, profit=close*profit_long/100/syminfo.mintick, loss=close*stop_long/100/syminfo.mintick, alert_message=long_close)




strategy.close("enter short", (cancelar_short),alert_message=short_close)

strategy.close("enter long", (cancelar),alert_message=long_close)


//posiciones abiertas
bgcolor((strategy.position_size > 0 or strategy.position_size < 0) ? color.blue : na, transp=70)









더 많은