HMA 日々のクロスオーバー取引戦略

作者: リン・ハーンチャオチャン開催日:2023年9月22日 17:07:15
タグ:

概要

この戦略は,HMAラインと日々のキャンドルスタイククロスに基づいて取引を行い,ストップロストとテイクプロフィートロジックを使用してポジションを管理します.トレンド取引のための異なるタイムフレームインジケーターを組み合わせます.

戦略の論理

主要な信号とルール

  • HMA線: ハル移動平均を計算して中長期の傾向を決定する.

  • 日々の閉店価格: 短期的な価格動きを判断します.

  • 入場信号: HMA は前日の閉店値以上を横切り,前日の価格より高い値で,ロング.リバース=ショート.

  • Stop loss/take profit: ポジションがヒットしたときに閉じる固定レベル.

利点

  • 調整可能な HMA パラメータ

  • より高品質の信号のために多時間枠指標を考慮します.

  • ストップ・ロスト/テイク・プロフィートはリスク管理を容易にする.

  • 明確なエントリールールと位置管理

  • バックテストのパラメータは,異なる市場のために最適化できます.

リスク

  • HMAの遅延は 最適な入力のタイミングを逃すかもしれない.

  • 固定ストップ・ロース/テイク・プロフィットが攻撃的すぎたり保守的すぎたりする可能性があります.

  • トレンド強度フィルターが欠けると,反トレンド取引にリスクがあります.

  • 簡単なルールで 誤った信号が

改善:

  1. HMA パラメータを最適化

  2. 固定の代わりにストップ損失を

  3. トレンドの強さを判断するために,ボリュームまたはモメント指標を追加します.

  4. 信号の確認のためにMACDのような他の指標を組み込む.

最適化

戦略を最適化するための可能性:

  1. HMA パラメータを最適化して理想のコンボにする

  2. 逆トレンドを避けるためにトレンド強度フィルターを追加します.

  3. 固定レベルではなく動的停止を使用します.

  4. 自動パラメータ最適化のための機械学習を組み込む

  5. リアルなパフォーマンスをテストするためにシミュレーション取引を追加します

概要

戦略の論理は明確だが,改善余地がある.トレンドフィルター,ダイナミックストップを追加することで安定性が向上できる.全体として,中長期トレンドを把握するための合理的な枠組みを提供する.


/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by SeaSide420       Enters on crossovers, exits Basket when profit $ = TP
// strategy(title="HMA & D1 crossover", overlay=true, currency="BTC", initial_capital=1, default_qty_type=strategy.percent_of_equity, default_qty_value=1, commission_type=strategy.commission.percent,commission_value=0.25,slippage=1)
SL=input(defval=-0.05,title="StopLoss $",type=input.float,step=0.01, maxval=-0.01)
TP=input(defval=0.05,title="TargetPoint $",type=input.float,step=0.01, minval=0.01)
price=input(title="Source",type=input.source,defval=open)
Period=input(14, minval=1)
hma = wma(2*wma(price, Period/2)-wma(price, Period), round(sqrt(Period)))
s1=security(syminfo.tickerid, timeframe.period, price, barmerge.gaps_off, barmerge.lookahead_off)
s2=security(syminfo.tickerid, "D", price, barmerge.gaps_off, barmerge.lookahead_off)
cp=s2<price?color.lime:color.red
cp1=plot((s2),color=color.black,title="DailyCandle1",linewidth=2,transp=0)
cp2=plot((s2[1]),color=color.black,title="DailyCandle2",linewidth=2,transp=0)
cp3=plot(hma,title="HMA",color=color.black)
fill(cp1,cp2,color=cp,transp=1)
fill(cp1,cp3,color=cp,transp=75)
closeall=strategy.openprofit<SL or strategy.openprofit>TP
if closeall
    strategy.close_all(comment = "Close All")
if (hma>hma[1] and s1>s2 and s2[1]>s2[2] and s1>s2[1])
    strategy.order("Buy", strategy.long)
if (hma<hma[1] and s1<s2 and s2[1]<s2[2] and s1<s2[1])
    strategy.order("Sell", strategy.short)

もっと