Stratégie de stop loss basée sur l'indicateur MACD


Date de création: 2023-10-26 15:51:34 Dernière modification: 2023-10-26 15:51:34
Copier: 0 Nombre de clics: 709
1
Suivre
1617
Abonnés

Stratégie de stop loss basée sur l’indicateur MACD

Aperçu

Cette stratégie est basée sur les indicateurs MACD, elle a conçu une stratégie de négociation en ligne qui permet de contrôler le risque de chaque transaction. Par rapport à la stratégie traditionnelle de retournement de plusieurs opérations de négociation en cours, cette stratégie est plus axée sur le contrôle du risque de chaque transaction. La stratégie limite les pertes maximales possibles par le calcul du prix d’arrêt et du prix d’arrêt cible, en définissant une taille de position raisonnable.

Le principe

Cette stratégie commence par calculer les lignes macd et signal de l’indicateur MACD. Lorsque la ligne macd franchit la ligne signal de bas en haut, elle est considérée comme un signal d’achat. Pour filtrer les fausses ruptures, la stratégie exige que barssince ((crossover ((macd_line, signal_line)) <= 5, c’est-à-dire que la rupture a eu lieu dans les 5 dernières lignes K. Elle exige également que les lignes macd et signal soient inférieures à 0, ce qui indique qu’elles sont actuellement en survente, et que le prix de clôture soit supérieur à la ligne moyenne wma, ce qui indique une tendance à la hausse.

Pour chaque transaction, la stratégie calcule un prix d’arrêt et un prix d’arrêt raisonnables. Le prix d’arrêt est défini comme le prix le plus bas des 3 dernières lignes K. Le prix d’arrêt est défini comme le prix d’achat plus le prix d’arrêt jusqu’à 4 fois la distance entre le prix d’achat et le prix d’achat.

La clé est que la stratégie calcule la position spécifique pour chaque transaction en fonction du risque acceptable. Le paramètre capital_risk définit la perte maximale acceptable pour chaque transaction en pourcentage du capital total.

Le risque est contrôlé à 1% du capital total par transaction, ce qui permet de contrôler efficacement les retraits. En même temps, la position de stop est plus grande et le rendement est plus élevé.

Les avantages

  • Le risque est maîtrisé avant toute transaction.
  • Optimiser la taille de la position et maximiser l’utilisation des fonds
  • Les stratégies de stop-loss permettent de contrôler efficacement les retraits.
  • Le marché de l’immobilier est en plein essor.

Risques et améliorations

  • L’indicateur MACD est en retard et risque de manquer une tendance à la hausse
  • Une position d’arrêt ou d’arrêt mal définie peut réduire les gains ou augmenter les risques
  • La fréquence des transactions pourrait être trop élevée et les coûts de transaction augmenter

On peut considérer:

  • Intégrer les tendances dans d’autres indicateurs pour éviter le retard du MACD
  • Optimiser les algorithmes de stop-loss pour les rendre plus résilients
  • Une libéralisation appropriée de la fréquence des transactions et une réduction des coûts des transactions

Résumer

Cette stratégie est basée sur l’indicateur MACD pour déterminer la direction de la tendance, pour contrôler le risque avant tout, pour calculer des positions raisonnables. La clé est de contrôler les risques et d’optimiser les positions, pour obtenir des gains stables à long terme.

Code source de la stratégie
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )

capital_risk    = input( 1.0, "% capital risk per trade" ) / 100
r_exit          = input( 4.0, "Take Profit in 'R'" )
wma_length      = input( 150, 'WMA Bias Length' )

[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)

w_line = wma( close, wma_length )

golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0

float stop = na
float tp = na

// For a stop, use a recent low 
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]


// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range 
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close

// Enter the position
if golong
    strategy.entry("long", strategy.long, qty=position_size_in_contracts)
    strategy.exit("long exit","long", stop=stop, limit=tp)

// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
//     strategy.close("long")


plot( strategy.equity,  color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )