크로스 타임프레임 헐 이동 평균 구매 판매 전략

저자:차오장, 날짜: 2023-11-07 16:54:14
태그:

img

전반적인 설명

이 전략은 Hull Moving Average 지표에 기초하여, 다른 시간 프레임에서 Hull MA를 계산하고, 트렌드 변화를 식별하기 위해 시간 프레임에 걸쳐 Hull MA 트렌드를 비교합니다. 짧은 기간 Hull MA가 더 긴 기간 Hull MA를 넘을 때 구매 신호를 생성하고, 짧은 기간 Hull MA가 더 긴 기간 Hull MA를 넘을 때 판매 신호를 생성합니다.

전략 논리

  1. 입력 매개 변수: 허크 MA 기간 기간, HMA2 시간 프레임 Resolution2, HMA3 시간 프레임 Resolution3

  2. 전류 바의 Hull MA 값을 계산 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)

더 많은