
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.
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é.
On peut considérer:
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.
/*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 )