ダブル移動平均トレンドフォロー戦略は,価格のダブル指数移動平均を計算し,高速線と遅い線を形成する.この戦略はトレンドフォロートレードを実装するために2つのラインのクロスオーバーに基づいて価格トレンドを特定する.この戦略はトレンドフォローに基づいた定量的な取引戦略に属している.
この戦略は,まず,高速線とスローラインを含む価格の二重指数関数移動平均を計算する.高速線は4の期間があり,スローラインは8の期間を有する. 取引信号は,2つのラインが交差するときに生成される.高速線がスローラインを越えると,購入信号が生成される.高速線がスローラインを下回ると,販売信号がトリガーされる. さらに,戦略は,追加の取引信号を提供するためにMACD指標も計算する. 異なる赤いMACDバーは販売信号であり,収束する緑色のバーは購入信号である. 双向移動平均とMACD指標のクロスオーバーを組み合わせることで,戦略はトレンドをフォローする取引のための価格トレンドの方向性を組み合わせます.
この戦略は,トランザクションコストを回避するために,まず価格傾向に沿って取引する.次に,ダブル・ムービング・アベアが価格のノイズをフィルタリングし,価格傾向をスムーズに把握する.また,ムービング・アベアとMACDの柔軟なパラメータ最適化により,戦略は異なる製品と環境に適応できる.最後に,シンプルで明確な論理により,この戦略は理解し,実装しやすく,定量的な取引アルゴリズム設計に適しています.
この戦略はパラメータ最適化に大きく依存している.パラメータの設定が不適切である場合,多くの誤った信号を生む可能性がある.さらに,二重移動平均値の遅延性により,ターニングポイントが見逃される可能性があります.トレンドをフォローする戦略は,上向きのトレンドを追いかけて下向きのトレンドを殺す傾向があるため,特定のリスクが伴う.さらに,取引製品の流動性および取引コストも戦略の収益性に影響します.リスクを軽減するために,パラメータを最適化し,追加のフィルターを追加し,ポジションサイズを制御することができます.
戦略の次の側面は改善可能である.
最適な組み合わせを見つけるために 双方の移動平均値の周期を最適化します
RSIやKDのような他の指標を追加して信号をフィルタリングして質を向上させます
ストップ・ロスの戦略を導入し,トレンド逆転時に取引を終了します.
リスク管理のために,市場の状況に基づいてポジションのサイズを動的に調整します.
異なる取引製品のためのパラメータを最適化します.
機械学習のような 先進的な戦略を組み込み パフォーマンスを向上させます
簡単に言うと,これはシンプルな二重移動平均トレンドフォロー戦略である.戦略論理はシンプルで実行が容易である.柔軟なパラメータチューニングにより,導入量的な取引戦略として適している.しかし,トレンドを追いかけるリスクと信号遅延は,安定性とリスク管理を改善するためにさらなる強化によって対処する必要があります.全体的に,この戦略は初心者にとって素晴らしい学習機会を提供し,高度な戦略の基礎を確立します.
/*backtest start: 2023-10-14 00:00:00 end: 2023-11-13 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 12/11/2017 // The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by // William Blau, except the SMI includes a signal line. The SMI uses double moving averages // of price minus previous price over 2 time frames. The signal line, which is an EMA of the // SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine // tune these signals. The user may change the input (close), method (EMA), period lengths // and guide values. // You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect... // // WARNING: // - For purpose educate only //////////////////////////////////////////////////////////// strategy(title="SMI Ergodic Oscillator") fastPeriod = input(4, minval=1) slowPeriod = input(8, minval=1) SmthLen = input(3, minval=1) TopBand = input(0.5, step=0.1) LowBand = input(-0.5, step=0.1) reverse = input(false, title="Trade reverse") // hline(0, color=gray, linestyle=dashed) // hline(TopBand, color=red, linestyle=line) // hline(LowBand, color=green, linestyle=line) xPrice = close xPrice1 = xPrice - xPrice[1] xPrice2 = abs(xPrice - xPrice[1]) xSMA_R = ema(ema(xPrice1,fastPeriod),slowPeriod) xSMA_aR = ema(ema(xPrice2, fastPeriod),slowPeriod) xSMI = xSMA_R / xSMA_aR xEMA_SMI = ema(xSMI, SmthLen) pos = iff(xEMA_SMI < xSMI, -1, iff(xEMA_SMI > xSMI, 1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(xSMI, color=green, title="Ergotic SMI") plot(xEMA_SMI, color=red, title="SigLin")