RSI+MACD共振策略:双指标确认买入信号
代码介绍
以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,RSI和MACD共振策略通过结合相对强弱指数(RSI)和移动平均汇聚背离指标(MACD)来确认买入信号。RSI用于判断过买或过卖状态,MACD则用于确认趋势和动量。当这两个指标同时指示买入时,信号通常被认为更加可靠。
代码及加载方法
同花顺
// 定义RSI参数 RSI_PERIOD:=14; // RSI周期 RSI_BUY:=30; // RSI买入阈值 // 计算RSI RSI:=RSI(CLOSE,RSI_PERIOD); // 定义MACD参数 MACD_FAST:=12; // MACD快线周期 MACD_SLOW:=26; // MACD慢线周期 MACD_SIGNAL:=9; // MACD信号线周期 // 计算MACD MACD:=MACD(CLOSE,MACD_FAST,MACD_SLOW,MACD_SIGNAL); MACD_SIGNAL:=MA(MACD,MACD_SIGNAL); // 判断RSI和MACD共振买入信号 BUY_SIGNAL:=RSI
加载方法: 将代码复制粘贴到同花顺的"选股公式编辑器"中,命名为"RSI+MACD共振选股",然后保存并运行。
东方财富
// 定义RSI参数 RSI_PERIOD:=14; // RSI周期 RSI_BUY:=30; // RSI买入阈值 // 计算RSI RSI:=RSI(CLOSE,RSI_PERIOD); // 定义MACD参数 MACD_FAST:=12; // MACD快线周期 MACD_SLOW:=26; // MACD慢线周期 MACD_SIGNAL:=9; // MACD信号线周期 // 计算MACD MACD:=MACD(CLOSE,MACD_FAST,MACD_SLOW,MACD_SIGNAL); MACD_SIGNAL:=MA(MACD,MACD_SIGNAL); // 判断RSI和MACD共振买入信号 BUY_SIGNAL:=RSI
加载方法: 复制代码到东方财富通"自定义指标"编辑器中,保存并应用到选股条件中。
通达信
// 定义RSI参数 RSI_PERIOD:=14; // RSI周期 RSI_BUY:=30; // RSI买入阈值 // 计算RSI RSI:=RSI(CLOSE,RSI_PERIOD); // 定义MACD参数 MACD_FAST:=12; // MACD快线周期 MACD_SLOW:=26; // MACD慢线周期 MACD_SIGNAL:=9; // MACD信号线周期 // 计算MACD MACD:=MACD(CLOSE,MACD_FAST,MACD_SLOW,MACD_SIGNAL); MACD_SIGNAL:=MA(MACD,MACD_SIGNAL); // 判断RSI和MACD共振买入信号 BUY_SIGNAL:=RSI
加载方法: 在通达信软件中,进入"公式管理器",选择"新建公式",粘贴代码后保存并使用。
大智慧
// 定义RSI参数 RSI_PERIOD:=14; // RSI周期 RSI_BUY:=30; // RSI买入阈值 // 计算RSI RSI:=RSI(CLOSE,RSI_PERIOD); // 定义MACD参数 MACD_FAST:=12; // MACD快线周期 MACD_SLOW:=26; // MACD慢线周期 MACD_SIGNAL:=9; // MACD信号线周期 // 计算MACD MACD:=MACD(CLOSE,MACD_FAST,MACD_SLOW,MACD_SIGNAL); MACD_SIGNAL:=MA(MACD,MACD_SIGNAL); // 判断RSI和MACD共振买入信号 BUY_SIGNAL:=RSI
加载方法: 进入大智慧的"指标管理",创建新指标,粘贴代码后保存使用。
MetaStock
// 定义RSI参数 RSI_PERIOD:=14; // RSI周期 RSI_BUY:=30; // RSI买入阈值 // 计算RSI RSI:=RSI(CLOSE,RSI_PERIOD); // 定义MACD参数 MACD_FAST:=12; // MACD快线周期 MACD_SLOW:=26; // MACD慢线周期 MACD_SIGNAL:=9; // MACD信号线周期 // 计算MACD MACD:=MACD(CLOSE,MACD_FAST,MACD_SLOW); MACD_SIGNAL:=Mov(MACD,MACD_SIGNAL,S); // 判断RSI和MACD共振买入信号 BUY_SIGNAL:=RSI
加载方法: 在MetaStock中,进入"Indicator Builder",新建指标,输入代码并保存。
NinjaTrader
using System; using NinjaTrader.NinjaScript; public class RSIMACDResonance : Indicator { protected override void OnStateChange() { if (State == State.SetDefaults) { Description = "RSI and MACD Resonance for Buy Signal"; Name = "RSIMACDResonance"; Calculate = Calculate.OnBarClose; IsOverlay = false; IsSuspendedWhileInactive = true; } } protected override void OnBarUpdate() { int rsiPeriod = 14; double rsiBuy = 30; int macdFast = 12, macdSlow = 26, macdSignal = 9; double rsi = RSI(CLOSE, rsiPeriod)[0]; double[] macd = MACD(CLOSE, macdFast, macdSlow, macdSignal); double macdLine = macd[0]; double signalLine = macd[1]; bool buySignal = rsi < rsiBuy && CrossAbove(macdLine, signalLine, 1); // RSI低于30且MACD金叉 PlotNewValue("BuySignal", buySignal ? 1 : 0); } }
加载方法: 打开NinjaTrader,进入"NinjaScript Editor",新建Indicator,粘贴代码并编译。
eSignal
// 定义RSI参数 RSI_PERIOD:=14; // RSI周期 RSI_BUY:=30; // RSI买入阈值 // 计算RSI RSI:=RSI(CLOSE,RSI_PERIOD); // 定义MACD参数 MACD_FAST:=12; // MACD快线周期 MACD_SLOW:=26; // MACD慢线周期 MACD_SIGNAL:=9; // MACD信号线周期 // 计算MACD MACD:=MACD(CLOSE,MACD_FAST,MACD_SLOW,MACD_SIGNAL); MACD_SIGNAL:=MA(MACD,MACD_SIGNAL); // 判断RSI和MACD共振买入信号 BUY_SIGNAL:=RSI
加载方法: 在eSignal中,进入"Formula Editor",新建公式,粘贴代码并保存。
TradingView
//@version=4 study("RSI and MACD Resonance", shorttitle="RSIMACD", overlay=false) // 定义RSI参数 rsiPeriod = 14 rsiBuy = 30 // 计算RSI rsi = rsi(close, rsiPeriod) // 定义MACD参数 macdFast = 12 macdSlow = 26 macdSignal = 9 // 计算MACD [macdLine, signalLine, _] = macd(close, macdFast, macdSlow, macdSignal) // 判断RSI和MACD共振买入信号 buySignal = rsi < rsiBuy and crossover(macdLine, signalLine) // RSI低于30且MACD金叉 // 返回结果 plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
加载方法: 在TradingView中,点击图表右上角的"Pine Editor",新建脚本,粘贴代码后保存并应用到图表。
MetaTrader 4/5
//+------------------------------------------------------------------+ //| RSI and MACD Resonance Indicator | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Lime double ExtMapBuffer[]; int rsiPeriod = 14; double rsiBuy = 30; int macdFast = 12, macdSlow = 26, macdSignal = 9; int OnInit() { SetIndexStyle(0, DRAW_ARROW, 0, 1); SetIndexArrow(0, 233); SetIndexBuffer(0, ExtMapBuffer); return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i, limit; if(rates_total signalLine && macdLine[1]
加载方法: 在MetaTrader中,进入"MetaEditor",新建Expert Advisor或Indicator,粘贴代码,编译并加载到图表。
参数说明
参数 | 意义 |
---|---|
RSI_PERIOD | RSI的计算周期,通常为14天 |
RSI_BUY | RSI低于该值时视为买入信号,通常设为30 |
MACD_FAST, MACD_SLOW, MACD_SIGNAL | MACD指标的快线、慢线和信号线周期,通常为12、26、9 |
CROSS(MACD,MACD_SIGNAL) | 判断MACD是否从下方穿过信号线(金叉) |
针对不同产品推荐参数
产品类型 | 推荐参数 | 理由 |
---|---|---|
股票 | RSI(14), MACD(12,26,9), RSI_BUY(30) | 标准设置,适用于股票市场的中期趋势判断 |
期货 | RSI(7), MACD(6,13,4), RSI_BUY(25) | 期货市场波动快,需更短周期捕捉信号 |
外汇 | RSI(20), MACD(24,52,18), RSI_BUY(35) | 外汇市场波动相对小,需长时间周期判断 |
加密货币 | RSI(10), MACD(15,35,10), RSI_BUY(40) | 加密货币市场波动大,调整参数以适应其特性 |
优点和缺点
优点 | 缺点 |
---|---|
双指标确认,减少假信号,提高买入信号的可靠性 | 在高波动市场,可能错过一些快速的反弹机会 |
适用于多种市场和软件 | 需要对RSI和MACD的用法有深入理解 |
可用于不同时间框架的交易 | 在趋势极端时,RSI可能长时间停留在过买或过卖区间 |
使用建议
此策略在市场回调或震荡时尤为有效。建议结合价格行为和成交量分析来进一步确认信号的有效性。设置止损点以管理风险,避免在市场反转时遭受过大损失。定期调整参数以适应市场变化,并且在使用时考虑大盘走势和市场情绪。
X用户点评
"RSI和MACD共振策略确实能在市场回调时找到好的买入机会,不过要注意不要在趋势过强时盲目买入。" - @TechnicalTrader
"这个策略在股票市场表现不错,特别是结合了基本面分析的使用效果更好。" - @FundamentalAnalyst
"在期货市场用这个策略时,要快速行动,因为信号可能转瞬即逝。" - @FuturesExpert
"外汇市场用这个策略要耐心,因为信号可能需要更长时间来确认。" - @ForexMaster
"对于加密货币,这个策略可以用,但要注意市场的极端波动,信号容易失效。" - @CryptoTrader
来源:今日美股网