クラシックな二重移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2023年10月27日 16時47分30秒
タグ:

img

概要

双移動平均クロスオーバー戦略は,非常に古典的で一般的に使用される技術分析戦略である.この戦略は,より速い移動平均とより遅い移動平均のクロスオーバーを,売買のシグナルとして利用する.より速い移動平均が,より遅い移動平均を下から越えると,購入信号が生成される.より速い移動平均が,より遅い移動平均を下から越えると,販売信号が生成される.

戦略の論理

戦略コードの主要な部分は以下のとおりです.

  1. 快速移動平均と遅い移動平均の長さと種類を定義する.快速移動平均は5年期,遅い移動平均は21年期が両方とも単純な移動平均を使用する.

  2. スピードと遅いMAsを計算する.SMA関数を使用して,5期および21期の単純な移動平均を計算する.

  3. グラフをグラフ化します. 速いMAsと遅いMAsのトレンドラインをグラフ化します.

  4. 入口と出口のルールを定義する. 速いMAが遅いMAを超えると購入し,速いMAが遅いMAを下回ると売却する.

  5. 取引を実行する: 条件が満たされたときに自動的に取引を実行するために戦略の長期および短期機能を使用します.

この戦略の鍵は,異なる期間の移動平均値を使用して,高速MAsと遅いMAsを形成し,それらのクロスオーバーを取引信号として使用することです.高速MAは価格変化をより速く捉え,遅いMAは長期的なトレンドをよりよく反映しています.遅いMAの上の高速MAのクロスオーバーは買い信号である上向きブレイクを示します.そして下のクロスオーバーは売り信号です.この戦略の論理はシンプルで実行が簡単です.

利点分析

二重移動平均のクロスオーバー戦略には以下の利点があります.

  1. シンプルな原則で 分かりやすいし 初心者にも適しています

  2. 価格の傾向を追いかけて わずかな引き下げ

  3. 適度な取引頻度で 過剰な取引を避けます

  4. 調整可能なパラメータ,市場の変化に適応する柔軟性.

  5. 適したパーソナルパラメータセットを 簡単に最適化できます

  6. ストップ・ロスを設定して リスクをコントロールできます

  7. 様々な市場で使用可能で,高度な応用性があります

  8. 他の指標と組み合わせてパフォーマンスを向上させることができる.

リスク分析

この戦略にはいくつかのリスクもあります:

  1. トレンドが強いときに遅れた反応は 最適なエントリータイミングを逃す可能性があります. 感受性を改善するために MA 期間を短縮することができます.

  2. バランス・バインド市場では 誤った取引を避けるためのフィルターを追加できます

  3. 取引が多すぎると 収益性が低下し 交差を減らすために MA距離を拡大します

  4. トレンドを特定するのは難しい 逆トレンドの取引の危険性

  5. パラメータの最適化には 十分な履歴データが必要であり 新しい製品に過剰に適合するリスクがあります パラメータの信頼性をテストする必要があります

  6. 単一指標は外部要因に敏感で,パフォーマンスが不安定である可能性があります. 検証のために他の指標と組み合わせることができます.

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

二重MA戦略をさらに最適化する方法があります.

  1. 特定の取引製品に最適なパラメータを見つけるために,異なる高速および遅いMA長さをテストする.

  2. 劣った機会を減らすために ストップ・ロスを追加します

  3. トレーディング・シグナルを確認し 偽のブレイクを避けるために モメント・インジケーターを組み合わせます

  4. 早期または遅刻した出口を避けるためにストップ損失戦略を最適化します

  5. トレンドフォローと反トレンド取引を可能にするためにトレンドと波の指標を組み込む.

  6. 固定期間ではなく,市場状況に基づいてパラメータを調整するために適応型MAsを使用する.

  7. 異なる市場セッションと特徴のためのパラメータの組み合わせを使用する.

  8. マシン学習アルゴリズムを使ってリアルタイムで最適化を行い,パラメータを継続的に改善する.

概要

双向移動平均クロスオーバー戦略は,シンプルな論理と実装の容易さにより,最も不可欠で広く使用される技術分析戦略の一つとなっています.制御された引き下げと受け入れられるリスクで価格傾向を追います.しかし,パラメータ調整,他の指標と自動化されたアルゴリズムを組み込むことで,最適化の可能性も巨大で,その適用性とパフォーマンスはさらに向上できます.全体として,双向移動平均クロスオーバー戦略は,投資家による大きな注意と長期的適用に値します.


/*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()
  
    


もっと