クロスタイムフレーム ハルフ 移動平均 売買戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月7日 16:54:14
タグ:

img

概要

この戦略は,ハル移動平均指数に基づいており,異なるタイムフレームでハルMAを計算し,トレンド変化を特定するためにタイムフレーム間でハルMAのトレンドを比較する.短い期間のハルMAがより長い期間のハルMAを超えると購入信号を生成し,短いHullMAがより長い期間のハルMAを下回ると販売信号を生成する.

戦略の論理

  1. 入力パラメータ:Hull MA 期間 期間,HMA2 タイムフレーム Resolution2,HMA3 タイムフレーム Resolution3

  2. HMA の Hull MA 値 を計算する

  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. 価格チャネルや波ベースの取引戦略を追加します

結論

この戦略は,複数のタイムフレームのハルMAを使用して,各タイムフレームの移動平均傾斜を比較してトレンド方向を決定し,トレンド逆転時にシグナルを生成する.マルチタイムフレームのハル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)

もっと