Stratégie de négociation EMA et MACD avec arrêt-perte de suivi

Auteur:ChaoZhang est là., Date: 2023-09-20 11h21 et 14h
Les étiquettes:

Résumé

Cette stratégie combine les indicateurs de moyenne mobile exponentielle (EMA) et de divergence de convergence moyenne mobile (MACD) pour générer des signaux de négociation et adopte un stop-loss pour contrôler les risques.

La logique de la stratégie

Lorsque la ligne EMA rapide traverse au-dessus de la ligne EMA lente et que l'histogramme MACD devient baissier, la stratégie est longue. Lorsqu'une position longue existe, une ligne de stop loss descendante est définie. Si le prix tombe en dessous de la ligne de stop loss d'un certain pourcentage, la position longue sera arrêtée.

Plus précisément, la stratégie utilise l'EMA de 7 jours et l'EMA de 14 jours pour construire les EMA rapides et lentes. La valeur MACD est obtenue en soustrayant l'EMA de 26 jours de l'EMA de 12 jours et la ligne de signal est obtenue avec une EMA de 9 jours du MACD. Lorsque l'EMA de 7 jours dépasse l'EMA de 14 jours et que la valeur MACD dépasse la ligne de signal, une position longue est ouverte. Ensuite, une ligne de stop-loss descendante est définie. Si le prix tombe d'un certain pourcentage, la position longue sera arrêtée.

Analyse des avantages

Cette stratégie combine les indicateurs EMA et MACD, qui peuvent filtrer efficacement les fausses ruptures. L'EMA juge la direction de la tendance et le MACD détermine les points d'entrée. La combinaison des deux peut réduire la fréquence des transactions tout en améliorant la qualité du signal.

Les tests antérieurs montrent que cette stratégie peut générer des rendements décents même sur les marchés baissiers, ce qui indique une certaine robustesse.

Analyse des risques

La stratégie s'appuie principalement sur des indicateurs, avec le risque d'être étouffée. Pendant les consolidations à plage, l'EMA et le MACD peuvent générer des faux signaux excessifs, entraînant un sur-échange et des pertes. Le stop loss de trailing ne fonctionne que pour les ruptures à la baisse, incapable de gérer les revers brusques après les ruptures à la hausse.

L'extension des périodes EMA de manière appropriée pourrait réduire les faux signaux. D'autres indicateurs pourraient également être combinés pour filtrer les signaux, tels que les indicateurs de volume ou de volatilité. En outre, le pourcentage de stop loss peut être ajusté en fonction des conditions du marché, pour équilibrer les risques de stop loss et de whipsaw.

Directions d'optimisation

  1. Différentes combinaisons de périodes EMA pourraient être testées pour trouver des paramètres plus appropriés.

  2. D'autres indicateurs tels que le RSI, le KD pourraient être ajoutés pour le filtrage du signal et l'amélioration de la qualité.

  3. Les pourcentages de stop loss peuvent être ajustés en fonction de différents produits, avec des stops de trailing dynamiques.

  4. Des techniques telles que la reconnaissance de modèles et d'autres techniques peuvent être intégrées pour des règles d'entrée et de sortie plus personnalisables.

  5. L'apprentissage automatique pourrait aider à prédire l'orientation générale de la tendance pour aider l'EMA.

Résumé

Dans l'ensemble, la stratégie est assez robuste, générant des rendements décents même sur les marchés baissiers. Mais certains risques de piqûre existent, nécessitant un réglage des paramètres et un filtrage des signaux. Des optimisations supplémentaires avec d'autres indicateurs techniques et l'apprentissage automatique pourraient l'améliorer considérablement. En résumé, la stratégie fournit un modèle fiable pour le trading quantitatif.


/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-19 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule

//@version=5
strategy('EMA and MACD with Trailing Stop Loss',
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=30,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

// EMAs 
fastEMA = ta.ema(close, 7)
slowEMA = ta.ema(close, 14)
plot(fastEMA, color = color.blue)
plot(slowEMA, color = color.green)
//buyCondition1 = ta.crossover(fastEMA, slowEMA)
buyCondition1 = fastEMA > slowEMA


// DMI and MACD inputs and calculations
[macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9)
buyCondition2 = ta.crossover(macd_signal, macd)


// Configure trail stop level with input options
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

// Determine trail stop loss prices
longStopPrice = 0.0
shortStopPrice = 0.0

longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - longTrailPerc)
    math.max(stopValue, longStopPrice[1])
else
    0

shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + shortTrailPerc)
    math.min(stopValue, shortStopPrice[1])
else
    999999
    

if (buyCondition1 and buyCondition2 and notInTrade and timePeriod)
    strategy.entry(id="Long", direction = strategy.long)

strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)


//if (sellCondition1 and sellCondition2 and notInTrade and timePeriod)
//strategy.close(id="Close", when = sellCondition1 or sellCondition2)


Plus de