HULL SMA と EMA のクロスオーバーに基づいたトレンド戦略

作者: リン・ハーンチャオチャン,日付: 2023年10月30日 12:32:38
タグ:

img

概要

この戦略は,市場傾向の方向性を決定するために,HULLスムーズ移動平均線と指数的な移動平均線のクロスオーバーを計算することによって,購入および売却信号を生成する.これは中期トレンドフォロー戦略のカテゴリーに属します.

戦略の論理

  1. 5期間のHULL スムーズムービング・平均値 (HULL SMA) を計算する.HULL SMAは,重度の移動平均値と期間の平方根を使用して価格変化により速く反応する.

  2. 5 期間の指数関数移動平均 (EMA) を計算する. EMA は最近の価格により重みを付け,傾向を追跡する際に SMA より敏感である.

  3. HULL SMA と EMA のクロスオーバーをベースに買い売り信号を生成する.

  • HULL SMA が EMA を越えると,短期トレンドが長期トレンドを上回るようになり,上昇傾向を示唆する買い信号が生成されます.

  • HULL SMAが EMAを下回ると,短期の傾向が下向きであることを示すセールシグナルが生成され,下向きの価格動きを示唆する.

  1. HULL SMA を高速線と EMA をスローラインとして使用し,クロスオーバーに基づいて短期および中期トレンドの変化を決定し,取引信号を生成します.

利点分析

  1. HULL SMAは価格変動に敏感で,傾向の変化を早期に検出できる.

  2. EMAは市場騒音を緩和し 長期的な傾向を追跡します

  3. クロスオーバー信号は トレンドターニングポイントを タイミングで捉えます

  4. パラメータは,異なる取引時間枠に調整できます.

  5. 上下トレンドを柔軟に捉える

リスク分析

  1. 範囲限定市場では 誤った信号が増える可能性があります

  2. トレンド強さを判定できない場合 弱気トレンドで繰り返し損失を起こす可能性があります

  3. 平均の間隔間の価格変動は見逃される可能性があります.

  4. パラメーターの設定が不適切で信号品質に影響します.

  5. 高い取引頻度はコストとリスクを増加させます

シグナルフィルタリング,トレンド強さの評価,パラメータ最適化,リスク管理などによって改善が可能です.

オプティマイゼーションの方向性

  1. MACDやRSIのような指標を 信号確認に追加します

  2. ADXのようなトレンド強度指標を組み込むことで 弱いトレンドの取引を避けます

  3. 最良の組み合わせのために移動平均パラメータを最適化します

  4. ストップロスを実行して 単一の取引損失を制御する.

  5. 取引の頻度とコストを管理する.

  6. 複数の時間枠の分析を組み込み,クロスサイクル傾向を特定する.

  7. 自動パラメータ最適化プログラムを開発する

概要

この戦略は,高速HULL SMAと遅いEMAのクロスオーバーに基づいてトレンドを判断する.これは典型的な移動平均クロスオーバーシステムである.従来の移動平均と比較して,より反応性の高いHULL SMAは,傾向の変化を早期に検出する.しかし,パラメータと補充指標は,誤った信号を減らすために最適化されるべきである.適切なリスクとマネー管理により,この戦略は効率的な中期トレンドフォローシステムである.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("HULL EMA Crossover", overlay = true, process_orders_on_close = true)

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © spiritedPerson95700

inSession = true


HULL_INP = input.int(5, "Hull EMA Value")
EMA_INP = input(5, "EMA Value")

/// Indicator
HULL_EMA = ta.hma(close, HULL_INP)
EMA = ta.ema(close, EMA_INP)

prevSignal = ''
if (prevSignal == '')  
    prevSignal := HULL_EMA > EMA ? 'buy' : 'sell'

/// buy and sell signal
buy = ta.crossover(HULL_EMA, EMA)
short = ta.crossover(EMA, HULL_EMA)

sell = short
cover = buy

if inSession
    if buy 
        prevSignal := 'na'
        strategy.entry("long", direction = strategy.long, comment = "Buy")

    if sell
        prevSignal := 'na'
        strategy.close("long", comment = "Sell")

    if short
        strategy.entry("short", direction = strategy.short, comment = "Short")

    if cover
        strategy.close("short", comment = "Cover")


plot(HULL_EMA, color = color.green)
plot(EMA, color = color.blue)

// if ( hour(time) == 15 and minute(time) > 25  )  
//     strategy.close("long", comment="EOD")
//     strategy.close("short", comment="EOD")
//     buy := false
//     sell := false
//     prevSignal := ''


もっと