
이 전략은 MACD와 RSI의 두 가지 기술 지표를 결합한 트렌드 추적 방식의 거래 시스템이다. MACD 지표를 통해 가격 트렌드의 변화를 포착하고, RSI 지표를 사용하여 오버 바이 오버 세를 확인하고, 이중 신호 검증을 구현한다. 전략은 고정 자금 관리 방식을 사용하여 포지션을 제어하고, 수익을 보호하기 위해 이동 손실 장치를 갖추고 있다.
전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.
이것은 고전적인 기술 지표에 기초한 트렌드 추적 전략이며, MACD와 RSI의 결합된 사용으로, 비교적 신뢰할 수 있는 거래 신호 생성 메커니즘을 구현한다. 전략 전체 설계는 간결하고 실용적이며, 실전에서의 좋은 가치 있다. 합리적인 매개 변수 최적화와 기능 확장으로 이 전략은 다양한 시장 환경에서 안정적인 거래 성능을 얻을 수 있을 것으로 보인다.
/*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)