Strategi ini menggabungkan Osilator Stochastic dan Moving Average (MA) untuk menentukan kondisi pasar overbought dan oversold dan menggunakan arah tren rata-rata bergerak untuk menentukan arah perdagangan. Ketika Osilator Stochastic melintasi ke atas di area oversold dan rata-rata bergerak berada dalam tren naik, strategi membuka posisi panjang; ketika Osilator Stochastic melintasi ke bawah di area overbought dan rata-rata bergerak berada dalam tren turun, strategi membuka posisi pendek. Selain itu, strategi menetapkan Stop Loss untuk mengendalikan risiko.
Strategi ini menggabungkan STOCHAStic Oscillator dan moving average untuk menangkap kondisi pasar overbought dan oversold sambil menggunakan arah tren moving average untuk menyaring sinyal perdagangan dan menetapkan stop loss untuk mengendalikan risiko. Logika strategi jelas dan mudah dipahami dan diimplementasikan. Namun, strategi ini juga memiliki beberapa keterbatasan, seperti lag indikator dan perdagangan yang sering. Dengan memperkenalkan indikator teknis lainnya, mengoptimalkan metode stop loss, menyesuaikan parameter secara dinamis, dan menerapkan ukuran posisi, kinerja dan ketahanan strategi dapat ditingkatkan lebih lanjut.
/*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")