
Strategi ini menggabungkan Stochastic Oscillator dan Moving Average untuk menilai kondisi overbought dan oversold di pasar dan menentukan arah perdagangan berdasarkan arah tren rata-rata bergerak. Strategi ini membuka posisi overbought ketika indikator bergoyang acak berlawanan arah oversold dan rata-rata bergerak berorientasi ke atas. Strategi ini membuka posisi kosong ketika indikator bergoyang acak berlawanan arah oversold dan rata-rata bergerak berorientasi ke bawah.
Strategi ini menggunakan arah tren rata-rata bergerak untuk memfilter sinyal perdagangan dan mengatur stop loss untuk mengendalikan risiko dengan menggabungkan indikator goyangan acak dan rata-rata bergerak, sambil menangkap pasar yang terlalu banyak membeli dan menjual. Ide strategi ini jelas, mudah dipahami dan diterapkan. Namun, strategi ini juga memiliki beberapa keterbatasan, seperti masalah keterlambatan indikator, perdagangan yang sering terjadi.
/*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")