В процессе загрузки ресурсов... загрузка...

Кроссойм Хулл Движущаяся средняя стратегия покупки и продажи

Автор:Чао Чжан, Дата: 2023-11-07 16:54:14
Тэги:

img

Обзор

Эта стратегия основана на индикаторе Hull Moving Average, рассчитывая Hull MA на разные временные рамки и сравнивая тенденции Hull MA в разные временные рамки для выявления изменений тренда.

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

  1. Входные параметры: период Hull MA Период, временная рамка HMA2 Резолюция2, временная рамка HMA3 Резолюция3

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

  3. Вычислить значение Hull MA HMA2 на временной шкале Resolution2

  4. Вычислить значение Hull MA HMA3 на временной шкале 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 более эффективны в фильтрации ложных прорывов, чем одиночные 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)

Больше