この戦略は,市場傾向の方向性を決定するために,HULLスムーズ移動平均線と指数的な移動平均線のクロスオーバーを計算することによって,購入および売却信号を生成する.これは中期トレンドフォロー戦略のカテゴリーに属します.
5期間のHULL スムーズムービング・平均値 (HULL SMA) を計算する.HULL SMAは,重度の移動平均値と期間の平方根を使用して価格変化により速く反応する.
5 期間の指数関数移動平均 (EMA) を計算する. EMA は最近の価格により重みを付け,傾向を追跡する際に SMA より敏感である.
HULL SMA と EMA のクロスオーバーをベースに買い売り信号を生成する.
HULL SMA が EMA を越えると,短期トレンドが長期トレンドを上回るようになり,上昇傾向を示唆する買い信号が生成されます.
HULL SMAが EMAを下回ると,短期の傾向が下向きであることを示すセールシグナルが生成され,下向きの価格動きを示唆する.
HULL SMAは価格変動に敏感で,傾向の変化を早期に検出できる.
EMAは市場騒音を緩和し 長期的な傾向を追跡します
クロスオーバー信号は トレンドターニングポイントを タイミングで捉えます
パラメータは,異なる取引時間枠に調整できます.
上下トレンドを柔軟に捉える
範囲限定市場では 誤った信号が増える可能性があります
トレンド強さを判定できない場合 弱気トレンドで繰り返し損失を起こす可能性があります
平均の間隔間の価格変動は見逃される可能性があります.
パラメーターの設定が不適切で信号品質に影響します.
高い取引頻度はコストとリスクを増加させます
シグナルフィルタリング,トレンド強さの評価,パラメータ最適化,リスク管理などによって改善が可能です.
MACDやRSIのような指標を 信号確認に追加します
ADXのようなトレンド強度指標を組み込むことで 弱いトレンドの取引を避けます
最良の組み合わせのために移動平均パラメータを最適化します
ストップロスを実行して 単一の取引損失を制御する.
取引の頻度とコストを管理する.
複数の時間枠の分析を組み込み,クロスサイクル傾向を特定する.
自動パラメータ最適化プログラムを開発する
この戦略は,高速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 := ''