
Strategi ini menggabungkan penunjuk goyah rawak (Stochastic Oscillator) dan purata bergerak (Moving Average) untuk menilai keadaan pasaran yang terlalu banyak beli dan terlalu banyak dijual, dan menentukan arah perdagangan berdasarkan arah trend rata-rata bergerak. Strategi ini membuka kedudukan berpatutan apabila penunjuk goyah rawak melintasi kawasan yang terlalu banyak dijual dan rata-rata bergerak sedang dalam trend naik; strategi membuka kedudukan kosong apabila penunjuk goyah rawak melintasi kawasan yang terlalu banyak dibeli dan rata-rata bergerak sedang dalam trend menurun.
Strategi ini menggunakan arah trend rata-rata bergerak untuk menyaring isyarat perdagangan dan menetapkan hentian untuk mengawal risiko dengan menggabungkan indikator goyah rawak dan purata bergerak, sambil menangkap keadaan pasaran yang terlalu banyak membeli dan menjual. Gagasan strategi ini jelas, mudah difahami dan dilaksanakan. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, seperti masalah keterlambatan indikator, perdagangan yang kerap.
/*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")