資源の読み込みに... 荷物...

2つの移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2024年5月14日15時37分54秒
タグ:エイマSMADEMATEMA についてWMAVWMA

img

概要

ダブルムービング・平均クロスオーバー戦略は,一般的な定量的な取引戦略である.この戦略は,異なる期間の2つの移動平均を購入・販売信号として使用する.短期移動平均が長期移動平均を超えると購入し,短期移動平均が長期移動平均を下回ると売却する.戦略コードは,単純な移動平均 (SMA),指数的な移動平均 (EMA),二重指数的な移動平均 (DEMA),三重指数的な移動平均 (TEMA),重量化された移動平均 (WMA),およびボリューム重量化された移動平均 (VWMA) などのさまざまな一般的な移動平均をサポートする.また,短期および長期移動平均の期間の柔軟な設定も可能にします.さらに,戦略は,典型的な平均,中間値,高値,低値,閉値,オープン価格などの異なる移動平均を選択する.

戦略原則

この戦略の基本原理は,異なる期間の2つの移動平均値のトレンド特性と遅れを活用して価格傾向を把握することです.一般的に言えば,短期移動平均値は価格変化により敏感で,長期移動平均値は比較的遅れです.価格が上昇傾向にあるとき,短期移動平均値は長期移動平均値の前に上昇し,最終的にその上を横切って,購入信号を形成します.逆に,価格が下向きであるとき,短期移動平均値は長期移動平均値の前に下向きに移動し,最終的にその下を横切って,販売信号を形成します.金十字と死亡十字信号を捕捉することで,この戦略は価格の主な傾向に沿って取引することができます.

戦略 の 利点

  1. シンプルで使いやすい:ダブル・ムービング・平均クロスオーバー戦略は,素朴で理解しやすく,実行しやすい定量的な取引戦略であり,初心者トレーダーが学習し使用するのに適しています.

  2. 広範囲に適用可能:この戦略は,株,先物,フォレックス,暗号通貨など,さまざまな金融市場や取引手段に適用できる.

  3. 柔軟なパラメータ: 戦略コードは,複数の一般的な移動平均値と価格タイプをサポートし,ユーザーが異なる市場状況と取引スタイルに適応するために,ニーズに応じてパラメータを柔軟に設定することができます.

  4. トレンド追跡:異なる期間の2つの移動平均値のクロスオーバー信号を使用することで,この戦略は価格の主なトレンドを効果的に把握し,トレンドを追跡し,反トレンド取引を避けるのに役立ちます.

戦略リスク

  1. 遅延: 移動平均値は本質的にトレンドをたどる指標であり,一定の遅延があり,最良のエントリーと終了タイムを逃す可能性があります.

  2. 範囲限定市場における非効率性:範囲限定市場や横向市場では,価格変動が大きく,移動平均クロスオーバー信号が頻繁に発生し,頻繁な取引につながり,高い取引コストと資本損失を引き起こす可能性があります.

  3. パラメータ最適化における困難: 移動平均期間の選択は戦略のパフォーマンスに重大な影響を与えるが,最適なパラメータは市場の状況によってしばしば変化し,普遍的に適用可能な最適なパラメータの組み合わせを見つけるのが困難である.

戦略の最適化方向

  1. トレンドフィルタを導入する.移動平均のクロスオーバー信号に加えて,トレンドフィルタリングのためにMACDやADXなどの他のトレンドインジケーターを組み込むことができ,トレンドが明確であるときにのみ取引し,レンジ・バインド市場での頻繁な取引を避ける.

  2. 利潤とストップロスの最適化: 戦略に合理的な利潤とストップロスのロジック,例えばトラッキングストップロスと変動性に基づくストップロスを組み込み,単一の取引リスクを制御し,戦略のリスク/報酬比を改善する.

  3. 動的パラメータ最適化: 異なる市場環境では,動的平均期間のようなパラメータを定期的に動的最適化して,戦略が市場の変化に適応し,安定性を向上させる.

  4. 多因子組み合わせ: 双重移動平均のクロスオーバー信号を他の効果的な定量因子 (モメント,値,ボリュームなど) と組み合わせて,より堅牢で効果的な多因子戦略を形成する.

概要

ダブル・ムービング・平均クロスオーバー戦略は,トレンド市場に適した異なる期間の2つの移動平均値のクロスオーバー信号を通じて価格トレンドを捕捉するシンプルでクラシックなトレンドフォロー戦略である.しかし,この戦略にはパラメータ最適化における遅れや困難などの問題もあるため,トレンドフィルタリング,ダイナミックパラメーター最適化,マルチファクター組み合わせなどの最適化および改善のための他の方法との組み合わせを必要とし,戦略の適用性と強度を高める.全体として,ダブル・ムービング・平均値クロスオーバー戦略は定量的な取引における基礎戦略の1つとして機能し,定量的な愛好家によって学習と研究に値する.


/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SustainableInvestment

//@version=5
strategy("Moving average strategy (이동평균선 전략)", overlay=true)

// === INPUTS ===

basisType   = input.string(defval = "EMA", title = "MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA ",options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA"])
shortLen    = input.int(defval = 1, title = "Short MA Period", minval = 1)
longLen    = input.int(defval = 20, title = "Long MA Period", minval = 1)
price       = input.string(defval = "Typical", title = "Price Type : Close, High, Open, Low, Typical, Center ",options=["Close", "High", "Open", "Low", "Typical", "Center"])

// === BASE FUNCTIONS ===
// 가격 종류 설정
priceType(price) =>
    Typical = (high+low+close)/3
    Center  = (high+low) / 2
    price=="High"?high : price=="Low"?low : price=="Open"?open : price=="Typical"?Typical : price=="Center"?Center : close

// 이동평균선 종류 설정
variant(type, src, len) =>
    v1 = ta.sma(src, len)                                                  // Simple
    v2 = ta.ema(src, len)                                                  // Exponential
    v3 = 2 * v2 - ta.ema(v2, len)                                          // Double Exponential
    v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len)         // Triple Exponential
    v5 = ta.wma(src, len)                                                  // Weighted
    v6 = ta.vwma(src, len)                                                 // Volume Weighted
    
    type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : v1

longCondition = ta.crossover(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen))
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

exitCondition = ta.crossunder(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen))
if (exitCondition)
    strategy.close("Long Entry","Long Exit")


関連性

もっと