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
来源:今日美股网