この戦略は,MACD指数と移動平均指数を融合させ,両者が同方向の信号を与える時に多取引を行う.
取引の論理は以下の通りです.
FAST MACD値の計算は,通常12日指数移動平均を取ります
SLOW MACD値を計算する.通常26日指数移動平均を取ります.
MACDはFASTからSLOWに等しい
MACDの信号線を計算し,通常9日移動平均を取ります
9日と26日の移動平均を計算する
MACDで信号を遮断する際には,
9日平均線と26日平均線を合わせると,
MACDが9日平均線の下を通過し,26日平均線の下を通過すると,平仓
この戦略は,MACDの超買超売判断と均線のトレンド追跡能力を充分に活用し,両者を組み合わせて取引を行うことで,成功率を高めます.
MACDは超買いと超売りを判断し,平均線はトレンドを判断した.
この2つの組み合わせが検証され,複数の機会が提供される可能性が高いのです.
操作規則は明確で実行しやすい
テストを繰り返して最適のパラメータを決定する
余分な仕事をして空き席を利用できない
消費者が増加するにつれて,損失が拡大する可能性があります.
この戦略は,MACDと平均線指標の優位性を十分に活用し,両者を組み合わせて市場のリズムを判断する.しかし,多量化やパラメータ最適化などの問題には注意が必要です.
/*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="หนีตาย")