Стратегия торговли на основе скользящей средней Халла с перекрестной шкалой времени


Дата создания: 2023-11-07 16:54:14 Последнее изменение: 2023-11-07 16:54:14
Копировать: 0 Количество просмотров: 697
1
Подписаться
1617
Подписчики

Стратегия торговли на основе скользящей средней Халла с перекрестной шкалой времени

Обзор

Эта стратегия, основанная на показателях Hull Moving Average, рассчитывает Hull MA на разных временных линиях и сравнивает движение Hull MA на разных временных линиях, чтобы обнаружить изменения в тренде. Создание покупательного сигнала при прохождении длинного периода Hull MA на коротком периоде; создание продающего сигнала при прохождении длинного периода Hull MA на коротком периоде.

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

  1. Входные параметры: Hull MA цикл Period, HMA2 временная ось Resolution2, HMA3 временная ось Resolution3

  2. Вычислить значение Hull MA HMA на текущей линии K

  3. Hull MAHMA2 рассчитывается на временной шкале Resolution2

  4. Hull MAHMA3 рассчитывается на временной шкале Resolution3

  5. Сравнение величин HMA, HMA2 и HMA3

  6. Когда HMA>HMA2>HMA3, генерируется сигнал покупки

  7. Когда HMA

  8. В верхней левой части интерфейса показаны значения Hull MA и сигналы на разных временных линиях

  9. Цветовое разграничение в зависимости от состояния

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

  1. Использование нескольких временных линий позволяет отфильтровывать ложные прорывы и избегать их.

  2. Настраиваемые параметры временной оси для различных периодов.

  3. Сигналы в реальном времени, операционная интуиция.

  4. Визуализация движения Hull MA, формирование оценки текущих тенденций.

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

  1. Неправильная настройка параметров может привести к слишком частым сделкам.

  2. Большой циклический Hull MA имеет отсталость и может пропустить поворот тренда.

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

  4. Взломная стратегия, которая может быть использована для взлома тюрьмы.

  5. Процедура не учитывает комиссионные, которые могут повлиять на реальную прибыль.

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

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

  1. Оптимизация циклических параметров Hull MA для адаптации к различным циклам и колебаниям.

  2. Повышение показателей транзакций, чтобы избежать ложных прорывов.

  3. Повышение показателей колебаний для определения интенсивности тренда.

  4. Добавление моделей машинного обучения для определения времени покупки и продажи.

  5. В сочетании с показателями эмоций, вы можете найти самые популярные рынки.

  6. Применение стратегии по предотвращению убытков и оптимизация управления рисками.

  7. Настройка условий купли-продажи, комбинация других сигналов.

  8. Повышение стратегии торговли на основе ценовых каналов и диапазонов.

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

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

Исходный код стратегии
/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
strategy("wtfBUYorSELLffs",overlay=true,currency="USD",initial_capital=100000,default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.1)
Period=input(title="Hull MA Period",type=input.integer,defval=6,minval=1)
Resolution2=input(title="HMA2 Resolution", type=input.resolution,defval="60")
Resolution3=input(title="HMA3 Resolution", type=input.resolution,defval="240")
Price=input(title="Source of Price",type=input.source,defval=open)
xOffset       = input(40, title="Panel offset (X-Axis)")
yOffset       = input(0, title="Panel offset (y-Axis)")
lightgray = #D3D3D3FF
pnlTextColor = color.silver
pnlColor = color.black
HMA = hma(Price,Period)
HMA2 = security(syminfo.tickerid, Resolution2, HMA,barmerge.gaps_off,barmerge.lookahead_off)
HMA3 = security(syminfo.tickerid, Resolution3, HMA,barmerge.gaps_off,barmerge.lookahead_off) 
HUP = HMA > HMA[1]
H1UP = security(syminfo.tickerid, Resolution2, HUP,barmerge.gaps_off,barmerge.lookahead_off)
H2UP = security(syminfo.tickerid, Resolution3, HUP,barmerge.gaps_off,barmerge.lookahead_off) 

int barSize = timeframe.isdaily ? timeframe.multiplier*86400000 : 
           timeframe.isseconds? timeframe.multiplier*1000 :
           timeframe.isminutes? timeframe.multiplier*60000 : (time[0]-time[1])
int   lapos_x = timenow + barSize*xOffset
float lapos_y = highest(20) + yOffset*syminfo.mintick * syminfo.pointvalue
f_draw_infopanel(_x, _y, _line, _text)=>
    _rep_text = ""
    for _l = 0 to _line
        _rep_text := _rep_text + "\n"
    _rep_text := _rep_text + _text
    // var label _la = na
    // label.delete(_la)
//     _la := label.new(
//          x=_x, y=_y, 
//          text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price, 
//          color=pnlColor, style=label.style_labelup, textcolor=pnlTextColor, size=size.normal)
// f_draw_infopanel(lapos_x, lapos_y, 8, "╚═══════════════════════╝")
f_draw_infopanel(lapos_x, lapos_y, 6,  "HMA3 on TF " + Resolution3 + "  = " + tostring(HMA3,"#.####") + (H2UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 4,  "HMA2 on TF " + Resolution2 + "  = " +  tostring(HMA2,"#.####") + (H1UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 2,  "HMA1 on TF " + timeframe.period + "  = " + tostring(HMA,"#.####") + (HUP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 0,  "╔═════════ HMA(" + tostring(Period,"#") +") ════════╗")
change_color=HMA>HMA3?color.green:color.red
change_color2=HMA2>HMA3?color.lime:color.yellow
plot1=plot(HMA3,color=change_color2,title="3 Hull MA Line",linewidth=2,transp=75)
plot2=plot(HMA2,color=change_color,title="2 Hull MA Line",linewidth=2,transp=75)
plot3=plot(HMA,color=color.white,title="Hull MA Line",linewidth=2,transp=75)
fill(plot1,plot3,color=change_color,transp=90)
fill(plot2,plot3,color=change_color2,transp=75)
if (H2UP and H1UP and HUP)
    strategy.entry("BUY",strategy.long)
if (not H2UP and not H1UP and not HUP)
    strategy.entry("SELL",strategy.short)