Les ressources ont été chargées... Je charge...

La stratégie d'arrêt de traîneau de Yurik Fisher

Auteur:ChaoZhang est là., Date: 2024-02-02 14:57:33 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de trailing stop de Fisher Yurik est une stratégie de trading quantitative qui intègre l'indicateur Fisher Yurik et les mécanismes de trailing stop.

La logique de la stratégie

  1. Plateaux de dates d'entrée pour définir le délai de backtest/de négociation en direct
  2. Paramètres d'entrée pour l'indicateur Fisher Yurik, par défaut à 2 périodes
  3. Les taux de prise de profit et de stop-loss des entrées, défaut de paiement à 5% de profit et de 2% de perte
  4. Calculer les lignes principales et les lignes de signal de l'indicateur Fisher Yurik
  5. Générer un signal d'achat lorsque la ligne principale traverse au-dessus de la ligne de signal
  6. Mettre en place un arrêt de trail, sortir de la position longue lorsque le prix chute de 2% après l'entrée
  7. Profitez lorsque le prix dépasse 5%

Analyse des avantages

  1. L'indicateur Fisher Yurik identifie facilement les tendances, les signaux d'achat précis
  2. Le verrouillage de l'arrêt de traîneau dans la plupart des bénéfices tout en évitant les arrêts au-delà du seuil
  3. Paramètres personnalisables adaptés aux différents environnements du marché
  4. Mise en œuvre simple et facile à comprendre

Analyse des risques

  1. Un réglage inapproprié des paramètres peut entraîner une négociation trop agressive, nécessitant des tests prudents
  2. Un stop-loss trop large peut entraîner des pertes plus importantes que prévu.
  3. Prendre des profits trop serrés peut réduire les gains, limitant la rentabilité
  4. Des paramètres appropriés doivent être déterminés pour différents produits

Les risques peuvent être résolus en ajustant les ratios stop/profit, les paramètres de test, en utilisant des filtres de signal, des règles de dimensionnement des positions.

Des possibilités d'amélioration

  1. Optimiser les paramètres de Fisher Yurik pour un impact sur la stratégie
  2. Ajouter des filtres de signal comme MACD, KD pour améliorer la qualité du signal
  3. Ajouter des conditions d'entrée telles que les écarts des bandes de Bollinger
  4. Incorporer des règles de dimensionnement des positions au contrôle par risque de transaction
  5. Améliorer les méthodes d'arrêt des traînées, par exemple les sorties lissées, les sorties à l'échelle du lustre

Conclusion

La stratégie d'arrêt de trail de Fisher Yurik combine l'identification de tendance et la gestion des risques.


/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)


Plus de