Cette stratégie s'appelle
Le noyau de cette stratégie est de calculer le taux de variation de prix, qui est obtenu en divisant le prix de clôture actuel par le prix de clôture précédent, puis en soustrayant 1. Ensuite, le taux de variation de prix calculé est comparé à la valeur de seuil entrée par l'utilisateur. Lorsque le taux de variation de prix est supérieur ou égal au seuil, s'il n'y a pas de position actuelle ou si une position courte est détenue, un signal d'achat est généré; lorsque le taux de variation de prix est inférieur ou égal à la valeur négative du seuil, s'il n'y a pas de position actuelle ou si une position longue est détenue, un signal de vente est généré. Après avoir généré un signal d'achat, la stratégie enregistrera le prix le plus bas des 6 bougies comme le prix de stop-loss précédent. Une fois que le prix tombe en dessous du prix de perte, la stratégie arrête la position longue.
La stratégie de rupture de changement de prix de seuil dynamique génère des signaux de trading en comparant le taux de changement de prix avec un seuil dynamique, ce qui est approprié pour une utilisation sur les marchés en hausse. La logique de la stratégie est simple et claire, avec un certain degré de flexibilité et de capacités de contrôle des risques. Cependant, cette stratégie présente également quelques lacunes, telles que le trading fréquent sur les marchés volatils et des paramètres de stop loss inflexibles.
/*backtest start: 2023-04-01 00:00:00 end: 2024-03-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Price Change", shorttitle="Price Change", overlay=true) change = input(00.1, title="Change", minval=0.0001, maxval=1, type=input.float) // Calculate price change priceChange = close / close[1] - 1 // Buy and Sell Signals buyp = priceChange >= change sellp = priceChange <= (change * -1) // Initialize position and track the current position var int position = na // Strategy entry conditions buy_condition = buyp and (na(position) or position == -1) sell_condition = sellp and (na(position) or position == 1) var float stop = na if (buy_condition) strategy.entry("Long", strategy.long) stop := lowest(low, 6) position := 1 if (sell_condition or low < stop) strategy.close("Long") position := -1 // Plot Buy and Sell signals using plotshape plotshape(series=buy_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sell_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)