Умная количественная стратегия торговли с обратным движением вниз

Автор:Чао Чжан, Дата: 2023-12-08 10:45:49
Тэги:

img

Обзор

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

Принцип стратегии

Во-первых, стратегия использует изменение цены и объема торговли для расчета адаптивного индикатора RSI, оценивая возможные краткосрочные дно рынка. Затем, в сочетании с технологией с несколькими временными рамками, она подтверждает нижние сигналы на более широком временном диапазоне. Сигналы покупки генерируются, когда адаптивная линия RSI пересекает уровень 0.

В частности, адаптивный индикатор RSI рассчитывается следующим образом: сначала вычислить изменение цены для каждой свечи, а затем вычислить объем торговли этой свечи. Умножить два, чтобы получить количественный импульс для этой свечи. Применить расчет RSI на количественный импульс и взять средний период N, чтобы получить окончательный адаптивный индикатор RSI. Этот индикатор может четко идентифицировать дно рынка.

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

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

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

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

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

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

Основной риск этой стратегии заключается в том, что точность определения дна не может быть гарантирована на 100%. В краткосрочной перспективе на рынке могут возникнуть огромные иррациональные колебания. Если дно продлится дальше вниз, возникают большие риски остановки потерь.

Кроме того, могут возникать расхождения между различными временными рамками. Если сигналы из более высоких временных рамок отстают, это может привести к торговым потерям.

Чтобы контролировать риски, эта стратегия использует относительно консервативные механизмы стоп-лосса и получает прибыль по партиям, постепенно оптимизируя доходность.

Руководство по оптимизации

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

  1. Оптимизировать параметры адаптивного РСИ для повышения точности оценки рынка.

  2. Добавить другие индикаторы для подтверждения, чтобы избежать ложных сигналов, таких как сочетание с индикаторами объема и т. д.

  3. Оптимизировать механизм стоп-лосса, чтобы обеспечить более широкий диапазон стоп-лосса при одновременном обеспечении хорошего соотношения риска и прибыли, чтобы получить больше прибыли от тренда.

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

  5. Проверьте эту стратегию на различных криптовалютных продуктах и выберите наиболее эффективные.

Резюме

Эта умная количественная стратегия торговли с обратным дном определяет потенциальные краткосрочные дно с использованием адаптивного индикатора RSI и технологии с несколькими временными рамками.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy(title = "Low Scanner strategy crypto", overlay = false, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
leng=1
p1=close[1]
min=input(10)
len55 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
tf3 = input("60", type=input.resolution)
ti = change( time(tf3) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
min1 =input(1)
len100 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min1 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange
plot(zx,color=col,linewidth=1)
//

tf10 = input("60", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(24, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)


a = security(syminfo.tickerid, tf10, hma(close, length))
b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


//plot(linear_reg, color=color.blue, title="LR", linewidth=3)

buy=crossover(linear_reg, b) 
sell=crossunder(linear_reg, b) 
//
l = crossover(zx,0) or buy
        
if l 
    strategy.entry("buy", strategy.long)

per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=10, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=1, minval=0.01)
tp2=input(title=" Take profit2", defval=2, minval=0.01)
tp3=input(title=" Take profit3", defval=3, minval=0.01)
tp4=input(title=" Take profit4", defval=5, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)


Больше