Variété de prise de bénéfices et arrêt de perte

Auteur:ChaoZhang est là., Date: 12-01-2023 à 18h09
Les étiquettes:

img

Résumé

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.

La logique de la stratégie

L'indicateur de base de cette stratégie est la tendance à la vague, composée de trois composantes:

  1. AP: Prix moyen = (plus haut + plus bas + plus bas) / 3

  2. SEC: EMA de période n1 du PA

  3. CI: (AP - SEC) / (0,015 * EMA de n1 périodes de valeur absolue de (AP - SEC))

  4. TCI: EMA de n2 périodes de CI, également appelée WaveTrend Line 1 (WT1)

  5. 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.

Les avantages

  1. Suivez automatiquement les tendances en utilisant WaveTrend sans jugement manuel

  2. Les pertes de stop loss secondaires limitent efficacement les pertes de transaction unique

  3. Des niveaux multiples de prise de profit maximisent la capture de profit

  4. Le filtre EMA améliore le taux de victoire en évitant les faux signaux

Risques et améliorations

  1. Ne détecte pas l'inversion de tendance, peut entraîner des pertes

  2. Un mauvais réglage des paramètres conduit à une survente

  3. Différents ensembles de paramètres peuvent être testés pour optimisation

  4. Considérer des indicateurs supplémentaires pour la détection de l'inversion

Conclusion

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)



Plus de