Stratégie de croisement d'oscillateur stochastique et de moyenne mobile avec stop loss et filtre stochastique

Auteur:ChaoZhang est là., Date: 2024-04-26 16:10:11 Je vous en prie.
Les étiquettes:- Je vous en prie.SMA

img

Résumé

Cette stratégie combine l'oscillateur stochastique avec une moyenne mobile, générant des signaux de trading en observant les conditions de surachat et de survente de l'indicateur stochastique et la tendance de la moyenne mobile. Elle produit un signal court lorsque l'indicateur stochastique est dans la zone de surachat et que la moyenne mobile est à la baisse, et un signal long lorsque la moyenne mobile est à la hausse.

Principe de stratégie

  1. Calculer l'oscillateur stochastique pour obtenir la ligne K et la ligne D. Les paramètres sont réglables, y compris la période stochastique, le lissage K, le lissage D, la zone de surachat et la zone de survente.

  2. Calculer la moyenne mobile, en utilisant le prix de clôture par défaut, avec une période réglable.

  3. Lorsque la ligne K reste inférieure à 50 pendant un certain nombre de lignes K, elle génère un signal de filtre.

  4. Conditions de génération d'un signal long: L'indicateur stochastique passe à la hausse dans la zone de survente OU l'indicateur stochastique filtre le signal ET la moyenne mobile est à la hausse.

  5. Conditions de génération d'un signal court: L'indicateur stochastique traverse vers le bas dans la zone de surachat OU l'indicateur stochastique filtre le signal ET la moyenne mobile est à la baisse.

  6. Condition de clôture de position longue: la ligne stochastique K traverse au-dessus de la moyenne mobile ET la moyenne tourne à la baisse.

  7. Condition de clôture de la position courte: la ligne stochastique K traverse le niveau inférieur à la moyenne mobile ET la moyenne tourne vers le haut.

  8. La gestion des positions utilise un pourcentage fixe de fonds, 10% par défaut.

Analyse des avantages

  1. En combinant les caractéristiques de surachat/survente et de tendance, il peut poursuivre et tuer une tendance.

  2. Le filtre de l'indicateur stochastique évite les transactions fréquentes sur les marchés oscillants.

  3. Le paramètre Stop Loss aide à contrôler les retraits.

  4. La structure du code est claire, les paramètres sont réglables et il convient à une optimisation ultérieure.

Analyse des risques

  1. L'oscillateur stochastique présente un certain décalage, qui peut manquer les meilleurs points d'achat et de vente.

  2. La précision de la capture des ordres aux points de tournant de la tendance est faible et la fréquence des stop-loss peut être élevée.

  3. La gestion de fonds à taux fixe a un recours important en cas de pertes consécutives.

Direction de l'optimisation

  1. Introduire plus de conditions de filtrage, telles que le comportement des prix, d'autres indicateurs auxiliaires, etc., pour améliorer la précision du signal.

  2. Divisez les signaux en forts et faibles, et augmentez les positions lorsque des signaux forts apparaissent.

  3. Optimiser le jugement des points tournants de tendance pour capturer davantage de mouvements du marché.

  4. Optimiser la gestion des positions, envisager d'ajuster les positions sur la base de ratios de profits et pertes variables, etc.

  5. Essayez différentes combinaisons de paramètres pour trouver les paramètres optimaux.

Résumé

Cette stratégie est basée sur l'oscillateur stochastique et combine des moyennes mobiles pour juger des tendances, tout en utilisant la fonction de filtrage de l'indicateur stochastique lui-même, générant des signaux de trading relativement fiables.


/*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")

Relationnée

Plus de