
Стратегия объединяет два технических показателя MACD и RSI, используя перекрестные сигналы MACD и сигналы о перекупке и перепродаже RSI для определения времени торговли. В то же время, стратегия также вводит весомые движущиеся средние ((WMA) в качестве вспомогательного суждения, чтобы повысить надежность стратегии.
В основе этой стратегии лежит сочетание двух технических показателей MACD и RSI. MACD состоит из разрыва между быстрой линией (краткосрочная скользящая средняя) и медленной линией (долгосрочная скользящая средняя), который отражает изменения тенденции на рынке. Когда быстрая линия пересекает медленную линию, образуется золотая вилка, указывающая на восходящую тенденцию, а наоборот, формирует мертвую вилку, указывающую на нисходящую тенденцию.
Стратегия объединяет MACD и RSI, используя оценку тренда MACD и оценку перекупа RSI, чтобы более точно уловить время торговли. В то же время, стратегия также вводит весомый подвижной средний ((WMA) в качестве вспомогательного решения, который уделяет больше внимания недавним ценам по сравнению с обычными подвижными средними и может более чувствительно отражать изменения цен.
Кроме того, в стратегии также установлены переменные с несколькими временными рамками (например, 15 минут, 30 минут, 1 час, 2 часа и т. д.), которые используются для определения изменения тенденций в разных временных масштабах. Такой метод анализа с несколькими временными рамками может помочь стратегии более полно понять тенденции рынка и повысить точность принятия решений.
Стратегия использует два эффективных технических показателя MACD и RSI в сочетании с WMA в качестве вспомогательного суждения для принятия торговых решений в течение 1-часовой временной рамки. Логика стратегии ясна, легко понятна и реализуема, она позволяет лучше понимать рыночные тенденции и состояние перекупа и перепродажи, имеет некоторую жизнеспособность. Однако, стратегия также имеет некоторые ограничения и риски, такие как запаздывание, единая временная рамка, отсутствие контроля риска и т. Д. В будущем.
/*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")