
La stratégie est un système de trading de suivi de tendance qui combine deux indicateurs techniques, le MACD et le RSI. Il capte les changements de tendance des prix à l’aide de l’indicateur MACD, tout en utilisant l’indicateur RSI pour la confirmation d’un surachat et d’une survente, permettant une vérification du double signal. La stratégie utilise la gestion des fonds fixes pour le contrôle de la position et est équipée d’un mécanisme de stop-loss mobile pour protéger les bénéfices.
La logique fondamentale de la stratégie repose sur les éléments clés suivants :
Il s’agit d’une stratégie de suivi de tendances basée sur des indicateurs techniques classiques, qui permet de générer des signaux de trading plus fiables grâce à l’utilisation combinée du MACD et du RSI. La stratégie est conçue pour être simple et pratique, avec une meilleure valeur de combat. Grâce à une optimisation raisonnable des paramètres et à l’extension des fonctionnalités, la stratégie devrait obtenir une performance de trading stable dans différents environnements de marché.
/*backtest
start: 2024-11-11 00:00:00
end: 2024-12-11 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cryptohitman09
//@version=6
strategy("MACD + RSI 交易系统 - 110 美金买入", overlay=true)
// MACD 設定
fastLength = input.int(6, title="MACD Fast Length")
slowLength = input.int(13, title="MACD Slow Length")
signalSmoothing = input.int(5, title="MACD Signal Smoothing")
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
// RSI 設定
rsiLength = input.int(14, title="RSI Length") // RSI 計算週期
rsiValue = ta.rsi(close, rsiLength) // 計算 RSI 值
rsiThresholdHigh = input.int(70, title="RSI 超買閾值") // RSI 超買閾值
rsiThresholdLow = input.int(30, title="RSI 超賣閾值") // RSI 超賣閾值
// 做多信号条件:MACD 線突破信号線,且 RSI 不低於 30
buySignal = (macdLine > signalLine) and (rsiValue >= rsiThresholdLow) // 只有 RSI 大於或等於 30 時才觸發買入
// 计算每次交易的仓位(每次交易目标为 110 美金的买入金额)
tradeAmount = 20010 // 每次买入110 美金
orderSize = tradeAmount / close // 根据当前价格计算仓位大小
// 移动止损(Trailing Stop)
enableTrailingStop = input.bool(true, title="启用移动止损")
trailingStopDistance = input.float(2, title="移动止损距离 (%)") / 89500 // 增加移动止损的距离
longTrailingStop = strategy.position_avg_price * (1 - trailingStopDistance)
// 交易逻辑:仅做多
if buySignal
strategy.entry("买入", strategy.long, qty=orderSize)
if enableTrailingStop
strategy.exit("卖出", from_entry="买入", trail_price=longTrailingStop, trail_offset=trailingStopDistance * close)
// 绘制 MACD 指标
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")
// 绘制 RSI 值
plot(rsiValue, color=color.orange, title="RSI Value")
hline(rsiThresholdHigh, "RSI 超买", color=color.red)
hline(rsiThresholdLow, "RSI 超卖", color=color.green)
// 绘制买入信号
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="买入信号", text="BUY")
// 如果触发买入信号,则发送警报
if buySignal
alert('{"secret": "eyJhbGciOiJIUzI1NiJ9.eyJzaWduYWxzX3NvdXJjZV9pZCI6MTAwMDAyfQ.G1wLNjNyUPlTqYWsIqXSWnn_M4pRCKerBm7eTpyCiH8", "max_lag": "300", "timestamp": "{{timenow}}", "trigger_price": "{{close}}", "tv_exchange": "{{exchange}}", "tv_instrument": "{{ticker}}", "action": "{{strategy.order.action}}", "bot_uuid": "493b76f0-8a3c-4633-8b2b-90c02659dd4d", "strategy_info": {"market_position": "{{strategy.market_position}}", "market_position_size": "{{strategy.market_position_size}}", "prev_market_position": "{{strategy.prev_market_position}}", "prev_market_position_size": "{{strategy.prev_market_position_size}}"}, "order": {"amount": "{{strategy.order.contracts}}", "currency_type": "base"}}', alert.freq_once_per_bar_close)