
Cette stratégie, combinée à l’utilisation d’indicateurs de super-tendance et de changement de Fisher, cherche des opportunités de short-cuts lorsque le marché se retourne. Elle peut s’appliquer à différentes crypto-monnaies, actions et marchés en ajustant les paramètres de super-tendance et de changement de Fisher.
La stratégie commence par calculer la variation de Fisher sur 10 cycles. Elle génère un signal de vente lorsque la ligne de variation de Fisher franchit 2,5 du bas vers le haut. En même temps, elle calcule l’amplitude réelle moyenne sur 10 cycles comme un canal de super-tendance.
En particulier, il calcule le prix de clôture de la ligne K actuelle en dessous de la trajectoire du super canal de la période précédente, et le cycle précédent au-dessus de la trajectoire du canal inférieur, jugé comme un retournement de marché, générant un signal de vente. En même temps, il calcule l’indicateur de conversion de la Fed, quand la ligne de conversion de la Fed dépasse le point bas de 2.5, et la valeur de conversion de la Fed du cycle précédent est inférieure à la valeur actuelle, jugé comme un retournement de tendance, générant un signal de vente.
Ainsi, la stratégie doit satisfaire à la fois aux deux conditions pour que le supertrend décide d’un renversement du marché et à la conversion de Fisher pour décider d’un renversement de la tendance avant de produire un signal de vente final.
Cette stratégie, combinée à un canal de supertrend et à un indicateur de changement de Fisher, permet de capturer plus précisément les points de retournement du marché. Comparé à l’utilisation d’un seul supertrend ou de changement de Fisher, elle réduit les faux signaux et améliore la stabilité de la stratégie.
En outre, la stratégie offre la flexibilité d’ajuster les paramètres de super-canal de tendance et de changement de Fisher. L’utilisateur peut choisir la meilleure combinaison de paramètres en fonction des différents marchés et variétés, afin de s’adapter de manière ciblée au marché.
La stratégie fournit également une gestion du montant du risque. L’utilisateur peut facilement ajuster le montant du capital risque de chaque tranche pour répondre à ses propres exigences de gestion du risque. De plus, il calcule automatiquement le seuil de stop-loss et l’objectif de profit, ce qui permet d’obtenir un meilleur taux de retour sur risque.
La stratégie repose principalement sur la structure du marché pour juger de la chaîne de super-tendance. La chaîne de super-tendance peut s’effondrer lorsque la tendance persiste pendant une période plus longue. Dans ce cas, le paramètre de cycle ou le multiplicateur ATR de la chaîne doit être ajusté de manière appropriée.
En outre, les changements de Fisher sont plus susceptibles de générer des signaux erronés ou prématurés. Lorsque les fluctuations du marché sont importantes, il convient d’ajuster les paramètres cycliques des changements de Fisher pour filtrer une partie du bruit.
De plus, le succès global des stratégies de retournement de catégorie peut être limité. Il convient de combiner les indicateurs de suivi de la tendance et d’éviter d’ouvrir des positions entre les zones de choc ou de participer à nouveau après que la tendance soit plus claire.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimiser le nombre de cycles ATR et le nombre de multiples ATR pour les canaux de super-trends, en choisissant la meilleure combinaison de paramètres pour différentes variétés et conditions de marché
Optimisation des paramètres de cycle de la transformation de Fischer, réduction du bruit de la courbe de lissage, prévention de la génération de signaux erronés
Ajouter des moyennes mobiles ou des bandes de Brin comme indicateur auxiliaire pour éviter de prendre position sur des marchés en crise
La transformation de Fisher combinée à des périodes de temps différentes permet de rendre des jugements inverses plus stables et plus fiables.
Ajout de modules de gestion de position, tels que le ratio de levier, le nombre de positions, les règles de mise en position, etc., pour contrôler le risque
Optimisation automatique des paramètres et adaptation des stratégies, combinée à des méthodes telles que l’apprentissage automatique
La stratégie intègre des indicateurs de supertrends et de changement de Fisher, offre une certaine flexibilité pour juger des retournements de marché et peut être adaptée à différentes variétés par des paramètres. Par rapport à un seul indicateur, elle permet un jugement de signal et un contrôle des risques plus fiables. Grâce à une optimisation continue, la stratégie est susceptible de renforcer davantage la stabilité et d’améliorer la rentabilité.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-02-27 03:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend and Fisher_SHORT", overlay=true)
//This block is for Fisher Transformation Calculation.
len = input.int(10, minval=1, title="Length") // Length is optional. 10 is good but is up to you.
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]
// Sell condition for Fisher transformation.
sell_signal = (fish1 > 2.5) and (fish2 > fish1)
durum = 0 //just for the situation.
if (sell_signal)
durum := -1 // now it changes from 0 to -1.
// Supertrend indicator inputs and calculations (same as in the indicator)
Periods = input(title='ATR Period', defval=10) // period is 10, but you can change it
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=2) //atr multiplier is important. it is 2 for this strategy but you can find another for best performance
RiskAmount = input.float(title='Risk Amount ($)', defval=10.0, minval=0.0, step=1.0) // ıf you use risk-reward method, risk is 10$ for each position. you can also change it
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
// Calculate position size based on risk amount
riskPerContract = atr * Multiplier
contracts = RiskAmount / (riskPerContract * syminfo.mintick)
//short signal condition
sellSignal = trend == -1 and trend[1] == 1 and durum == -1
plotshape(sellSignal, title='Sell Signal', location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) //shows the signal.
// variables
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float atr1 = na
var float takeProfit2 = na
var float takeProfit3 = na
//it calculates the stop level and reward profit levels using atr.
if (sellSignal)
entryPrice := close
atr1 := atr
stopLoss := entryPrice + atr1 * Multiplier
contracts := entryPrice / (stopLoss - entryPrice) * RiskAmount / entryPrice
takeProfit := entryPrice - atr1 * Multiplier
takeProfit2 := entryPrice - 2 * atr1 * Multiplier
takeProfit3 := entryPrice - 3 * atr1 * Multiplier
if (sellSignal)
strategy.entry("Sell", strategy.short, qty=1)
//
if (close >= stopLoss)
strategy.close("Sell", comment="Stop Loss Hit")
else if (close <= takeProfit)
strategy.close("Sell", comment="Take Profit Hit")
// draw the stop, entry and profit levels
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=1, style=plot.style_linebr)
plot(entryPrice, title="Entry Price", color=color.orange, linewidth=1, style=plot.style_linebr)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)
plot(takeProfit2, title="Take Profit 2", color=color.blue, linewidth=1, style=plot.style_linebr)
plot(takeProfit3, title="Take Profit 3", color=color.purple, linewidth=1, style=plot.style_linebr)