Волна мульти-прибыли и остановки потерьТенденция после стратегии

Автор:Чао Чжан, Дата: 2023-12-01 18:09:12
Тэги:

img

Обзор

Эта стратегия основана на оригинальной стратегии WaveTrend от LazyBear, с дополнительными функциями, такими как вторичная стоп-лосс, несколько уровней прибыли и высокий временной EMA-фильтр.

Логика стратегии

Основным показателем этой стратегии является WaveTrend, состоящий из трех компонентов:

  1. AP: Средняя цена = (самый высокий + самый низкий + закрытие) / 3

  2. ЕНС: EMA AP за n периодов

  3. CI: (AP - ESA) / (0,015 * N1-period EMA абсолютного значения (AP - ESA))

  4. TCI: n2-периодная EMA CI, также называемая WaveTrend Line 1 (WT1)

  5. WT2: 4-периодическая SMA WT1

Долгая позиция открывается, когда WT1 пересекает WT2 (золотой крест), и закрывается, когда WT1 пересекает WT2 (смертный крест).

Кроме того, для предотвращения ложных сигналов внедрен фильтр EMA с высокими временными рамками, так что длинные сделки принимаются только тогда, когда цена выше EMA и короткие сделки ниже EMA.

Преимущества

  1. Автоматически следите за тенденциями с помощью WaveTrend без ручного суждения

  2. Вторичная остановка убытков эффективно ограничивает убытки от одной сделки

  3. Многочисленные уровни получения прибыли максимизируют получение прибыли

  4. Фильтр EMA улучшает уровень победы, избегая ложных сигналов.

Риски и улучшения

  1. Не обнаруживает обратный тренд, может вызвать убытки

  2. Плохая настройка параметров приводит к чрезмерной торговле

  3. Различные наборы параметров могут быть проверены для оптимизации

  4. Рассмотреть дополнительные показатели для обнаружения обратного движения

Заключение

Эта стратегия всесторонне включает в себя наблюдение за трендом, контроль рисков и максимизацию прибыли с помощью автоматического обнаружения тренда WaveTrend, фильтра EMA для повышения эффективности и управления стоп-лосом / получением прибыли для сбалансирования торговли трендом и контроля рисков. Это эффективная и стабильная система наблюдения за трендом. Дальнейшая оптимизация параметров и механизмы обратного отклонения могут повысить применимость стратегии.


/*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)



Больше