Cette stratégie combine deux indicateurs techniques, MACD et RSI, en utilisant des signaux de croisement MACD et des signaux de surachat / survente RSI pour déterminer le moment de la négociation. Pendant ce temps, la stratégie introduit également la moyenne mobile pondérée (WMA) comme jugement auxiliaire pour améliorer la fiabilité de la stratégie. La stratégie fonctionne sur une période de 1 heure, ouvrant des positions longues lorsque MACD forme une croix dorée et RSI est supérieur à 50, et ouvrant des positions courtes lorsque MACD forme une croix de mort et RSI est inférieur à 50.
Le noyau de cette stratégie est l'utilisation combinée de deux indicateurs techniques, MACD et RSI. Le MACD est composé de la différence entre la ligne rapide (moyenne mobile à court terme) et la ligne lente (moyenne mobile à long terme), qui peut refléter les changements de tendance du marché. Lorsque la ligne rapide traverse au-dessus de la ligne lente, elle forme une croix dorée, indiquant une tendance à la hausse; inversement, elle forme une croix de mort, indiquant une tendance à la baisse.
Cette stratégie combine le MACD et le RSI, en utilisant le jugement de tendance du MACD et le jugement de surachat/survente du RSI pour mieux comprendre le calendrier des transactions.
En outre, la stratégie définit des variables pour plusieurs délais (tels que 15 minutes, 30 minutes, 1 heure, 2 heures, etc.) pour juger des changements de tendance à différentes échelles de temps.
Cette stratégie combine deux indicateurs techniques efficaces, MACD et RSI, tout en introduisant WMA comme un jugement auxiliaire pour prendre des décisions de trading sur un laps de temps d'une heure. La logique de la stratégie est claire, facile à comprendre et à mettre en œuvre, et peut mieux saisir les tendances du marché et les conditions de surachat / survente, avec une certaine faisabilité. Cependant, la stratégie présente également certaines limitations et risques, tels que le retard, un seul laps de temps, le manque de contrôle des risques, etc. À l'avenir, la stratégie peut être améliorée en termes d'introduction de plus d'indicateurs, d'optimisation des délais, de renforcement du contrôle des risques, d'optimisation des paramètres, etc., pour améliorer sa robustesse et sa rentabilité.
/*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")