Stratégie de référence pour une rupture de tendance à la hausse


Date de création: 2024-02-21 10:58:01 Dernière modification: 2024-02-21 10:58:01
Copier: 0 Nombre de clics: 610
1
Suivre
1617
Abonnés

Stratégie de référence pour une rupture de tendance à la hausse

Aperçu

Cette stratégie consiste à déterminer la direction de la tendance à partir d’une moyenne mobile simple et d’une stratégie de tenue de longue ligne avec des lignes de support de résistance pour former un signal de rupture. En calculant les hauts et les bas de pivot des prix, on dessine les lignes de résistance et de soutien.

Principe de stratégie

  1. Calculer une moyenne mobile simple de 20 jours comme référence pour juger de la tendance
  2. Calculer les hauts et les bas du Pivot en fonction des paramètres de l’utilisateur
  3. Tracez les lignes de résistance et de soutien en fonction des hauts et des bas pivots
  4. Faire une entrée supplémentaire lorsque le prix de clôture est supérieur à la ligne de résistance
  5. Lorsque le support est en dessous de la ligne de résistance, la position est levée.

Cette stratégie utilise une moyenne mobile simple pour déterminer la direction de la tendance générale, puis utilise des points critiques pour créer un signal de transaction, ce qui est typique de la stratégie de type rupture. Grâce à des points critiques et des jugements de tendance, il est possible de filtrer efficacement les fausses ruptures.

Analyse des avantages

  1. Il existe de nombreuses opportunités stratégiques pour les actions à forte volatilité et pour capturer facilement les tendances
  2. Le risque est plus élevé que le bénéfice
  3. Le risque de fausse intrusion est évité en utilisant des signaux d’intrusion.
  4. Paramètres personnalisables et adaptatifs

Analyse des risques

  1. L’optimisation des paramètres dépend des paramètres incorrects qui augmentent la probabilité de fausse percée
  2. Le signal de rupture est retardé et peut-être raté
  3. Les tremblements de terre peuvent causer des dommages.
  4. La mise en place de la ligne de soutien en retard peut entraîner des pertes

Le risque peut être réduit par l’optimisation des paramètres de la plate-forme, combinée à une stratégie de stop-loss.

Direction d’optimisation

  1. Optimisation des paramètres de périodicité des moyennes mobiles
  2. Optimiser les paramètres de la ligne de résistance de support
  3. Augmentation de la stratégie de stop-loss
  4. Ajout de mécanisme de confirmation de rupture
  5. Filtrage des signaux avec des indicateurs tels que le volume des transactions

Résumer

L’ensemble de la stratégie est une stratégie de rupture typique, reposant sur l’optimisation des paramètres et la liquidité, adaptée aux traders qui suivent la tendance. En tant que cadre de référence, l’extension de module peut être effectuée en fonction des besoins réels, afin de réduire le risque et d’améliorer la stabilité grâce à des mécanismes tels que l’arrêt des pertes, le filtrage des signaux et autres.

Code source de la stratégie
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 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/
// © CheatCode1

//@version=5
strategy("Quantitative Trend Strategy- Uptrend long", 'Steady Uptrend Strategy', overlay=true, initial_capital = 1500, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type = strategy.percent_of_equity)


length = input.int(20, minval=1)
src = input(close, title="Source")
basis = ta.sma(src, length)
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)

inp1 = input.int(46, 'LookbackLeft')
inp2 = input.int(32, 'LookbackRight')

l1 = ta.pivothigh(close, inp1, inp2)
S1 = ta.pivotlow(close, inp1, inp2)

// plot(l1, 'Pivothigh', color.red, 1)
// // plot(S1, 'Pivot Low', color.red)

l1V = ta.valuewhen(l1, close, 0)
S1V = ta.valuewhen(S1, close, 0)

Plotl1 = not na(l1) ? l1V : na
PlotS1 = not na(S1) ? S1V : na

plot(Plotl1, 'Resistance', color.green, 1, plot.style_stepline, true)
plot(PlotS1, 'Support', color.red, 1, plot.style_stepline, true)

Priceforlong = close > l1V ? true : na
Priceforshort = close < S1V ? true : na

plotshape(Priceforlong ? high : na, 'p', shape.arrowup, location.abovebar, color.green, size = size.small)
plotshape(Priceforshort ? low : na, 's', shape.arrowdown, location.belowbar, color.red, size = size.small)

vol = volume
volma = ta.sma(vol, 20)

Plotl1C = ta.valuewhen(na(Plotl1), l1V, 0)
PlotS1C = ta.valuewhen(na(PlotS1), S1V, 0)
//Strategy Execution
volc = volume > volma 

Lc1 = Priceforlong 

Sc1 = Priceforshort

sL = Plotl1 < PlotS1 ? close : na
sS = PlotS1 > Plotl1 ? close : na


if Lc1 
    strategy.entry('Long', strategy.long)
// if Sc1 and C2
//     strategy.entry('Short', strategy.short)

if Priceforshort
    strategy.cancel('Long')
if Priceforlong   
    strategy.cancel('Short')


// Stp1 = ta.crossover(k, d)
// Ltp1 = ta.crossunder(k, d)
// Ltp = d > 70  ? Ltp1 : na
// Stp = d < 30  ? Stp1 : na


if strategy.openprofit >= 0 and sL
    strategy.close('Long')
if strategy.openprofit >= 0 and sS
    strategy.close('Short')
takeP = input.float(2, title='Take Profit') / 100
stopL = input.float(1.75, title='Stop Loss') / 100


// // Pre Directionality

Stop_L = strategy.position_avg_price * (1 - stopL)

Stop_S = strategy.position_avg_price * (1 + stopL)

Take_S= strategy.position_avg_price * (1 - takeP)

Take_L = strategy.position_avg_price * (1 + takeP)
     
// sL = Plotl1 < PlotS1 ? close : na
// sS = PlotS1 < Plotl1 ? close : na
     
// //Post Excecution
if strategy.position_size > 0 and not (Lc1)
    strategy.exit("Close Long", stop = Stop_L, limit = Take_L)

if strategy.position_size < 0 and not (Sc1)
    strategy.exit("Close Short", stop = Stop_S, limit = Take_S)