クロスタイムラインハル移動平均取引戦略


作成日: 2023-11-07 16:54:14 最終変更日: 2023-11-07 16:54:14
コピー: 0 クリック数: 697
1
フォロー
1617
フォロワー

クロスタイムラインハル移動平均取引戦略

概要

この戦略は,ハル移動平均指標に基づいて,異なる時間軸でハルMAを計算し,異なる時間軸のハルMAの動きを比較して,トレンドの変化を発見します. 短い周期のハルMA上で長い周期のハルMAを通過するときに買取シグナルを生成します. 短い周期のハルMAの下に長い周期のハルMAを通過するときに売るシグナルを生成します.

戦略原則

  1. 入力パラメータ:Hull MA周期Period,HMA2の時間軸Resolution2,HMA3の時間軸Resolution3

  2. Hull MAのHMAを現在のK線で計算する

  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. ハルMA周期パラメータを最適化して,異なる周期と波動率に対応する.

  2. 偽の突破を避けるために,取引量指標の判断を増やす.

  3. 動揺の指標を増やして,トレンドの強さを決定する.

  4. 機械学習モデルを導入して 買い物や売却のタイミングを判断する.

  5. 感情指数と組み合わせて,市場のホットスポットを見つけます.

  6. リスク管理の最適化と ストップ・ローズ戦略の調整

  7. 買い物条件をカスタマイズし,他の指標のシグナルを組み合わせる.

  8. 価格チャネルや波段に基づく取引戦略の強化

要約する

この戦略は,Hull MA指標が異なる時間軸上の均線走行を比較した上で,現在のトレンドの方向を判断し,トレンドが転じるときに買入・売却の信号を生成する.単一の平均線と比較して,多時間軸のHull MAは偽突破を効果的にフィルタリングできる.しかし,この戦略には,パラメータ設定,トレンド判断などの問題もある.より多くの指標を統合し,パラメータ設定を最適化し,止損戦略を改善することによって,戦略のProfitabilityを高め,リスクを制御することができる.

ストラテジーソースコード
/*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)