適応型移動平均と加重移動平均のクロスオーバー取引戦略


作成日: 2024-01-23 14:13:55 最終変更日: 2024-01-23 14:13:55
コピー: 0 クリック数: 583
1
フォロー
1617
フォロワー

適応型移動平均と加重移動平均のクロスオーバー取引戦略

概要

この戦略は,自適応移動平均指標 (AIOMA) と重量移動平均指標 (WMA) をベースに取引信号を実現する.これは,AIOMAとWMAの交差によって買入と売却の信号を生成する.

戦略名

AIOMAとWMAの相互適応戦略

戦略原則

戦略は以下の部分から構成されています.

  1. AIOMA指標計算

    • 長さのパラメータを指定し,一連の指数移動平均を計算します.
    • EMAを平らな形で連結し,平らなシーケンスを形成します.
    • 終端のAIOMAは,最後の平滑値のEMAです.
  2. WMA指数計算

    • WMAを計算する長さのパラメータを指定します.
  3. 取引シグナル生成

    • AIOMAをWMAに載せると,購入シグナルが生成されます.
    • AIOMAを下回ると,WMAは売り込み信号を発する.
  4. トランザクションロジック

    • 買って,多頭ポジションに入ります.
    • 売り込みの合図で空頭ポジションに入ります
    • 平仓の信号で,対応方向のポジションを閉じる

戦略的優位性

  1. 2つの異なる種類の移動平均を使用することで,取引シグナルの正確性を向上させる
  2. AIOMAは,複数の指数滑りで偽信号を減らすことができます.
  3. WMAは価格の変化に敏感で,トレンドを早期に捉える主要な指標です.
  4. シンプルな取引ロジック,理解し,実行しやすい

戦略リスク

  1. EMAを何度も平らにする場合,過剰に遅滞する可能性があります.
  2. WMAは短期的な価格変動に弱いため,誤信号を発する.
  3. ストップ・ロジックを考慮していないことにより,大きな損失を招く可能性があります.

適切な最適化パラメータ,ストップポイントの設定,または他の指標のフィルタリングと組み合わせることでリスクを減らすことができます.

戦略最適化の方向性

  1. 異なる長さのパラメータの組み合わせをテストし,最適なパラメータを探します.
  2. 買入/売却のシグナルで同時にストップ・リストをトリガーします.
  3. 市場波動性指標と組み合わせた偽信号のフィルタリング
  4. ポジション管理戦略の追加

要約する

この戦略は,AIOMAとWMAの2つの指標の優位性を統合し,交差によって取引信号を生成する.単一の移動平均と比較して,信号の質を向上させることができる.パラメータ最適化,ストップダスト戦略,波動性フィルターなどのさらなる改良により,安定した信頼性の高い取引システムとなる.

ストラテジーソースコード
/*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"}]
*/

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

//@version=5
strategy("AIOMA-WMA Strategy", overlay=true)

// Parametreler
aioma_length = input(14, "AIOMA Length")
wma_length = input(21, "WMA Length")

// AIOMA hesaplama
length1 = aioma_length
ema1 = ta.ema(close, length1)
length2 = aioma_length
ema2 = ta.ema(ema1, length2)
length3 = aioma_length
ema3 = ta.ema(ema2, length3)
length4 = aioma_length
ema4 = ta.ema(ema3, length4)
aioma = ta.ema(ema4, aioma_length)

// WMA hesaplama
wma = ta.wma(close, wma_length)

// Kesişim kontrolü
cross_up = ta.crossover(wma, aioma)
cross_down = ta.crossunder(wma, aioma)

// İşlem fonksiyonu
enterTrade(dir, price, signalText, color) =>
    if dir
        strategy.entry("Enter", strategy.long)
        label.new(x = bar_index, y = price, text = signalText, color = color, textcolor = color, style = label.style_label_up, size = size.small, tooltip = "Entry Signal")
    else if not dir
        strategy.entry("Exit", strategy.short)
        label.new(x = bar_index, y = price, text = signalText, color = color, textcolor = color, style = label.style_label_down, size = size.small, tooltip = "Exit Signal")

// Long pozisyon girişi
if cross_up
    enterTrade(true, low, "Buy Signal", color.green)

// Short pozisyon girişi
if cross_down
    enterTrade(false, high, "Sell Signal", color.red)

// Pozisyon kapatma
if cross_up and strategy.position_size > 0
    strategy.close("Enter")
if cross_down and strategy.position_size < 0
    strategy.close("Exit")

// Grafiğe plot
plot(aioma, color=color.blue, linewidth=2, title="AIOMA")
plot(wma, color=color.red, linewidth=2, title="WMA")