クラシックなダブル移動平均クロスオーバー戦略


作成日: 2023-10-27 16:47:30 最終変更日: 2023-10-27 16:47:30
コピー: 0 クリック数: 683
1
フォロー
1617
フォロワー

クラシックなダブル移動平均クロスオーバー戦略

概要

双均線交差策略は,非常に古典的でよく使用される技術分析策略である.この策略は,急速な移動平均と遅い移動平均の交差を,買入と売却のシグナルとして利用する.急速な移動平均が,下方から遅い移動平均を突破すると,買入シグナルが生成され,急速な移動平均が,上方から下方へ落ち,遅い移動平均を突破すると,売却シグナルが生成される.

戦略原則

戦略のコードは主に以下の部分から構成されています.

  1. 快慢平均線の長さとタイプを定義する.快線長さは5周期,慢線長さは21周期で,どちらも単純移動平均を採用する.

  2. 速線と遅線を計算する:sma関数を使って5周期と21周期の単純移動平均を計算する.

  3. 図:速線と遅線の走行図を描く.

  4. 購入と売却の条件を定義する. 快線で慢線を横切るときに購入し,快線下で慢線を横切るときに売却する.

  5. 取引実行: 策略のlongとshort関数が条件を満たしたときに自動的に買いと売却操作を実行する.

この戦略の鍵は,異なる長さの周期の均線の組み合わせを使用して,快速・ゆっくりとした均線を形成し,その交差を取引信号として使用することです.快線は価格の変化をより早く捉え,慢線は長期のトレンドをよりよく反映します.快線上の慢線を横切ると,下から上向きに逆転し,買入信号に属します.快線下の慢線を横切ると,上から下向きに逆転し,売り信号に属します.この戦略の原理はシンプルで明確で,実行しやすいです.

優位分析

双均線交差策には以下の利点があります.

  1. 簡単な原理で,初心者にも適しています.

  2. 順調に操作し,価格トレンドに従って,引き下がりは小さい.

  3. 取引の頻度は適度で,頻繁に取引しない.

  4. 市場変化に柔軟に対応できるカスタマイズ可能なパラメータ

  5. パーメータの組み合わせを最適化することで 簡単に見つけることができます.

  6. ストップポイントを設定し,リスクをコントロールする.

  7. 複数の市場で利用可能であり,応用性も高い.

  8. 他の指標と組み合わせて使用できれば効果が上がります.

リスク分析

双対対の交差策にはいくつかのリスクがあります.

  1. 市場トレンドが強くなると,平均線がトレンドの遅れを追う,遅滞が発生し,最適な入場時間を逃す可能性があります.平均線周期を適切に短縮して,感度を増やすことができます.

  2. 動揺した状況では,偽信号が多く発生する可能性がある. 適切なフィルタリング条件を足して,誤った取引を避けることができる.

  3. 取引回数が多くなり,利益に影響する可能性がある.平均線間隔を適切に緩め,交差を減らすことができる.

  4. トレンドの種類を判断できない場合,逆転取引のリスクがある.トレンド指標の判断を補助する.

  5. 参数最適化には一定の歴史データが必要で,新しい品種には過適合が存在する可能性がある.複数の組み合わせで参数健性をテストする.

  6. 単一の指標は外部環境の影響を受けやすく,パフォーマンスは不安定である可能性があります.他の指標と組み合わせて検証することができます.

最適化の方向

双均線交差戦略は以下の点で最適化できます.

  1. 異なる長さの平均線を試して,特定の取引品種に最適なパラメータを見つけます.

  2. 取引量,ATRの停止など,フィルタリング条件を追加し,不良機会を減らす.

  3. 動量指数などの確認買い売りシグナルと組み合わせて,偽突破を避ける.

  4. ストップ・ローズ戦略を最適化して,部分ストップ・ローズを早すぎる,あるいは遅すぎる退出を避ける.

  5. トレンドと波の指標を組み合わせて,トレンド追跡と逆転取引を実現する.

  6. 適応平均線を採用し,市場に応じて平均線パラメータを調整し,固定周期ではなく.

  7. 複数の時間帯の組み合わせが適用され,市場の時間特性に応じて異なるパラメータの組み合わせが採用される.

  8. リアルタイム最適化,機械学習などの技術を活用してパラメータを継続的に最適化する.

要約する

双均線交差戦略は,その原理がシンプルで,習得しやすく,実施しやすいという特徴により,技術分析において最も核心的でよく使用される取引戦略の1つとなっている.この戦略は価格の傾向に順応し,引き下がりは制御可能であり,リスクも受け入れられる.しかし,その最適化余地も広大である.パラメータ最適化,他の指標と組み合わせた自動化アルゴリズムにより,この戦略の適用性と効果をさらに拡大することができる.全体的に,双均線交差戦略は,投資家の重点研究と長期の適用に値する.

ストラテジーソースコード
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// strategy("Stochastic Strategy of BiznesFilosof", shorttitle="SS of BiznesFilosof", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0)

//Period
startY = input(title="Start Year", defval = 2011)
startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12)
startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31)
finishY = input(title="Finish Year", defval = 2050)
finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12)
finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31)
//finish = input(2019, 02, 28, 00, 00)
timestart = timestamp(startY, startM, startD, 00, 00)
timefinish = timestamp(finishY, finishM, finishD, 23, 59)
window = true // Lenghth strategy

length1 = input(21, minval=1), smoothK1 = input(3, minval=1), smoothD1 = input(3, minval=1)
//length2 = input(5, minval=1), smoothK2 = input(1, minval=1), smoothD2 = input(1, minval=1)
inh0 = input(title="Bottom Line", defval = 14, minval=0), inh1 = input(title="Upper Line", defval = 86, minval=0)

k1 = sma(stoch(close, high, low, length1), smoothK1)
d1 = sma(k1, smoothD1)
plot(k1, color=blue)
plot(d1, color=red)
//k2 = sma(stoch(close, high, low, length2), smoothK2)
//d2 = sma(k2, smoothD2)
//plot(k2, color=orange)

h1 = hline(inh1)
h0 = hline(inh0)
fill(h0, h1, color = aqua, transp=90)

//open
strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(k1, d1) and crossover(k1, inh0) and window)
strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(k1, d1) and crossunder(k1, inh1) and window)

if crossunder(k1, d1) and crossunder(k1, inh1) and strategy.position_size > 0
    strategy.close_all()
if crossover(k1, d1) and crossover(k1, inh0) and strategy.position_size < 0
    strategy.close_all()