Stratégie de tendance des vagues avec stop loss multiple et take profit multiple


Date de création: 2023-12-01 18:09:12 Dernière modification: 2023-12-01 18:09:12
Copier: 0 Nombre de clics: 814
1
Suivre
1619
Abonnés

Stratégie de tendance des vagues avec stop loss multiple et take profit multiple

Aperçu

Cette stratégie est la stratégie de tendance de vague originale de LazyBear, avec l’ajout d’un deuxième stop loss, de plusieurs prix stop loss et d’un filtre EMA à haute période. Elle génère des signaux de transaction à l’aide d’indicateurs de tendance de vague, puis combine le filtrage EMA et la gestion de stop loss pour automatiser le suivi des transactions.

Principe de stratégie

L’indicateur central de la stratégie est l’indicateur de tendance des vagues (WaveTrend), qui se compose de trois parties:

  1. AP: prix moyen = (le prix le plus élevé + le prix le plus bas + le prix de clôture) / 3

  2. N°1 de l’ESA dans le cadre de l’AP

  3. CI: ((AP-ESA) / (0,015 x l’EMA de la période n1 de l’AP-ESA) pour la valeur absolue de l’EMA de la période n1

  4. TCI: EMA de la période n2 de la CI, soit la ligne de tendance de la vague 1 ((WT1))

  5. WT2: SMA à 4 cycles de WT1

Lorsque WT1 est traversé par WT2 et produit un fourchette dorée, faites plus; lorsque WT2 est traversé par WT1 et produit un fourchette morte, faites un pari nul.

En outre, la stratégie introduit l’EMA à haute période comme filtre, permettant de faire plus lorsque le prix est supérieur à l’EMA et de faire moins lorsque le prix est inférieur à l’EMA, afin de filtrer certains faux signaux.

Avantages stratégiques

  1. Utilisez l’indicateur de tendance des vagues pour suivre automatiquement les tendances et éviter les erreurs de jugement humaines
  2. Ajout d’un deuxième arrêt pour contrôler efficacement les pertes individuelles
  3. Plusieurs prix d’arrêt pour maximiser les bénéfices
  4. Filtre EMA, filtre les fausses signaux, améliore le taux de victoire

Risques stratégiques et optimisation

  1. La tendance à l’inflation pourrait être inversée si elle n’est pas filtrée.
  2. Une mauvaise configuration des paramètres peut entraîner des transactions trop fréquentes
  3. Test de différentes combinaisons de paramètres et paramètres d’optimisation
  4. Un renversement de tendance peut être envisagé avec d’autres indicateurs

Résumer

La stratégie prend en compte plusieurs dimensions, telles que le suivi des tendances, la gestion des risques et la maximisation des bénéfices. Elle capte automatiquement les tendances grâce à un indicateur de tendance en vague, en combinaison avec un filtre EMA pour améliorer l’efficacité de la négociation et contrôler les risques tout en saisissant les tendances.

Code source de la stratégie
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
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/
// © undacovacobra

//@version=4
strategy("WaveTrend Strategy [LazyBear] with Secondary Stop Loss", overlay=true)

// Input parameters
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
useEmaFilter = input(false, "Use EMA Filter")
emaLength = input(50, "EMA Length")
emaTimeFrame = input("60", "EMA Time Frame")
tradeMode = input("Both", "Trade Mode", options=["Long Only", "Short Only", "Both"])
useSecondarySL = input(false, "Use Secondary Stop Loss")
slPercentage = input(5.0, "Stop Loss Percentage (%)")

// WaveTrend Indicator Calculations
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
wt1 = tci
wt2 = sma(wt1, 4)

// EMA Calculation with Selected Time Frame
getEma(timeFrame) =>
    security(syminfo.tickerid, timeFrame, ema(close, emaLength))

emaFilter = getEma(emaTimeFrame)

// Secondary Stop Loss Calculation
longStopPrice = strategy.position_avg_price * (1 - slPercentage / 100)
shortStopPrice = strategy.position_avg_price * (1 + slPercentage / 100)

// Long Entry and Exit Conditions with EMA Filter and Trade Mode
longEntry = crossover(wt1, wt2) and wt2 < osLevel1 and (not useEmaFilter or close > emaFilter) and (tradeMode == "Long Only" or tradeMode == "Both")
if (longEntry)
    strategy.entry("Long", strategy.long)
longExit = crossunder(wt1, wt2) and wt2 > obLevel1
if (longExit)
    strategy.close("Long")
if (useSecondarySL and strategy.position_size > 0 and low < longStopPrice)
    strategy.close("Long", comment="SL Hit")

// Short Entry and Exit Conditions with EMA Filter and Trade Mode
shortEntry = crossunder(wt1, wt2) and wt2 > obLevel1 and (not useEmaFilter or close < emaFilter) and (tradeMode == "Short Only" or tradeMode == "Both")
if (shortEntry)
    strategy.entry("Short", strategy.short)
shortExit = crossover(wt1, wt2) and wt2 < osLevel1
if (shortExit)
    strategy.close("Short")
if (useSecondarySL and strategy.position_size < 0 and high > shortStopPrice)
    strategy.close("Short", comment="SL Hit")

// Plotting
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_cross)
plot(osLevel2, color=color.green, style=plot.style_cross)
plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_cross)
plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80)
plot(emaFilter, color=color.blue)