이 전략은 트렌드 식별 및 추적을 돕기 위해 RSI 지표와 결합한 이동 평균의 황금 십자 및 죽음의 십자 원리를 활용합니다. 단기 이동 평균이 장기 이동 평균보다 높을 때 길게 이동하고 단기 이동 평균이 장기 이동 평균보다 낮을 때 짧게 이동합니다. 이것은 전형적인 트렌드 다음 전략입니다.
이 전략은 다음과 같은 원칙에 기초합니다.
최근 가격 변화를 더 잘 반영하고 브레이크에 더 빨리 반응하기 위해 SMA 대신 EMA를 사용하십시오.
이중 이동 평균 크로스오버 시스템: 단기 EMA가 장기 EMA 위에 넘어가면 긴 진입을 신호하고, 단기 EMA가 장기 EMA 아래에 넘어가면 짧은 진입을 신호합니다. 이것은 금색 십자가와 죽음의 십자가 원리를 사용하여 트렌드 반전을 결정합니다.
RSI 지표는 과잉 구매/ 과잉 판매 상황을 신호함으로써 거짓 파장을 필터링하는 데 도움이 됩니다.
여러 이동 평균이 함께 쌓여 있습니다. 단기 신호에 55주기 EMA, 중기 트렌드에 100주기 EMA, 장기 트렌드 필터링에 200주기 EMA.
합리적인 스톱 로스 및 수익 설정으로 위험을 조절합니다.
주요 거래 논리는 다음과 같습니다.
55주기 EMA가 100주기 EMA를 넘어서고 12주기 EMA가 200주기 EMA를 넘어서면 긴 주식을 입력합니다.
100주기 EMA가 200주기 EMA를 넘을 때 단축됩니다.
수익을 최적화하기 위해 입시에 Stop Loss를 설정하고 수익을 취합니다.
리버설 리스크를 피하기 위해 RSI가 과잉 구매/ 과잉 판매를 나타낼 때 긴/단기 포지션을 닫습니다.
여러 이동 평균 기간의 조합은 트렌드 추적과 역전 확인을 모두 설명하고, 따라서 주요 트렌드를 따라가는 동안 장기적인 통합에 갇히지 않도록합니다.
이 전략의 주요 장점은 다음과 같습니다.
움직이는 평균의 크로스오버에 기반한 간단한 논리, 이해하기 쉽고 구현하기 쉽습니다.
EMA를 이용하면 가격 변화와 트렌드 반전에 더 빠르게 반응할 수 있습니다.
다중 이동 평균 기간은 트렌드 추적과 역전 식별을 모두 차지합니다.
RSI는 거짓 신호를 필터링하고 신호의 정확도를 높여줍니다.
기본 스톱 로스/프로프트 테이크 매개 변수는 거래 위험을 효과적으로 제어합니다.
이동 평균 기간, 스톱 로스/익스피스 비율 등을 조정함으로써 매우 사용자 정의 가능합니다.
이 전략의 주요 위험은 다음과 같습니다.
변동성 있는 시장에서 속임수를 받을 확률이 높고, 과도한 비활성 신호를 발생시킵니다.
기본 매개 변수는 모든 제품과 시간 틀에 맞지 않을 수 있으므로 최적화가 필요합니다.
순전히 기술적인 신호로 움직이고, 근본적인 변화와 사건의 위험에 노출되어 있습니다.
인덱스가 상승하지만 시장 폭이 분산할 때 실적이 떨어질 수 있습니다.
너무 일찍 수익을 취하고 트렌드 움직임의 대부분을 놓칠 위험이 있습니다.
이러한 위험을 해결하기 위해 다음과 같은 최적화를 할 수 있습니다.
부피와 같은 필터를 추가해서 가짜 파장을 피합니다.
각 제품에 최적의 매개 변수를 찾기 위해 백테스트
더 엄격한 스톱 로즈와 수익 취득을 통해 다양한 시장에서 위프사 리스크를 제한합니다.
주요 사건 전에 신호를 피하기 위해 기본적인 필터를 포함합니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
이동 평균 기간을 최적화하여 기계 학습 등을 통해 가장 좋은 단기, 중장기 및 장기 조합을 찾습니다.
성능에 대한 전형적인 가격에 대한 폐쇄 가격 테스트.
부피 필터를 추가해서 부피가 높은 바에서 신호만 받습니다
더 높은 정밀도를 위해 스톱 로스/트랙 이윤 비율을 최적화하거나
성능을 향상시키기 위해 스토카스틱스, MACD, 볼링거 밴드 같은 추가 지표와 함께 복합 모델을 구축합니다.
다양한 제품, 시간 및 시장 조건에 대한 안정성 백테스트
다차원적인 매개 변수 최적화를 위해 기계 학습을 활용합니다.
이것은 간단한 이동 평균 크로스오버 로직을 기반으로 한 전략을 따르는 추세를 이해하기 쉽습니다. 그것은 쉬운 구현, 신뢰성 및 높은 사용자 정의 잠재력과 같은 장점을 가지고 있습니다. 그러나 그것은 또한 역 테스트 결과를 기반으로 한 매개 변수 및 모듈의 지속적인 최적화를 필요로하는 고유한 시장 위험을 지니고 있습니다. 전략을 더 견고하고 지능적으로 만들기 위해. 기술적 분석과 기초 연구를 결합하면 완전성과 신뢰성을 더욱 향상시킬 수 있습니다.
/*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)