
La stratégie combine les deux indicateurs SuperTrend et Fisher Conversion pour réaliser une stratégie de négociation de tendance plus stable suivant la longue ligne. La stratégie génère un signal de vente lorsque l’indicateur SuperTrend émet un signal d’achat et lorsque l’indicateur Fisher Conversion est inférieur à -2.5 et à la hausse. La stratégie gère les positions de manière raisonnable avec des arrêts et des arrêts.
L’indicateur SuperTrend est utilisé pour déterminer la direction de la tendance des prix. Lorsque les prix sont en hausse, il est utilisé comme signal de hausse.
L’indicateur de conversion de Fisher reflète l’impact des fluctuations des prix sur la psychologie des consommateurs. La valeur de Fisher dans la plage de [−2,5, 2,5] représente le marché neutre, inférieure à 2,5 représente la panique du marché, supérieure à 2,5 représente l’euphorie du marché.
La stratégie gère les positions en utilisant un stop-loss raisonnable. Le stop-loss est défini comme le prix d’entrée moins le ATR multiplié par le ATR. Le stop-loss est défini comme le prix d’entrée plus le ATR multiplié par le ATR. Le stop-loss est plus grand que le stop-loss.
La gestion du montant du risque est également prise en compte. La taille de la position est calculée en fonction de l’ATR et du montant du risque, de sorte que le risque par unité ne dépasse pas le montant du risque défini.
La combinaison d’indicateurs multiples permet d’éviter une fréquence élevée de transactions avec un seul indicateur. La direction de la tendance est déterminée par le SuperTrend, et la psychologie du marché est déterminée par la transformation de Fisher, qui se combinent pour former un signal de transaction stable.
La mise en place d’un stop-loss raisonnable permet de saisir la tendance et de détenir une ligne longue tout en contrôlant le risque.
La gestion des montants de risque et les unités de négociation minimales permettent de contrôler le risque de chaque transaction et d’éviter des pertes supérieures à la capacité de support.
Les signaux de négociation sont stables et adaptés à la tenue des lignes longues. La conversion de Fisher est un indicateur lisse qui aide à filtrer le bruit du marché et à éviter les faux signaux.
L’espace d’optimisation des paramètres de l’indicateur est grand. Il est possible d’ajuster les paramètres ATR et de multiplication de SuperTrend en fonction des différentes variétés de différentes périodes, ainsi que les paramètres de lissage de la transformation de Fisher, pour trouver la meilleure combinaison de paramètres.
En tant que stratégie de suivi de la tendance, des pertes mineures s’accumulent pendant la phase de reprise de choc. Des variétés et des stratégies de fonctionnement cyclique évidentes devraient être choisies.
La conversion de Fisher n’est pas efficace pour les situations extrêmes. Lorsque le marché maintient un certain état pendant une longue période, la valeur de Fisher continue à s’écarter de la plage neutre et la stratégie doit être suspendue.
Un arrêt trop proche du point de perte peut entraîner une sortie trop fréquente. Les paramètres ATR et ATR doivent être raisonnablement configurés pour s’assurer qu’il y a une certaine zone de sécurité entre le point de perte et l’arrêt.
L’ignorance des coûts de transaction peut entraîner des pertes de transactions à faible profit. Le niveau des frais de transaction de la variété doit être pris en compte et la marge de freinage doit être ajustée de manière appropriée.
Il faut beaucoup de temps pour s’engager sur le marché et avoir un avantage stratégique. Il faut s’assurer d’avoir suffisamment de fonds pour soutenir les transactions à long terme et être stable mentalement.
Ajuster les paramètres ATR cyclique et ATR multiplicatif pour optimiser l’amplitude d’arrêt de perte. Les paramètres peuvent être optimisés par le retour des données, ou optimisés dynamiquement.
Essayez différents paramètres de conversion de Fisher, tels que des cycles de lissage, à la recherche d’un signal de négociation plus stable.
En combinaison avec d’autres indicateurs comme filtre, éviter les erreurs de négociation lorsque le marché est incertain. Les courbes moyennes, les taux d’oscillation et autres peuvent être utilisés pour déterminer le mouvement du marché.
Tester différentes stratégies d’arrêt, telles que l’arrêt mobile, l’arrêt par lots, l’arrêt par traînée ATR, etc., pour améliorer la rentabilité.
Les stratégies d’optimisation de la gestion des fonds, telles que la gestion des fonds à taux fixe, la formule de Kelly, etc., ont permis d’obtenir des profits plus élevés que les pertes.
Optimisation des frais de transaction pour assurer la rentabilité après une transaction de petite taille.
La stratégie intègre les avantages d’indicateurs tels que les changements de SuperTrend et de Fisher, formant une tendance stable qui suit la stratégie de négociation à long terme. Grâce à la gestion de l’arrêt-stop et du contrôle des risques, un meilleur taux de rendement des risques peut être obtenu. La stratégie doit être encore optimisée en termes de paramètres, de signaux de filtrage et de gestion des fonds, etc., pour obtenir une meilleure performance en bourse.
/*backtest
start: 2023-10-26 00:00:00
end: 2023-11-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend and Fisher_LONG", 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]
// Buy condition for Fisher transformation.
buy_signal = (fish1 < -2.5) and (fish1 > fish2)
durum = 0 //just for the situation.
if (buy_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
buySignal = trend == 1 and trend[1] == -1 and durum == 1
plotshape(buySignal, title='Buy Signal', location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
// 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 (buySignal)
entryPrice := close
atr1 := atr
stopLoss := entryPrice - atr1 * Multiplier
contracts := entryPrice / (entryPrice - stopLoss) * RiskAmount / entryPrice
takeProfit := entryPrice + atr1 * Multiplier
takeProfit2 := entryPrice + 2 * atr1 * Multiplier
takeProfit3 := entryPrice + 3 * atr1 * Multiplier
if (buySignal)
strategy.entry("Buy", strategy.long, qty=contracts)
//
if (close <= stopLoss)
strategy.close("Buy", comment="Stop Loss Hit")
else if (close >= takeProfit)
strategy.close("Buy", 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)