Cette stratégie combine l'indicateur Supertrend et Fisher Transform pour rechercher des opportunités courtes lorsque le marché est inversé. Il peut ajuster les paramètres de Supertrend et Fisher Transform pour différentes crypto-monnaies, actions et marchés.
La stratégie calcule d'abord la transformation de Fisher avec une période de 10. Lorsque la ligne de Fisher dépasse 2,5 en dessous, un signal de vente est généré. En même temps, elle calcule la plage moyenne vraie (ATR) de 10 périodes comme canal pour la supertrend. Lorsque le prix traverse le rail supérieur, un signal de vente est généré. La stratégie combine donc la transformation de Fisher et le canal de supertrend pour saisir les opportunités courtes lorsque le marché inverse.
Plus précisément, lorsque la clôture actuelle est en dessous du rail supérieur précédent et que la clôture précédente est au-dessus du rail inférieur du canal Supertrend, elle détermine que le marché s'est inversé et génère un signal de vente.
Donc la stratégie nécessite à la fois l'identification de l'inversion de Supertrend et Fisher Transform pour générer le signal de vente final.
La stratégie combine le canal Supertrend et Fisher Transform, qui peuvent capturer plus précisément les points d'inversion du marché.
En outre, la stratégie offre une flexibilité pour ajuster les paramètres de Supertrend et Fisher. Les utilisateurs peuvent sélectionner les meilleures combinaisons de paramètres pour différents marchés et produits pour s'adapter au marché de manière ciblée. Il s'agit d'une stratégie personnalisable et optimisable.
La stratégie fournit également une gestion du montant du risque. Les utilisateurs peuvent facilement ajuster le capital de risque pour chaque ordre pour répondre à leurs propres besoins de gestion des risques. En même temps, elle calcule automatiquement les niveaux de stop-loss et de prise de profit pour atteindre un bon rapport risque-rendement.
La stratégie repose principalement sur le canal de Supertrend pour déterminer la structure du marché. Lorsque la tendance dure pendant une période prolongée, la Supertrend peut échouer. Dans ce cas, la période ou le multiplicateur ATR du canal doit être augmenté de manière appropriée.
En outre, Fisher Transform a tendance à générer facilement de faux signaux ou des signaux prématurés.
En outre, le taux de gain global des stratégies d'inversion peut être limité. Il devrait être combiné avec des indicateurs de tendance suivants pour éviter d'ouvrir des positions dans des zones de fourchette ou de participer après que la tendance soit devenue plus claire. Les moyennes mobiles peuvent être ajoutées comme filtre pour améliorer la stabilité.
La stratégie peut être améliorée par les aspects suivants:
Optimiser la période ATR et le multiplicateur ATR de Supertrend pour la meilleure combinaison de paramètres basée sur différents produits et conditions de marché.
Optimiser la période de Fisher pour lisser la courbe et éviter de faux signaux.
Ajoutez des moyennes mobiles ou des bandes de Bollinger comme indicateur auxiliaire pour éviter d'ouvrir des positions sur des marchés variables.
Combiner la transformation de Fisher sur différents délais pour obtenir un jugement d'inversion plus stable.
Ajouter des modules de gestion des positions tels que le ratio d'effet de levier, la taille des positions, des règles complémentaires, etc. pour contrôler les risques.
Incorporer des méthodes d'apprentissage automatique pour obtenir une optimisation automatique des paramètres et un ajustement de la stratégie.
La stratégie intègre Supertrend et Fisher Transform avec une flexibilité pour s'adapter à différents produits par ajustement de paramètres, par rapport aux stratégies d'indicateur unique. Elle permet un jugement plus fiable du signal et un contrôle des risques. Avec une amélioration continue, la stratégie promet d'améliorer encore la stabilité et 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)