Многовременная торговая стратегия IGKEIT, основанная на средней амплитуде траектории


Дата создания: 2023-11-24 17:29:39 Последнее изменение: 2023-11-24 17:29:39
Копировать: 2 Количество просмотров: 586
1
Подписаться
1617
Подписчики

Многовременная торговая стратегия IGKEIT, основанная на средней амплитуде траектории

Обзор

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

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

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

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

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)