移動平均のクロスオーバーとMACDの組み合わせ戦略

作者: リン・ハーンチャオチャン開催日:2023年10月24日 13:51:02
タグ:

img

概要

この戦略は,移動平均クロスオーバーシステムとMACD指標を組み合わせて,トレンド期間に長期に渡る自動化取引戦略を実施し,トレンド逆転時に利益/ストップを取ります. 戦略名は"移動平均クロスオーバーとMACD組み合わせ戦略"です.

原則

この戦略は主に移動平均クロスオーバーシステムとMACD指標の組み合わせに基づいています.特に,短期移動平均が長期移動平均を横切ると長くなって,短期移動平均が長期移動平均を下回ると短くなってしまいます.ここで21日EMAは短期MA,100日EMAは長期MAとして使用されます.

同時に,MACDインジケーターは,取引信号を確認するために使用されます.MACD DIFF線がDEA線を横切ったときのみ,ロング信号が起動します.そしてDIFF線がDEA線を下に横切ったとき,ロングポジションはストップ・ロスのために閉鎖されます.

さらに,RSIは過度のショートシートを避けるために使用され,RSIが30%未満である場合にのみショートポジションを開始する.

ストップ損失については,ロングストップ損失がエントリー価格より1%低く,ショートストップ損失がエントリー価格より1%高く設定される固定パーセントのトライリングストップ方法を採用する.また,ロングポジションの浮動利益がエントリー価格の3%に達すると,ストップ損失は移動利益で終了する.

利点分析

この戦略の最大の利点は,主要トレンド方向を決定するために移動平均システムを使用し,その後,誤ったブレイクアウトを効果的にフィルタリングできるエントリーシグナルのためにMACD指標を使用することです.移動平均クロスオーバーシステムのみを使用すると比較して,これは非効率な取引頻度を削減し,勝利率を改善することができます.

さらに,固定パーセントのストップ・ロストと移動的利益占いは,可能な限り早期に利益を確保しながら,損失を許容できる範囲内で保持するのに役立ちます.これは口座の引き上げを軽減し,実際の取引で貪欲に起因する損失を回避することができます.

リスク分析

この戦略の主なリスクは,

  1. 移動平均クロスオーバーシステムには遅延の問題があり,遅れてエントリーし,最良のエントリーポイントが欠けている可能性があります.これはMAパラメータを最適化することによって改善できます.

  2. MACDインジケーターは誤った信号を生成する傾向があります.KDJなどの他のフィルターが追加されることがあります.

  3. 固定パーセントストップ損失は 時には間に合わない. ダイナミック トレイリングストップ損失を考慮することができます.

  4. 戦略は大きな引き下げがあるかもしれない.リスクを軽減するためにポジションのサイズを減らすことができます.

  5. この戦略は長期的であり,下落傾向から利益を得ることはできない.ショートレスのメカニズムも追加できる.

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

戦略は以下の点で改善できる:

  1. より正確な信号のためにMAパラメータを最適化する.EMAとSMAのような異なるMAタイプをテストすることができます.

  2. MAクロスオーバー信号をフィルタリングするために,KDJ,RSIなど他の指標を追加し,不良取引を減らす.

  3. リスクをより良く制御するために,トライリングストップやATRストップのような動的ストップ損失方法をテストする.

  4. 短縮するメカニズムを追加して 戦略がダウントレンドから利益を得ることができます

  5. ポジションのサイズとマネジメントを最適化して 最大引き上げを減らす

  6. 適用性を拡大するために,異なる製品や資産クラスでテスト性能を測る.

  7. マシン学習アルゴリズムを組み込み パラメータを自動最適化し 手動介入を減らす

結論

この戦略は,高収益性のための移動平均クロスオーバーシステムとMACD指標の強みを組み合わせます.パラメータチューニング,追加のフィルター,ストップ損失メカニズム,ショートリングメカニズムへのさらなる改善により,安定性が向上し,引き下げを減らすことができます.機械学習の組み込みは適用性を拡大することもできます.全体として,定量的な取引戦略に良い方向性を提供します.しかし,堅牢な戦略になるために継続的なテストと最適化が必要です.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-10-23 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Toxic_Cat_

//@version=5
// strategy("MA_50_200_CROSS", overlay=true, margin_long=100, margin_short=100)

EMA21 = ta.ema(close, 21)
EMA100 = ta.ema(close, 100)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

plot(EMA21)
plot(EMA100, color = color.orange)

openLong = ta.crossover(EMA21, EMA100) and macdLine > signalLine
openShort = ta.crossunder(EMA21, EMA100) and ta.rsi(close, 14) <= 33

crossunderMACD = ta.crossunder(macdLine, signalLine)


if (strategy.opentrades < 1)
    if openLong 
        strategy.entry("L",strategy.long, 1)

   if openShort
      strategy.entry("S",strategy.short, 1)

// slose long
// if ((strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.03) <= open) 
//     strategy.exit("profit L", "L", limit = close)

// else if strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.01 >= open or crossunderMACD
//     strategy.exit("loss L", "L", stop = close)

// slose short
// if (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03) >= open
//     strategy.exit("profit S", "S", limit = (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03))

// else if strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01 <= open
//    strategy.exit("loss S", "S", stop = (strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01))

















もっと