이 전략은 구매 및 판매 작전을 촉발하기 위해 스토카스틱 오시레이터의 크로스오버 신호를 이용한다. %K 라인이 %D 라인의 위를 넘어서서 %K 값이 20보다 낮을 때, 긴 포지션을 개척한다. %K 라인이 %D 라인의 아래를 넘어서서 %K 값이 80보다 높을 때, 짧은 포지션을 개척한다. 또한, 전략 세트는 포지션을 관리하고 손실의 확장을 방지하기 위해 이익과 스톱 손실 거리를 취하고 있다. 게다가, 전략은 또한 포지션을 닫기 위한 논리적 조건을 설정한다. 스토카스틱 오시레이터가 개시 신호에 반대되는 크로스오버 신호를 표시할 때, 이익 또는 스톱 손실 가격에 도달하지 않았더라도 해당 긴 또는 짧은 포지션을 닫을 것이다.
스토카스틱 크로스오버를 기반으로 한 양방향 스톱-러스 (stop-loss) 취리 전략은 간단하고 이해하기 쉬운 양적 거래 전략이다. 스토카스틱 오시일레이터의 크로스오버 신호를 통해 구매 및 판매 작전을 유발하고 위험을 관리하기 위해 수익/손실 취리 및 포지션 폐쇄의 논리적 조건을 설정합니다. 이 전략의 장점은 논리가 명확하고 초보자도 배우고 사용할 수 있도록 적합하다는 것입니다. 그러나 스토카스틱 오시일레이터가 불안정한 시장에서 많은 잘못된 신호를 생성 할 수 있으며 고정 포지션 관리 방법이 다른 시장 조건에 적응하지 않을 수 있습니다. 전략의 성능을 더욱 향상시키기 위해 다른 지표를 도입하고 포지션 관리를 고려하고 매개 변수 최적화 및 필터링 템플릿 조건을 추가 할 수 있습니다. 일반적으로이 전략은 기본적인 양적 거래 전략으로 사용될 수 있으며 실제 최적화 및 지속적인 개선을 통해 좋은 거래 결과를 얻을 수 있습니다.
/*backtest start: 2024-02-29 00:00:00 end: 2024-03-07 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("How to force strategies fire exit alerts not reversals", initial_capital = 1000, slippage=1, commission_type = strategy.commission.cash_per_contract, commission_value = 0.0001, overlay=true) // disclaimer: this content is purely educational, especially please don't pay attention to backtest results on any timeframe/ticker // Entries logic: based on Stochastic crossover k = ta.sma(ta.stoch(close, high, low, 14), 3) d = ta.sma(k, 3) crossover = ta.crossover(k,d) crossunder = ta.crossunder(k,d) if (crossover and k < 20) strategy.entry("Buy", strategy.long, alert_message="buy") if (crossunder and k > 80) strategy.entry("Sell", strategy.short, alert_message="sell") // StopLoss / TakeProfit exits: SL = input.int(600, title="StopLoss Distance from entry price (in Ticks)") TP = input.int(1200, title="TakeProfit Distance from entry price (in Ticks)") strategy.exit("xl", from_entry="Buy", loss=SL, profit=TP, alert_message="closebuy") strategy.exit("xs", from_entry="Sell", loss=SL, profit=TP, alert_message="closesell") // logical conditions exits: if (crossunder and k <= 80) strategy.close("Buy", alert_message="closebuy") if (crossover and k >= 20) strategy.close("Sell", alert_message="closesell")