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

作者: リン・ハーンチャオチャン, 日付: 2023-12-01 16:56:43
タグ:

img

概要

ダブル・ムービング・アベア・クロスオーバー・リバース戦略は,トレンドを追跡する典型的な定量的な取引戦略である.この戦略は,二重移動平均指標の9日線と14日線からのクロスオーバー信号を利用して,買い売り信号を構築する.9日線が14日線を下から突破して黄金十字を形成すると購入し,9日線が上から14日線を突破して死十字を形成すると販売する.偽信号をフィルタリングするために,戦略は50日線指標も導入し,価格が突破するかどうかを判断する.

戦略原則

この戦略は,主に双動平均指標からの黄金十字と死亡十字信号に基づいて取引する.双動平均値では,9日線は短期トレンド,14日線は中期トレンドを表し,そのクロスオーバーは市場のトレンドの転換を判断するための効果的な技術指標である.短期トレンドラインが中期トレンドラインを下から破って黄金十字を形成すると,短期トレンドラインが強くなっていることを示す.上から破って死亡クロスを形成すると,短期トレンドラインが弱くなっていることを示す.

また,戦略は誤った信号をフィルタリングするために50日線も導入している.価格は50日線を超える場合にのみ購入を発生させ,価格は50日線以下である場合にのみ売却を発生させる.50日線は中長期トレンドを表す.中長期トレンドが一致する場合にのみ,短期取引が行われる.

基本的な論理は次のとおりです

// Buy condition: 9-day line crosses above 14-day line and close price is above 50-day line 
buyCondition = ta.crossover(sma9, sma14) and close > sma50 

// Sell condition: 9-day line crosses below 14-day line and close price is below 50-day line
sellCondition = ta.crossunder(sma9, sma14) and close < sma50

利点分析

二重移動平均戦略の利点は明らかです.

  1. 分かりやすく 実行しやすいし 初心者向けに適しています
  2. トレンドに合わせて 市場に閉じ込めてはいけません
  3. 中期から長期間の指標を使って 誤解を招く信号をフィルターし 短期的な市場の騒音に騙されないようにします
  4. 市場動向を追跡し 長期間効率的に利益を得ることができます

リスク分析

二重移動平均戦略には,いくつかのリスクもあります.

  1. 市場崩壊などの極端な市場状況では,デスクロースが形成される前に大きな引き下げが起こり得ます.デスクロースが停止するまで戦略は大きな損失ポジションを保持します.
  2. バランス市場では,金十字と死十字が交替して,繰り返しポジションを開くと停止します.これは取引コストを増加させます.

リスクに対処するために,以下のような最適化を行うことができます.

  1. 他の指標を導入して 市場が崩れ落ちる状況で 損失を素早く削減しましょう
  2. より多くの開口フィルターを追加して,異なる市場での交差を回避します.

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

二重移動平均戦略は,いくつかの側面で最適化することができます:

  1. パラメータ最適化 移動平均周期を調整する 指標パラメータを最適化する
  2. 市場情勢を判断し,誤った信号を避けるためにより多くの指標を組み込む.
  3. ストップ・ロスのメカニズムを導入する. 移動ストップ・ロース,ペネトレーションストップ・ロース,その他のストップ・メソッドを使用する.
  4. 他の取引戦略,例えばボリューム・ボラティリティ・戦略と組み合わせる.
  5. 運用効率を向上させるのに 適切なレバレッジを使用する.

概要

ダブル移動平均戦略は,一般的に効率的な利益を生む戦略である.傾向を継続的にフォローすることで利益を得ることができる.同時に,特定のリスクがあり,さらなる改善が必要である.パラメータ,ストップ方法,戦略組み合わせを最適化することによって,この戦略の効果はさらに強化することができる.


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

//@version=5
strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true)

// Define the length for the SMAs
sma9Length = input(9, title="SMA 9 Length")
sma14Length = input(14, title="SMA 14 Length")
sma50Length = input(50, title="SMA 50 Length")  // Add input for SMA 50

// Calculate SMAs
sma9 = ta.sma(close, sma9Length)
sma14 = ta.sma(close, sma14Length)
sma50 = ta.sma(close, sma50Length)  // Calculate SMA 50

// Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50
buyCondition = ta.crossover(sma9, sma14) and close > sma50

// Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50
sellCondition = ta.crossunder(sma9, sma14) and close < sma50

// Track the time since position was opened
var float timeElapsed = na
if (buyCondition)
    timeElapsed := 0
else
    timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1

// Close the buy position after 5 minutes
if (timeElapsed >= 5)
    strategy.close("Buy")

// Track the time since position was opened
var float timeElapsedSell = na
if (sellCondition)
    timeElapsedSell := 0
else
    timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1

// Close the sell position after 5 minutes
if (timeElapsedSell >= 5)
    strategy.close("Sell")

// Plot the SMAs on the chart
plot(sma9, title="SMA 9", color=color.blue)
plot(sma14, title="SMA 14", color=color.red)
plot(sma50, title="SMA 50", color=color.green)  // Plot SMA 50 on the chart

// Strategy entry and exit conditions using if statements
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)


もっと