この戦略は,ハル移動平均指数に基づいており,異なるタイムフレームでハルMAを計算し,トレンド変化を特定するためにタイムフレーム間でハルMAのトレンドを比較する.短い期間のハルMAがより長い期間のハルMAを超えると購入信号を生成し,短いHullMAがより長い期間のハルMAを下回ると販売信号を生成する.
入力パラメータ:Hull MA 期間 期間,HMA2 タイムフレーム Resolution2,HMA3 タイムフレーム Resolution3
HMA の Hull MA 値 を計算する
Hull MA 値 HMA2 を Resolution2 時間枠で計算する
Hull MA の値 HMA3 を Resolution3 時間枠で計算する
HMA,HMA2,HMA3 の大きさ関係を比較する
HMA>HMA2>HMA3で購入信号を生成する
HMA
図の左上にある異なるタイムフレームでHull MA値とシグナルを表示する
上向きと下向きを区別するために色を使う
複数のタイムフレームを使用することで 偽の脱出をフィルタリングし 罠を回避できます
異なる期間と変動に適応できる,カスタマイズ可能なタイムフレームパラメータ.
リアルタイムの信号表示,直感的な操作
Hull MA の動向は,現在の動向を決定するのに役立ちます.
パラメータの設定が正しくない場合 取引が過剰になる可能性があります
Hull MAは遅延効果があり,トレンドターニングポイントを見逃す可能性があります.
牛とクマの間の 偽信号を生む可能性があります
脱出戦略は 偽の脱出に 陥る傾向があります
実際の利益に影響を与える取引手数料は考慮されません.
パラメータを最適化し,フィルタリングのための他の指標を組み合わせ,より広範なストップロスを許可することでリスクは軽減できます.
Hull MA 期間を最適化し,異なる期間と変動に適応できるようにする.
音量指示器を追加して 誤ったブレイクを避ける
トレンド強さを判断するために振動器を追加します.
購入/販売のタイミングを計算する機械学習モデルを組み込む.
市場宣伝を検出するために 感情指標を組み合わせます
ストップ・ロスの戦略を調整して リスク管理を改善する
他の指標信号と購入/売却条件を調整する.
価格チャネルや波ベースの取引戦略を追加します
この戦略は,複数のタイムフレームのハル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)