
Cette stratégie combine un oscillateur stochastique aléatoire et une moyenne mobile pour générer un signal de transaction en observant les tendances de survente et de survente des indicateurs aléatoires et des moyennes mobiles. La stratégie introduit également un filtre d’indicateurs aléatoires, qui peut également générer un signal de transaction correspondant lorsque la ligne K aléatoire maintient un certain nombre de lignes K au-dessous de 50.
Calculer les indices de choc aléatoires pour obtenir les lignes K et D. Les paramètres sont réglables, y compris les cycles d’indicateurs aléatoires, l’aplatissement des valeurs K et D, les zones de survente et de survente.
Calcul des moyennes mobiles, prix de clôture par défaut, périodicité réglable.
Calculer le filtre à indicateur aléatoire. Lorsque la ligne K est maintenue au-dessous de 50, un signal de filtrage est produit. La période est réglable.
Conditions pour générer un signal à plusieurs têtes: indicateur aléatoire croisant vers le haut dans la zone de survente ou indicateur aléatoire du signal du filtre et moyenne mobile vers le haut.
Conditions pour générer un signal de tête vide: Indicateur aléatoire à la croisée vers le bas dans la zone de survente ou Indicateur aléatoire à la direction du filtre et Moyenne mobile vers le bas.
Condition de placement multiple: traversez la moyenne mobile sur une ligne K aléatoire et la ligne moyenne se déplace vers le bas.
Condition de placement à zéro: la moyenne mobile est traversée par une ligne K aléatoire et la moyenne est déplacée vers le haut.
La gestion de position utilise un ratio de fonds fixes par défaut de 10% et un stop loss par défaut de 2%
Le plus souvent, il s’agit d’une combinaison d’achats et de ventes excessifs et de caractéristiques de tendance qui permettent de suivre la tendance et d’atténuer la baisse.
Les filtres d’indicateurs aléatoires permettent d’éviter les échanges fréquents en cas de choc.
Le paramètre Stop Loss aide à contrôler le retrait.
La structure du code est claire, les paramètres sont réglables et peuvent être optimisés.
L’indicateur aléatoire a une certaine latence et peut manquer le meilleur moment pour acheter ou vendre.
La précision de la saisie du billet au point de basculement de la tendance est médiocre et la fréquence d’arrêt des pertes peut être élevée.
La gestion de fonds à taux fixe est plus susceptible de se retirer en cas de pertes continues.
L’introduction de conditions de filtrage supplémentaires, telles que le comportement des prix et d’autres indicateurs auxiliaires, améliore la précision du signal.
Les signaux sont divisés en points forts et faibles, et les positions sont augmentées en cas de signal fort.
L’analyse des points de basculement de la tendance est optimisée afin d’en saisir davantage.
L’optimisation de la gestion des positions peut être considérée comme une modification des positions par rapport aux gains et pertes flottants.
Essayez différentes combinaisons de paramètres pour trouver le meilleur.
Cette stratégie est basée sur des indicateurs aléatoires de choc, combinés avec des moyennes mobiles pour juger de la tendance, tout en utilisant la fonction de filtrage de l’indicateur aléatoire lui-même, pour produire un signal de négociation relativement fiable. L’idée globale de la stratégie est claire et convient à une utilisation dans des conditions de tendance. Cependant, en raison de la présence d’un retard de l’indicateur aléatoire, la performance peut être médiocre à un tournant de la tendance. L’adaptabilité et la robustesse globales doivent être examinées plus en détail.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"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 Estocástico + MA con Stop Loss y Filtro Estocástico", 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 = 5000
// Tamaño de posición (10% del capital)
positionSize = capital * 0.10
// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100
// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")
// 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)
// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)
// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) 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")