Cette stratégie est basée sur la stratégie WaveTrend originale de LazyBear, avec des fonctionnalités supplémentaires telles que le stop loss secondaire, les niveaux de profit multiples et le filtre EMA à long terme.
L'indicateur de base de cette stratégie est la tendance à la vague, composée de trois composantes:
AP: Prix moyen = (plus haut + plus bas + plus bas) / 3
SEC: EMA de période n1 du PA
CI: (AP - SEC) / (0,015 * EMA de n1 périodes de valeur absolue de (AP - SEC))
TCI: EMA de n2 périodes de CI, également appelée WaveTrend Line 1 (WT1)
WT2: SMA à 4 périodes de WT1
Une position longue est ouverte lorsque WT1 passe au-dessus de WT2 (croix d'or) et est fermée lorsque WT1 passe au-dessous de WT2 (croix de mort).
En outre, un filtre EMA à longue portée est mis en place pour éviter de faux signaux, de sorte que les transactions longues ne sont effectuées que lorsque le prix est supérieur à la EMA et les transactions courtes inférieures à la EMA.
Suivez automatiquement les tendances en utilisant WaveTrend sans jugement manuel
Les pertes de stop loss secondaires limitent efficacement les pertes de transaction unique
Des niveaux multiples de prise de profit maximisent la capture de profit
Le filtre EMA améliore le taux de victoire en évitant les faux signaux
Ne détecte pas l'inversion de tendance, peut entraîner des pertes
Un mauvais réglage des paramètres conduit à une survente
Différents ensembles de paramètres peuvent être testés pour optimisation
Considérer des indicateurs supplémentaires pour la détection de l'inversion
Cette stratégie intègre intégralement le suivi des tendances, le contrôle des risques et la maximisation des bénéfices grâce à la détection automatique des tendances de WaveTrend, le filtre EMA pour améliorer l'efficacité et la gestion stop loss / take profit pour équilibrer le trading des tendances et le contrôle des risques.
/*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)