이 전략은 스토카스틱 오시레이터와 이동 평균 (MA) 을 결합하여 과잉 구매 및 과잉 판매 시장 조건을 결정하고 거래 방향을 결정하기 위해 이동 평균의 트렌드 방향을 사용합니다. 스토카스틱 오시레이터가 과잉 판매 영역에서 상향으로 넘어가고 이동 평균이 상승 추세에있을 때 전략은 긴 포지션을 개척합니다. 스토카스틱 오시레이터가 과잉 구매 영역에서 하향으로 넘어가고 이동 평균이 하락 추세에있을 때 전략은 짧은 포지션을 개척합니다. 또한 전략은 위험을 제어하기 위해 스톱 로스를 설정합니다.
이 전략은 스토카스틱 오시레이터와 이동 평균을 결합하여 과소득 및 과소매 시장 조건을 포착하며, 이동 평균의 트렌드 방향을 사용하여 거래 신호를 필터하고 위험을 제어하기 위해 스톱 로스를 설정합니다. 전략 논리는 명확하고 이해하기 쉽고 구현할 수 있습니다. 그러나 전략에는 또한 지표 지연 및 빈번한 거래와 같은 일부 제한이 있습니다. 다른 기술적 지표를 도입하여 스톱 로스 방법을 최적화하고 매개 변수를 동적으로 조정하고 포지션 사이징을 구현함으로써 전략의 성능과 안정성을 더욱 향상시킬 수 있습니다.
/*backtest start: 2024-04-22 00:00:00 end: 2024-04-29 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Pablo_2uc //@version=5 strategy("Estrategia Stoch + MA c/ SL", overlay=true) // Parámetros del Estocástico length = input.int(14, title="Longitud Estocástico") smoothK = input.int(3, title="Suavizado K") smoothD = input.int(3, title="Suavizado D") oversold = input.int(20, title="Sobreventa") overbought = input.int(80, title="Sobrecompra") // Parámetros de la Media Móvil maLength = input.int(9, title="Longitud MA") maSource = input(close, title="Fuente MA") // Capital inicial capital = 500 // Tamaño de posición (10% del capital) positionSize = 1 // Stop Loss (2% del precio de entrada) stopLossPercent = input.int(2, title="Stop Loss (%)") / 100 // Cálculo del Estocástico k = ta.sma(ta.stoch(close, high, low, length), smoothK) d = ta.sma(k, smoothD) // Cálculo de la Media Móvil ma = ta.sma(maSource, maLength) // Condiciones de entrada en largo y corto longCondition = ta.crossunder(k, oversold) and ma > ma[1] shortCondition = ta.crossover(k, overbought) and ma < ma[1] // Condiciones de salida exitLongCondition = ta.crossover(k, ma) and ma < ma[1] exitShortCondition = ta.crossunder(k, ma) and ma > ma[1] // Estrategia if (longCondition) strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent)) if (shortCondition) strategy.entry("Short", strategy.short, qty=positionSize) strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent)) // Cierre de posiciones if (exitLongCondition) strategy.close("Long") if (exitShortCondition) strategy.close("Short")