Die Strategie kombiniert MACD- und Moving Average-Indikatoren, um mehrere Geschäfte zu tätigen, wenn beide ein synchronisches Signal geben.
Die Transaktionslogik lautet wie folgt:
Berechnen Sie den FAST MACD-Wert, in der Regel mit einem 12-Tage-Moving Average
Berechnen Sie den SLOW MACD-Wert, der in der Regel einen 26-Tage-Moving Average enthält
MACD ist FAST minus SLOW
Berechnen Sie die MACD-Signallinie mit einem 9-Tage-Moving Average
Berechnung des 9- und 26-Tage-Moving Averages
Überlegen Sie, was Sie tun sollten, wenn Sie eine Signalleitung auf dem MACD durchfahren.
Wenn Sie die 9-Tages-Mittellinie mit der 26-Tages-Mittellinie tragen, machen Sie mehr.
Wenn der MACD unterhalb der Signallinie und unterhalb der 9-Tage-Mittellinie durch die 26-Tage-Mittellinie geht, ist die Position platz
Die Strategie nutzt die Fähigkeit des MACD, überkaufen und überverkaufen zu können und Trends auf der Durchschnittslinie zu verfolgen, um die Erfolgsrate zu erhöhen.
Die MACD beurteilt Überkauf und Überverkauf, die Durchschnittslinie beurteilt die Tendenz
Die Kombination der beiden Validierungen bietet eine hohe Wahrscheinlichkeit für mehrere Möglichkeiten.
Die Regeln sind klar und einfach umzusetzen.
Um die optimalen Parameter zu ermitteln, müssen Sie sie wiederholt testen.
Nur zu viel zu tun und keine Gelegenheit zu nutzen
Die Tendenz, mehr zu tun, könnte die Verluste vergrößern
Die Strategie nutzt die Vorteile des MACD und des Average Line Indicators, um die Marktdynamik zu beurteilen.
/*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="หนีตาย")