Стратегия гироскопических полос, основанная на нескольких временных рамках и средней амплитуде

Автор:Чао Чжан, Дата: 2023-11-24 17:29:39
Тэги:

img

Обзор

Эта стратегия называется Стратегия гироскопических полос на основе многочасовых рамок и средней амплитуды.

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

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

В частности, формула положения частиц, определенная в стратегии:

pos:=if pos<close  
     nz(pos[1])+grav+traj
else
     nz(pos[1])-(grav)+traj 

Вот так.gravпредставляет собой гравитационный термин, который делает частицу близкой к цене;trajпредставляет собой инерционный термин, который поддерживает тенденцию движения частицы.

Затем мы рассчитываем среднее отклонениеavgdistмежду ценой и частицей, и использовать его для построения верхней и нижней полос:

bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)  

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

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

По сравнению с традиционными стратегиями скользящей средней, эта стратегия имеет следующие преимущества:

  1. Использование траекторий частиц для лучшего моделирования колебаний цен;
  2. Верхние и нижние диапазоны могут адаптироваться на основе средней исторической амплитуды, что способствует фиксации прорывов;
  3. Дизайн с несколькими временными рамками может переключаться между высокими и низкими временными рамками, чтобы получить больше торговых возможностей.

Риски

Эта стратегия также сопряжена с некоторыми рисками:

  1. Неправильное настройка параметров движения частиц может вызвать ложные сигналы или сигналы о пропуске;
  2. При переключении между несколькими временными рамками могут возникать конфликты сигналов;
  3. Сигналы прорыва верхней и нижней полос могут увеличить риск остановки потерь.

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

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

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

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

Заключение

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


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//2 revert
strategy("Jomy's Gyroscopic Bands",precision=8,commission_value=.03,overlay=true,initial_capital =10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,  pyramiding=0)//,calc_on_order_fills= true, calc_on_every_tick=false) 
leverage=input(1,"leverage")
a=0
a:= if volume > -1
    nz(a[1])+1
else
    nz(a)
    
vara=input(4.0,"variable a (10 to the power of __ ",step=.5)
vara:=pow(10,vara)
varb=input(12,"variable b")
pos=0.0
pos:=if a<=5
    close
else
    nz(pos[1])
grav=1/sqrt((close*close))*vara
traj=0.0
traj:=(nz(close[1])-nz(close[2])+nz(traj[1])*varb)/(varb+1)
pos:=if pos<close
    nz(pos[1])+grav+traj
else
    nz(pos[1])-(grav)+traj

plot(pos,color=color.white)
plot(close)

avgdist=abs(close-pos)
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)

plbbh=plot(bbh,color=color.red)
plbbl=plot(bbl,color=color.red)

long = close>pos
short = close<pos

fill(plbbh,plbbl,color=long?color.lime:color.red)
//bgcolor(close>bbh?color.lime:close<bbl?color.red:na,transp=90)

strategy.entry("Long1",strategy.long,when=long,qty=(strategy.equity*leverage/open)) 
strategy.close("Long1",when=not long)
strategy.entry("Short1",strategy.short,when=short,qty=(strategy.equity*leverage/open)) 
strategy.close("Short1",when=not short)


//plot(strategy.equity,color=color.lime,linewidth=4)

Больше