Stratégie de négociation quantitative basée sur le croisement des moyennes mobiles avec la forme de la ligne K journalière

Auteur:ChaoZhang est là.
Les étiquettes:

基于移动平均线交叉与日内K线形态的量化交易策略

Résumé

Cette stratégie est basée sur l'intersection des moyennes mobiles de 9 et 15 jours, ainsi que sur certaines formes de ligne K typiques de la journée pour générer des signaux de trading.

Les principes stratégiques

Lorsque la courte moyenne mobile (ligne 9) traverse la longue moyenne mobile (ligne 15), cela indique une forte dynamique haussière des prix à court terme; lorsque la courte moyenne mobile traverse la longue moyenne mobile, cela indique une forte dynamique de baisse des prix à court terme. En même temps, il est nécessaire d'avoir un angle de la moyenne mobile supérieur à 30 degrés pour s'assurer qu'il y a suffisamment de dynamique haussière ou baissière.

Cette stratégie utilise principalement les fonctionnalités de suivi de tendance des moyennes mobiles et les caractéristiques de la forme partielle de la ligne K, qui peuvent être adaptées aux variétés de différents marchés en ajustant les paramètres.

Analyse des avantages

La stratégie combine l'indicateur d'une moyenne mobile et le jugement de la forme de la ligne K dans la journée pour filtrer efficacement une partie du bruit et rendre les signaux de négociation plus fiables. En particulier, le jugement des seuils d'angle a été augmenté pour s'assurer que le signal n'est émis que lorsque les mouvements de prix sont suffisamment importants pour éviter les faux signaux inutiles. En outre, la stratégie a fixé des niveaux de stop-loss et de stop-gap, ce qui permet de réduire automatiquement les pertes maximales des unités et de réaliser un retour sur investissement.

L'indicateur de suivi des tendances est utilisé comme un indicateur pour capturer les tendances des prix à moyen et long terme. La forme de la ligne K reflète le contraste entre les forces des acteurs du marché à court terme et permet d'obtenir des indices de transaction sur différentes échelles de temps. Cette stratégie intègre les avantages d'un certain nombre d'indicateurs de jugement et devrait être plus efficace dans les transactions réelles.

L'analyse des risques

Les risques potentiels de cette stratégie sont principalement les suivants:

  1. Risque de fausse rupture. Lorsque le marché est en état de stabilisation, les moyennes mobiles peuvent se croiser plusieurs fois, ce qui est principalement dû aux signaux de croisement.

  2. Risque d'inversion de tendance: les moyennes mobiles servent d'indicateur de suivi de tendance et ne donnent pas de signal préalable lors d'un renversement de tendance. Le risque de perte importante peut alors être pris en charge par un contrôle strict des pertes.

  3. Risque d'optimisation des paramètres. Différentes variétés de marché peuvent avoir des adaptations différentes aux paramètres. L'utilisation directe d'une combinaison de paramètres peut également entraîner des pertes si elle n'est pas ajustée.

Dans l'ensemble, cette stratégie peut générer certains faux signaux et des risques de hausse et de chute en l'absence de jugement sur l'environnement du marché. Ces risques peuvent être encore optimisés et atténués en intégrant des jugements sur les tendances à grande échelle et les caractéristiques quantitatives.

Optimisation

La stratégie peut également être améliorée dans les domaines suivants:

  1. Augmentation du jugement sur les tendances à grande échelle. Par exemple, vérifier si la ligne moyenne est dans un canal ascendant ou descendant, éviter les transactions à contre-courant.

  2. L'analyse de l'indicateur de la capacité quantitative est ajoutée. Par exemple, le taux de conversion de Tolstoi peut déterminer la force d'achat et de vente, éviter de faire des achats aléatoires à des taux élevés ou à des taux très bas.

  3. Combiné avec les fondamentaux de l'action, il est possible d'améliorer les chances de gagner en choisissant certaines actions qui sont en bonne voie et qui connaissent une croissance stable.

  4. Optimiser les combinaisons de paramètres d'un système de moyennes mobiles. Vous pouvez essayer des moyennes de cycles de différentes longueurs, ou combiner des moyennes triangulaires, quinculaires, etc., pour construire un système de négociation plus grand.

  5. Test de différents paramètres de stop-loss, stop-loss. En fonction des résultats du retest, le coefficient d'épargne est réglé pour obtenir le meilleur rapport risque-rendement.

L'optimisation de ces deux axes devrait permettre d'améliorer considérablement les niveaux de rentabilité et la stabilité de cette stratégie.

Résumé

Dans l'ensemble, cette stratégie intègre les avantages de l'indicateur de la moyenne mobile et de la forme de la ligne K partielle en journée, qui est plus stricte lors de l'émission du signal de trading, peut filtrer un grand nombre de bruits, ce qui améliore considérablement la qualité du signal traversant.

La prochaine étape est d'optimiser les paramètres pour améliorer encore les taux de victoire et la rentabilité de la stratégie. L'ajout de plus d'indicateurs peut également renforcer la robustesse du système de trading dans son ensemble. Après une simulation rigoureuse de la plate-forme, la stratégie est susceptible de devenir un outil de quantification efficace pour générer des profits stables.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true)

// Define input parameters
fast_length = input(9, "Fast MA Length")
slow_length = input(15, "Slow MA Length")
stop_loss_percent = input(0.25, "Stop Loss (%)")
target_percent = input(0.25, "Target (%)")
angle_threshold = input(30, "Angle Threshold (degrees)")

// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)

// Define candlestick patterns
is_pin_bar() =>
    pin_bar = abs(open - close) > 2 * abs(open[1] - close[1])
    high_tail = max(open, close) - high > abs(open - close) * 1.5
    low_tail = low - min(open, close) > abs(open - close) * 1.5
    pin_bar and high_tail and low_tail

is_marubozu() =>
    marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75
    no_upper_shadow = high == max(open, close)
    no_lower_shadow = low == min(open, close)
    marubozu and no_upper_shadow and no_lower_shadow

is_full_body() =>
    full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95
    full_body

// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")

// Calculate angle of slow moving average
ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159))

// Generate buy/sell signals based on angle condition and candlestick patterns
buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body())
sell_signal = crossunder(fast_ma, slow_ma)

// Calculate stop-loss and target levels
stop_loss_level = close * (1 - stop_loss_percent / 100)
target_level = close * (1 + target_percent / 100)

// Execute trades based on signals with stop-loss and target
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level)

// Plot buy/sell signals on chart (optional)
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Plot angle line
hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)


En savoir plus