Улучшенная стратегия отслеживания тенденции волн

Автор:Чао Чжан, Дата: 2024-01-31 15:35:41
Тэги:

img

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

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

  1. Расчет средней цены ap = (высокая + низкая + близкая) / 3

  2. Вычислить EMA n-периода ap для получения esa

  3. Вычислить абсолютную разницу между ap и esa на n периодов для получения d

  4. Вычислить линию тренда волны: ci = (ap - esa) /(0.015*d)

  5. Вычислить n2-периодную EMA ci для получения окончательной линии тренда волны tci, т.е. wt1

  6. Вычислить 4-периодическую SMA wt1 для получения wt2

  7. Площадка с перекупленными/перепроданными линиями уровня obLevel1/2 и osLevel1/2

  8. Сгенерировать сигнал покупки, когда wt1 пересекает obLevel2; генерировать сигнал продажи, когда wt1 пересекает osLevel2

  9. Добавить скользящий средний emaFilter и объем фильтра volumeFilter как фильтры для избежания ложных сигналов

  10. Установленный прибыль/остановка убытков после входа в позиции выхода

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

  1. Линия волнового тренда хорошо справляется с переходами тренда/контртенда

  2. Улучшенная надежность благодаря двойным фильтрам скользящей средней и объема

  3. Некоторые параметры позволяют избежать ограничений одного показателя

  4. Приобретение прибыли/остановка убытков в прибыли и контроль риска

Риски и ограничения:

  1. Выбор параметров может привести к плохой производительности или переустановке

  2. Нет окончательных рекомендаций по оптимальным параметрам

  3. Игнорирует более широкие рыночные условия

  4. Риск использования пилы на рынках с ограниченным диапазоном/с пересекающимися рынками

  5. Отсутствие правил выхода за исключением получения прибыли/остановки убытков

Возможности повышения квалификации:

  1. Параметры испытаний в разных периодах времени/активах для поиска оптимальных значений

  2. Включить показатели волатильности для избежания режимов низкой волатильности

  3. Добавьте такие индикаторы, как RSI, чтобы улучшить точность сигнала

  4. Построить модель машинного обучения для поиска оптимальных индивидуальных параметров

  5. Улучшить выходы с помощью остановок или выходов на основе событий волатильности

Заключение:

Это следующая стратегия, включающая в себя индикатор Wave Trend с дополнительными фильтрами. Он использует способность линии Wave Trend определять переходы тренда, использует фильтры скользящей средней и объема, чтобы избежать ложных сигналов, и направлен на захват большинства средне- и долгосрочных тенденций.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bush Strategy test", shorttitle="Nique Audi", overlay=false)

// Paramètres
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-65, title="Over Sold Level 1")
osLevel2 = input(-60, title="Over Sold Level 2")
takeProfitPercentage = input(1, title="Take Profit (%)")
stopLossPercentage = input(0.50, title="Stop Loss (%)")

// Calculs
ap = hlc3 
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

// Tracé des lignes
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)

plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)

// Tracé de la différence entre wt1 et wt2 en bleu
hline(0, "Zero Line", color=color.gray)

// Conditions d'entrée long et court
longCondition = ta.crossover(wt1, obLevel2)
shortCondition = ta.crossunder(wt1, osLevel2)

// Tracé des signaux d'achat et de vente
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Conditions d'entrée et de sortie
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Niveaux de prise de profit pour les positions longues et courtes
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentage / 100)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentage / 100)

// Vérification si les niveaux de prise de profit sont atteints
longTakeProfitReached = strategy.position_size > 0 and high >= longTakeProfitLevel
shortTakeProfitReached = strategy.position_size < 0 and low <= shortTakeProfitLevel

// Tracé des formes de prise de profit
plotshape(series=longTakeProfitReached, style=shape.xcross, location=location.belowbar, color=color.blue, size=size.small, title="Take Profit Long")
plotshape(series=shortTakeProfitReached, style=shape.xcross, location=location.abovebar, color=color.blue, size=size.small, title="Take Profit Short")

// Niveaux de stop loss pour les positions longues et courtes
longStopLossLevel = strategy.position_avg_price * (1 - stopLossPercentage / 100)
shortStopLossLevel = strategy.position_avg_price * (1 + stopLossPercentage / 100)

// Vérification si les niveaux de stop loss sont atteints
longStopLossReached = strategy.position_size > 0 and low <= longStopLossLevel
shortStopLossReached = strategy.position_size < 0 and high >= shortStopLossLevel

// Tracé des formes de stop loss
plotshape(series=longStopLossReached, style=shape.xcross, location=location.belowbar, color=color.red, size=size.small, title="Stop Loss Long")
plotshape(series=shortStopLossReached, style=shape.xcross, location=location.abovebar, color=color.red, size=size.small, title="Stop Loss Short")

// Fermeture des positions en cas de prise de profit ou de stop loss
strategy.close("Long", when=longTakeProfitReached or longStopLossReached)
strategy.close("Short", when=shortTakeProfitReached or shortStopLossReached)




Больше