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

作者: リン・ハーンチャオチャン, 日付: 2024-01-31 11:29:45
タグ:

img

概要

これは,ダブル移動平均のクロスオーバーに基づいた取引戦略である.異なる長さの移動平均が交差するときに,購入・販売信号を生成する.特に,速いMAが遅いMAを越えたとき,長くなって,速いMAが遅いMAを下回るときに短くなります.

戦略の論理

この戦略の核心論理は,二つの移動平均値間のクロスオーバー原理にある.移動平均値は,指定された時間間の算術平均価格である.それは市場のノイズをフィルターし,より明確な価格傾向を明らかにするのに役立ちます.

この戦略では,短期MMAは短期的傾向を捉え,長期MMAは長期的傾向を捉える.短期MMAは最新の価格変動に反応する際により敏感であるため,長期MMAを横断することは,今後トレンドの逆転を意味する.

具体的には,この戦略は,ユーザーによって定義されたlong_periodとshort_periodでta.smaを使用してMAを計算する.その後,ta.crossoverとta.crossunderを使用して,2つのMA間のゴールデンクロスオーバーとデスクロスオーバーを検出する.短いMAが長いMAを超えると,ロングに行く.短いMAが下を通ると,ショートに行く.

利点

この戦略の主な利点は以下の通りである.

  1. シンプルな論理で 簡単です
  2. 様々な市場に対応できる 調整可能なパラメータ
  3. MAクロスオーバーはノイズをフィルタリングして 傾向の逆転を捕捉します
  4. 価格転換点を把握する高度な感度

リスク

リスクもいくつかあります

  1. M.A. の間隔が小さすぎると 誤った信号が出ます
  2. 誤ったM.A.周期で 重要な傾向を見逃します
  3. 逆転は必ずしも 傾向の変化を意味するものではありません
  4. パラメータはオーバーフィットしないように調整する必要があります.

リスクを軽減するために,パラメータを調整したり,ストップ・ロストとテイク・プロフィートを組み込んだり,他の技術指標を追加したりできます.

最適化

さらに最適化できる余地があります.

  1. 適応性のある MA 期間を最適化する.
  2. 音量フィルターを追加して 誤ったブレイクを避ける
  3. MACD,KDJなどの他の指標も含まれます
  4. ストップ・ロスト/テイク・プロフィートを制限損失に追加します.
  5. 拡張性を向上させるためのコード構造を改良する.

結論

結論として,これは,論理とパラメータのシンプルさにより,市場逆転を効果的に把握できるのに,アルゴリズム取引のための理想的なスタート戦略です. 同時に,さまざまな取引ニーズに合わせて最適化する大きな可能性があります.


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

//@version=5
strategy("Cross 2 Moving Average Strategy", shorttitle="2MA Cross", overlay=true)

// User-defined input for moving averages
long_period = input(20, title="Long Period")
short_period = input(5, title="Short Period")
type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"])

// Calculating moving averages
long_ma = ta.sma(close, long_period)
short_ma = ta.sma(close, short_period)

// Plot moving averages
plot(long_ma, title="Long Moving Average", color=color.red)
plot(short_ma, title="Short Moving Average", color=color.green)

// Strategy logic for crossing of moving averages
longCondition = ta.crossover(short_ma, long_ma)
shortCondition = ta.crossunder(short_ma, long_ma)

// Entry orders
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Optional: Add stop loss and take profit
stop_loss_perc = input(1, title="Stop Loss (%)") / 100
take_profit_perc = input(2, title="Take Profit (%)") / 100

strategy.exit("Exit Long", from_entry="Long", stop=close*(1-stop_loss_perc), limit=close*(1+take_profit_perc))
strategy.exit("Exit Short", from_entry="Short", stop=close*(1+stop_loss_perc), limit=close*(1-take_profit_perc))


もっと