이 전략은 여러 시간 프레임 EMA 지표와 K-라인 패턴 판단을 통합하여 상대적으로 민감한 장기 신호 캡처 및 스톱 로스 출구를 달성합니다.
이 전략은 주로 다음의 판단 지표에 기초합니다.
EMA: 가격 돌파시 거래 신호를 결정하기 위해 EMA의 13 및 21 주기의 2 세트를 사용합니다.
K-라인 패턴: K-라인 엔티티의 방향을 판단하고 EMA 지표와 함께 잘못된 돌파구를 필터링합니다.
지원 저항: 신호 신뢰성을 높이기 위해 돌파구가 이 영역을 통과하는지 여부를 결정하기 위해 지난 10 회기의 가장 높은 지점으로 구성됩니다.
시간 분포의 상승: 120 사이클의 닫는 것은 시간 분포의 상승으로 판단하기 위해 열려 있습니다. 보조 판단으로.
거래 신호를 생성하는 규칙은 다음과 같습니다.
상승 신호: 빠른 EMA가 느린 EMA를 깨고 양 라인 K 라인, 긴 포지션을 닫고 긴 포지션을 개척합니다.
하향 신호: 빠른 EMA는 Yin 라인 K 라인, 평평한 긴 포지션과 함께 느린 EMA로 분해됩니다.
스톱 손실 출구: 역 신호가 표시될 때 현재 위치에서 스톱 손실 출구.
위의 위험은 과도한 최적화를 피하는 방법, 신중한 매개 변수 선택, 엄격한 위치 크기를 제어하는 방법과 같은 방법을 통해 완화 할 수 있습니다.
이 전략은 비교적 신뢰할 수 있는 트렌드 판단을 위해 여러 시간 프레임 EMA와 K-라인 엔티티 판단을 통합합니다. 지원 저항과 시간 분할을 사용하는 보조 판단은 신호 품질을 보장합니다. 스톱 손실에 대한 역 신호를 사용하면 단일 스톱 손실을 효과적으로 제어 할 수 있습니다. 미래 최적화는 머신 러닝 모델, 적응 스톱, 정서적 분석 및 위치 사이징 관리 모듈을 도입하여 전략을 더 견고하게 할 수 있습니다.
/*backtest start: 2023-02-14 00:00:00 end: 2024-02-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100) open_long = 0 close_position = 0 last_long=close last_short=close //Candle body resistance Channel-----------------------------// len = 34 src = input(close, title="Candle body resistance Channel") out = sma(src, len) last8h = highest(close, 13) lastl8 = lowest(close, 13) bearish = cross(close,out) == 1 and falling(close, 1) bullish = cross(close,out) == 1 and rising(close, 1) channel2=false //-----------------Support and Resistance RST = input(title='Support / Resistance length:', defval=10) RSTT = valuewhen(high >= highest(high, RST), high, 0) RSTB = valuewhen(low <= lowest(low, RST), low, 0) //--------------------Trend colour ema------------------------------------------------// src0 = close, len0 = input(13, minval=1, title="EMA 1") ema0 = ema(src0, len0) direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0 //-------------------- ema 2------------------------------------------------// src02 = close, len02 = input(21, minval=1, title="EMA 2") ema02 = ema(src02, len02) direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0 //=============Hull MA// show_hma = false hma_src = input(close, title="HullMA Source:") hma_base_length = input(8, minval=1, title="HullMA Base Length:") hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:") hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length))) //============ signal Generator ==================================// Period=input(title='Period', defval='120') ch1 = request.security(syminfo.tickerid, Period, open) ch2 = request.security(syminfo.tickerid, Period, close) // Signals// long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open)) short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open)) last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) ? 1 : -1 short_signal = crossover(last_short, last_long) ? -1 : 1 if (long_signal == 1) strategy.entry("Long Open", strategy.long) if (short_signal == -1) strategy.close("Long Open") if (long_signal[1] == 1 and short_signal[1] == 1) open_long := 1 close_position := 0 if (short_signal[1] == -1 and long_signal[1] == -1) open_long := 0 close_position := 1 plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10) plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10) //plot(0, title="Trigger", color=white) ///////////////////////////////////////////////////////////////////////////////////////////