
Cette stratégie combine un oscillateur stochastique aléatoire et une moyenne mobile pour juger de l’état d’un marché en survente et en survente, et pour déterminer la direction de la transaction en fonction de la direction de la tendance de la moyenne mobile. La stratégie ouvre une position en position multiple lorsque l’indicateur oscillateur aléatoire croise vers le haut dans la zone de survente et que la moyenne mobile est en tendance à la hausse. La stratégie ouvre une position en position vide lorsque l’indicateur oscillateur aléatoire croise vers le bas dans la zone de survente et que la moyenne mobile est en tendance à la baisse.
La stratégie utilise la direction de la tendance des moyennes mobiles pour filtrer les signaux de négociation et régler les arrêts de perte pour contrôler les risques en combinant des indicateurs de choc aléatoires et des moyennes mobiles, tout en capturant les conditions de survente et de survente du marché. L’idée de la stratégie est claire, facile à comprendre et à mettre en œuvre. Cependant, la stratégie présente également certaines limites, telles que le retard des indicateurs, la fréquence des transactions, etc.
/*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")