この戦略は,MACD ロボット トレーディング 戦略と呼ばれます.MACD インジケーターの速い線とスローラインの関係を計算することによって,市場での購入と販売のタイミングを決定し,リスクを制御するためにストップロスを採用します.
この戦略は主にMACD指標に基づいて開発されています.MACD指標は,高速線とスローラインで構成されています.高速線は短期移動平均線であり,スローラインは長期移動平均線です.両者の関係は,市場で購入と販売の状態を反映しています.高速線がスローラインを超えると,それは購入信号であり,下を通ると,それは販売信号です.
この戦略では,EMAアルゴリズムを用いて,順番に高速線とスローラインが計算され,期間をカスタマイズすることができます.信号品質を改善するために,信号線が追加され,EMAアルゴリズムを使用してMACD値を再び滑らかにします.
購入のタイミングを決定する際には,速い線と遅い線の黄金の十字だけでなく,MACDの絶対値がカスタマイズされた購入線よりも大きいかどうかを確認してください.そうであれば,購入信号が発行され,リスクを制御するためにストップロスは使用されます.
販売のタイミングを決定する際には,高速線と遅い線とシグナル線が正である時,同時に死点交差点を満たす必要があります.その後,セールシグナルが発行され,ポジションを閉じます.
この戦略には以下の利点があります.
この戦略にはいくつかのリスクもあります:
これらのリスクは,パラメータを適切に調整したり,他の指標を組み合わせたりなどすることによって軽減できます.
戦略は以下の方向で最適化できる:
一般的に,これは高い信頼性を持つトレンドフォロー戦略である.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)