Tendance actuelle Tendance à suivre la stratégie

Auteur:ChaoZhang est là., Date: 21 septembre 2023 à 15h08
Les étiquettes:

Résumé

La stratégie PresentTrend est une stratégie unique de suivi des tendances personnalisée. Cette combinaison permet à la stratégie de tirer parti des tendances à court et à long terme du marché, ce qui la rend adaptée à diverses conditions de marché.

Comment fonctionne- t- il?

La stratégie se compose de deux parties:

  1. Indicateur RSI ou IFM personnalisé: Cet indicateur calcule une valeur de tendance actuelle basée sur le RSI ou l'IFM, générant des signaux d'achat et de vente basés sur son croisement et son croisement, indiquant des renversements de tendance potentiels.

  2. Indicateur ATR: Indicateur populaire de suivi de tendance qui utilise la plage moyenne réelle (ATR).

La stratégie entre dans une position longue lorsque tous les signaux d'achat des deux stratégies sont vrais, et une position courte lorsque tous les signaux de vente sont vrais.

Les avantages

  • Combine les tendances à court et à long terme, adaptées aux différentes conditions du marché
  • Utilise l'indicateur personnalisé et l'ATR pour augmenter la fiabilité du signal
  • L'option de négociation à long terme, à court terme ou bidirectionnelle convient à différents styles de négociation
  • Paramètres par défaut optimisés pour l'équilibre de sensibilité et de stabilité
  • Les paramètres peuvent être ajustés en fonction des préférences personnelles pour l'optimisation

Risques et solutions

  • Vulnérable aux fléchettes comme toutes les stratégies de suivi de tendance
  • Le commerce bidirectionnel peut augmenter le nombre de transactions et les frais
  • Un mauvais réglage des paramètres peut générer des faux signaux excessifs
  • Peut utiliser des périodes de conservation plus courtes pour réduire le risque de piqûre
  • L'option de long ou de court ne fait que réduire le nombre de transactions
  • Les paramètres doivent être soigneusement testés et ajustés pour assurer leur viabilité.

Directions d'optimisation

  • Ajouter des mécanismes d'arrêt des pertes pour un meilleur contrôle des pertes
  • Filtrez les signaux avec des indicateurs supplémentaires pour réduire les transactions erronées
  • Testez différents paramètres de la période de conservation pour trouver l'optimum
  • Explorez l'apprentissage automatique pour l'optimisation automatisée des paramètres
  • Incorporer plus de sources de données telles que les informations sur le flux des commandes
  • Optimiser le code de stratégie pour une meilleure efficacité d'exécution

Conclusion

Dans l'ensemble, la stratégie PresentTrend est un système de suivi des tendances très efficace. Elle combine des indicateurs de tendance à court et à long terme pour être sensibles tout en améliorant la fiabilité du signal. Avec une direction, des paramètres et une logique supplémentaires réglables, la stratégie peut s'adapter à différents environnements de marché et aux besoins des traders.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading

//@version=5

// Define the strategy settings
strategy('PresentTrend - Strategy [presentTrading]' , overlay=true, precision=3, default_qty_type=strategy.cash, 
 commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, 
  currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000)

// Define the input parameters
priceSource  = input.source(title='Source', defval=hlc3, group='PresentTrend') // The price source to use
lengthParam  = input.int(title='Length', defval=14, group='PresentTrend') // The length of the moving average
multiplier = input.float(title='Multiplier', defval=1.618, step=0.1, group='PresentTrend') // The multiplier for the ATR
indicatorChoice  = input.bool(title='Whether to use RSI or MFI', defval=false, group='PresentTrend') // Whether to use RSI or MFI

// Add a parameter for choosing Long or Short
tradeDirection = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"])

// Calculate the ATR and the upT and downT values
ATR = ta.sma(ta.tr, lengthParam)
upperThreshold = low - ATR * multiplier 
lowerThreshold  = high + ATR * multiplier 

// Initialize the PresentTrend indicator
PresentTrend = 0.0

// Calculate the PresentTrend indicator
PresentTrend := (indicatorChoice ? ta.rsi(priceSource, lengthParam) >= 50 : ta.mfi(hlc3, lengthParam) >= 50) ? upperThreshold < nz(PresentTrend[1]) ? nz(PresentTrend[1]) : upperThreshold : lowerThreshold > nz(PresentTrend[1]) ? nz(PresentTrend[1]) : lowerThreshold

// Calculate the buy and sell signals
longSignal  = ta.crossover(PresentTrend, PresentTrend[2])
shortSignal  = ta.crossunder(PresentTrend, PresentTrend[2])

// Calculate the number of bars since the last buy and sell signals
barsSinceBuy = ta.barssince(longSignal)
barsSinceSell = ta.barssince(shortSignal)
previousBuy = ta.barssince(longSignal[1])
previousSell = ta.barssince(shortSignal[1])

// Initialize the direction variable
trendDirection = 0

// Calculate the direction of the trend
trendDirection := longSignal and previousBuy > barsSinceSell ? 1 : shortSignal and previousSell > barsSinceBuy ? -1 : trendDirection[1]

// Check the trade direction parameter before entering a trade
if (trendDirection == 1 and (tradeDirection == "Long" or tradeDirection == "Both"))
    strategy.entry("Buy", strategy.long) 
if (trendDirection == -1 and (tradeDirection == "Short" or tradeDirection == "Both"))
    strategy.entry("Sell", strategy.short) 

// Add a stop mechanism when the tradeDirection is one-sided
if (tradeDirection == "Long" and trendDirection == -1)
    strategy.close("Buy")
if (tradeDirection == "Short" and trendDirection == 1)
    strategy.close("Sell")

// Visualization
plot(PresentTrend, color=color.blue, title="PresentTrend")
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")


Plus de