この戦略はMACDインジケーターと移動平均を組み合わせて 両方とも一致する信号を出すとき ロングになります
論理的には
FAST MACD を計算する.通常は12日間の EMA
計算するSLOW MACD,通常26日間のEMA
MACD は FAST マイナス SLOW
シグナルラインは通常,MACDの9日間MAです.
9日および26日MAsを計算する
MACDが信号線を横切ったとき,ロングを考える.
9日間のMAが26日間のMAを超えると長引く
MACDがシグナルラインを下回り,9日間のMAが26日間のMAを下回りするとロングを閉じる.
この戦略は,MACDの過買い過売指標とMAのトレンドフォロー能力を利用し,両方を組み合わせて高確率取引を行う.
MACDは過買い/過売を判断し,MAは傾向を決定する
組み合わせは高い確率で長い機会を提供します
明確で実行しやすいルール
最適なパラメータを決定するために最適化が必要です
短期間の機会を利用できない
トレンドに逆の取引は損失を拡大する可能性があります
この戦略は,市場リズムを判断する際にMACDとMA
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MACD Cross+MA", overlay=true) //@version=4 // Getting inputs fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2019, title = "From Year", minval = 2009) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2009) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // 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 plot(sma(close,9),color=color.red) plot(sma(close,26),color=color.green) //Condition BMacdcondition= (macd>signal) SMacdcondition= (macd<signal) longCondition = crossover(sma(close, 9), sma(close, 26)) shortCondition = crossunder(sma(close, 9), sma(close, 26)) //entry if (BMacdcondition) and window() (longCondition) strategy.entry("LONG", strategy.long) if (shortCondition) and window() (SMacdcondition) strategy.close("LONG", qty_percent=100 , comment="หนีตาย")