Évasion de tendance - stratégie d'ombre longue

Auteur:ChaoZhang est là., Date: 2023-11-15 16:43:17 Je vous en prie.
Les étiquettes:

img

Cette stratégie évalue la direction actuelle de la tendance en calculant le rapport longueur d'ombre haussière/baissière, et identifie la tendance avec l'indicateur ATR. Elle ouvre une position inverse sur les points de rupture et définit un stop loss et un profit pour capturer les tendances à court terme.

La logique de la stratégie

La stratégie évalue principalement la tendance actuelle en calculant le ratio d'ombre haussière/baissière.

La logique spécifique est la suivante:

  1. Calcul de l' ombre baissière: proche - bas
  2. Calculer l' ombre haussière: haute ouverte
  3. Prenez le maximum d'ombre baissière et haussière comme longueur d'ombre
  4. Calculer la longueur du corps de la bougie: haut - bas
  5. Calculer le rapport entre l'ombre et la longueur du corps
  6. Si le ratio est supérieur à 0,5 et que la tendance baissière est supérieure à la tendance haussière, évaluer la tendance à la baisse et la position longue
  7. Si le ratio est supérieur à 0,5 et que la tendance haussière est supérieure à la baisse, évaluer la tendance haussière et la position courte
  8. Valider la rupture avec une longueur de bougie > 0,75 * ATR
  9. Définir le stop loss et le take profit après entrée, avec un rapport de 2:1

Ce qui précède est la logique de base du trading, identifier les points de rupture inversés avec la détection de tendance et optimiser les bénéfices avec stop loss/take profit.

Les avantages

  1. Le ratio d'ombre juge avec précision la tendance
  2. L'ATR filtre les faux signaux de fuite
  3. Stop loss et take profit gère le risque
  4. Le ratio risque/rendement de 2:1 est conforme à la norme quant trading
  5. Convient pour la négociation à court terme sur des actions à forte volatilité
  6. Une logique simple et claire, facile à comprendre.

Les risques

  1. La volatilité des prix peut affecter le stop loss et augmenter la perte
  2. Les performances dépendent fortement du réglage des paramètres
  3. L'inversion de tendance peut entraîner des pertes
  4. L'extension du stop loss/take profit peut augmenter la probabilité de perte
  5. Une évasion ratée peut entraîner de lourdes pertes.

Les risques peuvent être gérés par un stop loss raisonnable, une optimisation des paramètres et une sortie de position en temps opportun.

Amélioration

La stratégie peut être optimisée de la manière suivante:

  1. Optimiser le paramètre de ratio d'ombre pour obtenir la meilleure valeur
  2. Optimiser le paramètre ATR pour la meilleure longueur de bougie
  3. Optimiser les coefficients stop loss/take profit pour une rentabilité optimale du risque
  4. Ajouter la taille de la position comme augmentation progressive de la position
  5. Ajouter un stop-loss pour protéger les bénéfices
  6. Ajouter d'autres indicateurs aux signaux filtrés
  7. Optimiser la période de backtest et tester les différentes étapes du marché

Avec des tests et une optimisation à multiples facettes, la performance de la stratégie peut être maximisée.

Dans l'ensemble, cette stratégie profite des fluctuations de prix à court terme grâce à l'identification des tendances et à la gestion des risques.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © ondrej17

//@version=4
strategy("longWickstrategy", overlay=true )
 
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
 
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup


 
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)


// Entries and Exits
 
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0

strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)

longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na

strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)  
 

plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)

plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)



Plus de