MACD ロボット トレーディング戦略

作者: リン・ハーンチャオチャン開催日:2023年12月18日17時30分15秒
タグ:

img

概要

この戦略は,MACD ロボット トレーディング 戦略と呼ばれます.MACD インジケーターの速い線とスローラインの関係を計算することによって,市場での購入と販売のタイミングを決定し,リスクを制御するためにストップロスを採用します.

戦略原則

この戦略は主にMACD指標に基づいて開発されています.MACD指標は,高速線とスローラインで構成されています.高速線は短期移動平均線であり,スローラインは長期移動平均線です.両者の関係は,市場で購入と販売の状態を反映しています.高速線がスローラインを超えると,それは購入信号であり,下を通ると,それは販売信号です.

この戦略では,EMAアルゴリズムを用いて,順番に高速線とスローラインが計算され,期間をカスタマイズすることができます.信号品質を改善するために,信号線が追加され,EMAアルゴリズムを使用してMACD値を再び滑らかにします.

購入のタイミングを決定する際には,速い線と遅い線の黄金の十字だけでなく,MACDの絶対値がカスタマイズされた購入線よりも大きいかどうかを確認してください.そうであれば,購入信号が発行され,リスクを制御するためにストップロスは使用されます.

販売のタイミングを決定する際には,高速線と遅い線とシグナル線が正である時,同時に死点交差点を満たす必要があります.その後,セールシグナルが発行され,ポジションを閉じます.

利点分析

この戦略には以下の利点があります.

  1. 高信頼性の取引信号を決定するためにMACD指標を使用する
  2. 信号線を増やすことで信号の質が向上します
  3. トレイリングストップロスはリスクを効果的に制御します
  4. カスタマイズ可能な購入ラインは戦略の敏感性を調整します
  5. すべての条件は指標計算に基づいており,外部要因の影響を受けません.

リスク分析

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

  1. MACD指標は遅れている 短期取引機会を逃すかもしれない
  2. ストップ・ロスト・ポイントの設定が正しくない場合,不必要な損失が発生する可能性があります.
  3. パラメータチューニングは,テストと調整のために多くの時間を必要とします
  4. トランザクションコストとスリップの影響

これらのリスクは,パラメータを適切に調整したり,他の指標を組み合わせたりなどすることによって軽減できます.

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

戦略は以下の方向で最適化できる:

  1. KDJ,RSI,などなどのシグナルをフィルターするために他の指標と組み合わせる.
  2. 入口と出口点を決定するための機械学習アルゴリズムを追加します
  3. 静的ストップ損失の代わりに動的ストップ損失を使用する
  4. MACD パラメータと買いラインをテストし最適化
  5. 戦略を調整するために取引コストの影響を考慮

結論

一般的に,これは高い信頼性を持つトレンドフォロー戦略である.MACD指標を通じてトレンドを判断し,ストップロスの追跡でリスクを制御することで,安定した投資利益を得ることができる.NEXT STEPは,パラメータをさらに最適化し,他の指標を組み合わせ,戦略の収益性を向上させるために機械学習を組み込むことである.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.00045)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, signal) and signal > 0
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)

もっと