На основе стратегии отслеживания тренда волатильности


Дата создания: 2024-02-18 10:07:29 Последнее изменение: 2024-02-18 10:07:29
Копировать: 0 Количество просмотров: 538
1
Подписаться
1617
Подписчики

На основе стратегии отслеживания тренда волатильности

Обзор

Эта стратегия использует индикатор WaveTrend для определения ценового тренда и перепродажи, в сочетании с индикатором RSI для фильтрации сигналов, используя метод отслеживания тренда, чтобы совершить обратную операцию на перепродаже.

Стратегический принцип

Эта стратегия использует индикатор WaveTrend для определения направления ценовой тенденции. WaveTrend, основанный на Rainbow, улучшается для определения направления ценовой тенденции путем вычисления разницы между средней линией Heikin-Ashi и абсолютным значением цены.

В частности, формула WaveTrend в стратегии гласит:

esa = ema(hlc3, 10) 
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

Из них esa - рассчитанная средняя линия Хейкина-Аши, d - среднее значение разницы между средней линией Хейкина-Аши и абсолютным значением цены.

RSI используется для определения перекупа и перепродажи. Формула RSI в коде:

rsiup = rma(max(change(close), 0), 14) 
rsidown = rma(-min(change(close), 0), 14) 
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))

Стандартные значения от 0 до 100: выше 70 - это зоны сверхпокупок, ниже 30 - зоны сверхпродаж.

В сочетании с этими двумя показателями, когда RSI ниже 25, WaveTrend ниже 60 является сверхпродажной зоной, делая сигнал; когда RSI выше 75, WaveTrend выше 60 является сверхпокупной зоной, делая сигнал.

Анализ преимуществ

Эта стратегия имеет следующие преимущества:

  1. Использование индикатора WaveTrend позволяет точно и надежно определить направление ценовой тенденции.
  2. Фильтрация RSI помогает избежать ненужных сделок и повышает шансы на победу.
  3. Применение метода отслеживания тенденций позволяет максимально использовать прибыль, связанную с ценовыми тенденциями.
  4. Стратегическая концепция понятна и понятна, параметры гибкие, могут быть адаптированы к различным видам и рынкам.
  5. Стратегии просты в реализации, легко проверяются на практике и полезны для оптимизации.

Анализ рисков

Однако эта стратегия также несет в себе некоторые риски:

  1. WaveTrend и RSI отстают от других индикаторов и могут пропустить обратную точку.
  2. Несмотря на наличие фильтрации, в случае землетрясения может возникнуть ошибочный сигнал.
  3. Стратегии по отслеживанию стоп-убытков еще не усовершенствованы и не могут эффективно контролировать одиночные потери.
  4. Очень важно, чтобы параметры были настроены так, чтобы они соответствовали особенностям разновидности и частоте торгов.

Ответ:

  1. Оптимизация в сочетании с дополнительными критериями оценки повышает точность сигналов.
  2. Присоединяйтесь к стратегии Stop Loss и контролируйте свои убытки.
  3. Поиск оптимального сочетания параметров и адаптация стратегии к рыночным сортам.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих направлениях:

  1. Замена или увеличение показателей суждения для оптимизации точности сигнала. Например, добавление таких показателей суждения, как MACD, KD.

  2. Оптимизация параметров для различных типов торгов. Например, корректировка циклов сглаживания для поиска оптимальной комбинации параметров.

  3. Присоединяйтесь к стратегии отслеживания стоп-убытков, чтобы эффективно контролировать единичные потери. Например, остаточный процентный стоп-убыток, мобильный стоп-убыток и т. Д.

  4. Рассмотрите различные стратегии набора запасов. Например, использование набора Мартингеля вместо первоначального фиксированного набора запасов.

  5. Оптимизация диапазона параметров адаптивности, поиск оптимальных параметров для повышения точности суждения.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's WaveTrender Strategy v1.0", shorttitle = "WaveTrender str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
showarr = input(true, defval = true, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//RSI
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))

//WaveTrend
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
overs = rsi < 25 and wt < -60
overb = rsi > 75 and wt > 60
up1 = (strategy.position_size == 0 or close < strategy.position_avg_price) and overs and bar == -1
dn1 = (strategy.position_size == 0 or close > strategy.position_avg_price) and overb and bar == 1
exit = (strategy.position_size > 0 and overs == false) or (strategy.position_size < 0 and overb == false)

//Arrows
col = exit ? black : up1 or dn1 ? blue : na
needup = up1
needdn = dn1
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if exit
    strategy.close_all()