Strategi ini menggabungkan Osilator Stochastic dan Moving Average (MA) untuk menentukan keadaan pasaran yang terlalu banyak dibeli dan terlalu banyak dijual dan menggunakan arah trend purata bergerak untuk menentukan arah perdagangan. Apabila Osilator Stochastic melintasi ke atas di kawasan yang terlalu banyak dijual dan purata bergerak berada dalam trend menaik, strategi membuka kedudukan panjang; apabila Osilator Stochastic melintasi ke bawah di kawasan yang terlalu banyak dibeli dan purata bergerak berada dalam trend menurun, strategi membuka kedudukan pendek. Di samping itu, strategi menetapkan Stop Loss untuk mengawal risiko.
Strategi ini menggabungkan Osilator Stochastic dan purata bergerak untuk menangkap keadaan pasaran yang terlalu banyak dibeli dan terlalu banyak dijual sambil menggunakan arah trend purata bergerak untuk menapis isyarat perdagangan dan menetapkan stop loss untuk mengawal risiko. Logik strategi jelas dan mudah difahami dan dilaksanakan. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, seperti kelewatan penunjuk dan perdagangan yang kerap. Dengan memperkenalkan penunjuk teknikal lain, mengoptimumkan kaedah stop loss, menyesuaikan parameter secara dinamik, dan melaksanakan saiz kedudukan, prestasi dan ketahanan strategi dapat ditingkatkan lagi.
/*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")