作者: リン・ハーンチャオチャン
タグ:

img

概要

この戦略は,市場動向のターニングポイントを特定し,株の短期価格変動をキャピタライズするために,移動平均 (MA) の黄金十字と死亡十字を使用する.異なる時間期間の2つのMAを計算します.すなわち,短期間MAと長期間MAです.短期間MAが長期間MAを超えると,購入信号が生成されます.短期間MAが長期間MAを下回ると,販売信号が生成されます.

戦略の論理

この戦略の核心論理は,短期間MAと長期間MAの間の交差関係にある.短期間MAは最近の価格変化をより迅速に反映し,長期間MAは長期的な価格動向を描写するためのノイズ削減能力がより優れている.短期間MAが長期間MAを超えると,価格は最近上昇傾向を開始し,短期的な逆転をシグナル化し,その結果,後続の上昇を捕捉するための購入信号を誘発する可能性がある.逆に,短期間MAが長期間MAを下回る時,最近の下落価格勢力と短期的な逆転の可能性をシグナル化し,売り信号を生成する.

具体的には,この戦略は,MA線を2つ計算するために,閉じる価格でta.sma関数を適用します. maShort (9期) とmaLong (21期). その後,短いMAがより長いMAを上回るか下回るか判断するために,ta.crossoverとta.crossunder関数を用いて,それに応じて購入・販売信号を生成します.利益をロックし,リスクを管理するために,ストップ・ロスト・アンド・テイク・プロフィート・ロジックは最後に実装されます.

利点

  • 価格の方向性と勢いを直感的に描画する
  • 簡単な理解と実行,高周波の短期取引に適しています
  • 異なる取引手段に対応した柔軟なMAパラメータ

単一のMAシステムと比較して,この戦略は,短期間および長期間のMAの両方の価値を合成し,誤った信号が少なく,収益性の可能性が高くなります.一方,MAクロスオーバー信号は,オペレーターが効率的に解釈し,行動するための明確で直接的です.

リスク

  • MAクロスオーバー信号が遅れており,最適な逆転タイミングが欠けている場合
  • 厳格にMAの交差値に従うことは,取引頻度が過剰になる可能性があります.
  • MA 期間設定が悪ければ信号品質に悪影響を及ぼす
  • 個々のストック特性も,MAクロスオーバーシステムの有効性に影響します.

増進 の 機会

  • 短期と長期の MA 期間を最適化
  • 短期的および長期的動向を特定するための他の分析ツールを組み込む
  • 価格ボリューム指標を統合して,本物の逆転信号を検出する
  • 損失を合理的に制限するためにストップ・ロスの方法を使用する

結論


/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Intraday MA Crossover Strategy", overlay=true)

// Define MA lengths
maLengthShort = input.int(9, title="Short MA Length", minval=1)
maLengthLong = input.int(21, title="Long MA Length", minval=1)

// Calculate MAs
maShort = ta.sma(close, maLengthShort)
maLong = ta.sma(close, maLengthLong)

// Plot MAs on the chart
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Generate Buy Signal (Golden Cross: Short MA crosses above Long MA)
buySignal = ta.crossover(maShort, maLong)
strategy.entry("Buy", strategy.long, when=buySignal)

// Generate Sell Signal (Death Cross: Short MA crosses below Long MA)
sellSignal = ta.crossunder(maShort, maLong)
strategy.entry("Sell", strategy.short, when=sellSignal)

// Set stop loss and take profit levels
stopLossPercent = input.float(1, title="Stop Loss %", minval=0.1, maxval=5)
takeProfitPercent = input.float(1, title="Take Profit %", minval=0.1, maxval=5)

strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)


もっと