
Die Strategie kombiniert zwei technische Indikatoren, MACD und RSI, um den Zeitpunkt des Handels zu bestimmen. Die Strategie verwendet die Überkauf- und Überverkaufsignale des MACD und des RSI. Die Strategie verwendet auch den gewichteten Moving Average (WMA) als Hilfsbeurteilung, um die Zuverlässigkeit der Strategie zu verbessern.
Die MACD besteht aus einer Differenz zwischen der schnellen Linie (kurzfristiger Moving Average) und der langsamen Linie (langfristiger Moving Average), die eine Trendänderung des Marktes widerspiegelt. Wenn die schnelle Linie die langsame Linie durchbricht, entsteht ein Goldfork, der einen Aufwärtstrend anzeigt, und umgekehrt ein Todesfork, der einen Abwärtstrend anzeigt. Der RSI ist ein Indikator, der den Überkauf und Überverkauf des Marktes misst.
Die Strategie kombiniert die MACD und den RSI, um die Trendentscheidung der MACD und die Überkauf-Überverkauf-Urteilsentscheidung des RSI zu nutzen, um die Handelszeiten genauer zu erfassen. Die Strategie führt außerdem einen gewichteten Moving Average (WMA) als Hilfsentscheidung ein, der die jüngsten Preise stärker berücksichtigt als der gewöhnliche Moving Average und die Preisänderungen sensibler reflektiert.
Darüber hinaus werden in der Strategie Variablen für mehrere Zeitrahmen (z. B. 15 Minuten, 30 Minuten, 1 Stunde, 2 Stunden usw.) verwendet, um Trendänderungen in verschiedenen Zeitskalen zu beurteilen. Diese Analysemethode für mehrere Zeitrahmen kann der Strategie helfen, Markttrends umfassender zu erfassen und die Entscheidungsgenauigkeit zu verbessern.
Die Strategie ist klar, leicht zu verstehen und zu implementieren, kann Markttrends und Überkauf-Überverkauf besser erfassen und hat eine gewisse Machbarkeit. Die Strategie hat jedoch auch einige Einschränkungen und Risiken, wie Rückstand, ein einziger Zeitrahmen, fehlende Risikokontrollen und so weiter. Die Strategie kann verbessert werden, indem mehr Indikatoren eingeführt, Zeitrahmen optimiert, Risikokontrollen verstärkt und Parameter optimiert werden, um ihre Stabilität und Profitabilität zu verbessern.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved MACD and RSI Trading Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.01, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// MACD 設置
fast_length = input(12, title="MACD Fast Length")
slow_length = input(26, title="MACD Slow Length")
signal_smoothing = input(9, title="MACD Signal Smoothing")
// RSI 設置
input_rsi_length = input.int(14, title="RSI Length")
input_rsi_source = input(close, "RSI Source")
RSI = ta.rsi(input_rsi_source, input_rsi_length)
// 計算MACD和信號線
[macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_smoothing)
// 自然交易理論:利用MACD和RSI的結合
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
maTypeInput = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="Moving Average Length", group="MA Settings")
macdMA = ma(macdLine, maLengthInput, maTypeInput)
// 設置交易信號
longCondition = ta.crossover(macdLine, signalLine) and macdLine > macdMA and RSI < 70
shortCondition = ta.crossunder(macdLine, signalLine) and macdLine < macdMA and RSI > 30
// 定義時間框架
tf_15m = ta.change(RSI, 15) > 0 ? 1 : 0
tf_30m = ta.change(RSI, 30) > 0 ? 1 : 0
tf_1h = ta.change(RSI, 60) > 0 ? 1 : 0
tf_2h = ta.change(RSI, 120) > 0 ? 1 : 0
tf_4h = ta.change(RSI, 240) > 0 ? 1 : 0
tf_6h = ta.change(RSI, 360) > 0 ? 1 : 0
tf_8h = ta.change(RSI, 480) > 0 ? 1 : 0
tf_12h = ta.change(RSI, 720) > 0 ? 1 : 0
tf_1d = ta.change(RSI, 1440) > 0 ? 1 : 0
// 設置開倉、平倉和空倉條件
if (longCondition and tf_1h and RSI > 50)
strategy.entry("Long", strategy.long)
if (shortCondition and tf_1h and RSI < 50)
strategy.entry("Short", strategy.short)
if (tf_1h and RSI > 70)
strategy.close("Long")
if (tf_1h and RSI < 30)
strategy.close("Short")
// 加入其他策略
// 定義加權平均價格
wma(source, length) =>
wma = 0.0
sum = 0.0
sum_wts = 0.0
for i = 0 to length - 1
wts = (length - i) * (length - i)
sum := sum + source[i] * wts
sum_wts := sum_wts + wts
wma := sum / sum_wts
wmaLength = input.int(20, title="WMA Length", group="Other Strategies")
wmaValue = wma(close, wmaLength)
// 設置交易信號
longWMACondition = close > wmaValue
shortWMACondition = close < wmaValue
if (longWMACondition and tf_1h and RSI > 50)
strategy.entry("Long WMA", strategy.long)
if (shortWMACondition and tf_1h and RSI < 50)
strategy.entry("Short WMA", strategy.short)
if (tf_1h and RSI > 70)
strategy.close("Long WMA")
if (tf_1h and RSI < 30)
strategy.close("Short WMA")
// 繪製MACD和RSI
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")