编码帮助 - 页 362 1...355356357358359360361362363364365366367368369...786 新评论 Mladen Rakic 2014.10.07 09:22 #3611 triip: 伙计们,我需要一点帮助来编码RSI和SMA的关系。 正如你在图片上看到的,有信号(向上-向下箭头),但其中一些是假信号。所以我决定用RSI14和SMA20来消除虚假信号。 这背后的逻辑很简单,如果RSI14高于SMA20,就应该出现上升箭头。如果RSI低于SMA20,则应出现向下箭头。 我已经把一些上升箭头标错了,因为RSI太高了,但这部分我可以自己编码。 我已经找到了很多RSI<MA交叉的代码,但其中大多数在出现交叉时做多/做空。但我需要一个RSI高于或低于的术语,然后做一些事情。 目前我已经发现,我必须使用IRSI和数组,但我自己无法将这些代码放在一起。 三角 你是否检查过这里发布的代码:https://www.mql5.com/en/forum/general Triip 2014.10.07 09:55 #3612 mladen: triip 你检查过这里发布的信息吗:https://www.mql5.com/en/forum/general 是的,但我所发现的都是交叉信号。我需要RSI高于/低于SMA的条件。 我的理解是,首先我必须声明什么是ABOVE,什么是BELOW,然后我可以在IF句中使用它们。 Triip 2014.10.07 09:57 #3613 mladen: 三合板 你是否检查过这里张贴的那张 :https://www.mql5.com/en/forum/174476 是的,但我所找到的都是交叉信号。我需要RSI在SMA之上/之下的条件。 我的理解是,首先我必须声明什么是ABOVE,什么是BELOW,然后我可以在IF句中使用它们。 Mladen Rakic 2014.10.07 10:03 #3614 triip: 是的,但我所找到的都是交叉信号。我需要RSI高于/低于SMA的条件。 我的理解是,首先我必须声明什么是ABOVE,什么是BELOW,然后我可以在IF句中使用它们。 三联单 我不知道你用什么rsi来获得你图片上的那些信号,所以......这就是我所能知道的。没有代码就不能提供更多帮助 Triip 2014.10.07 10:08 #3615 mladen: triip 不知道你用什么RSI来获得你图片上的那些信号,所以......我只能说这些。如果没有代码,我无法提供更多帮助 对不起,我没有提到箭头信号不是来自RSI,它是我使用的另一个代码。但我看到,RSI与SMA将有助于避免错误的信号。这就是为什么我想编辑信号代码,使它也能识别RSI条件。 我所需要的是。 箭头信号进来了,但所有这些信号都不是真正的信号。所以在箭头出现之前,必须有另一个if检查 来控制RSI条件。 如果(我目前的代码&&RSI高于/低于SMA)。 { 显示箭头 } 我需要那个红色部分。 Mladen Rakic 2014.10.07 10:31 #3616 triip: 对不起,我没有提到箭头信号不是来自RSI,这是我使用的另一个代码。但我看到RSI和SMA有助于避免错误信号。这就是为什么我喜欢编辑信号代码,使它也能识别RSI条件。我所需要的是。 箭头信号进来了,但它们都不是真正的信号。因此,如果箭头出现,那么必须有另一个if检查,控制RSI条件。 如果(我目前的代码&&RSI高于/低于SMA)。 { 显示箭头 } 我需要那个红色部分。 triip 你必须做以下工作。 1.将RSI的值保存到一个缓冲器中 2.2.使用iMAOnArray()来计算该RSI值的SMA。 3.将保存的RSI值与iMAOnArray()的计算值进行比较,这就是你的条件。 Triip 2014.10.07 13:33 #3617 mladen: 3.你必须做到以下几点。 1.将RSI的值保存到一个缓冲器中 2.使用iMAOnArray()计算该RSI值的SMA。 3.比较保存的RSI值和iMAOnArray()的计算值,这就是你的条件。 那么,1和2是这样的吗? 1. #property indicator_buffers 2 extern int rsi_p = 14; extern int MA_Period=20; extern int MA_Shift=0; extern int MA_Method=0; extern int NumberOfBarsToCalculate = 10000; double Buffer0[]; double Buffer1[]; double Ma[]; double RSi[]; int init() { IndicatorBuffers(4); SetIndexBuffer(0,Buffer0); SetIndexBuffer(1,Buffer1); SetIndexBuffer(2,Ma); SetIndexBuffer(3,RSi); return(0); } [/CODE] 2. [CODE]int start() { int shift; double rsi = 0; for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){ RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift); } for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){ Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift); Buffer0[shift] = RSi[shift]; Buffer1[shift] = Ma[shift]; } return(0); } Coding help [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. Calculating a moving average Mladen Rakic 2014.10.07 13:42 #3618 triip: 那么1和2是这样的吗?1. #property indicator_buffers 2 extern int rsi_p = 14; extern int MA_Period=20; extern int MA_Shift=0; extern int MA_Method=0; extern int NumberOfBarsToCalculate = 10000; double Buffer0[]; double Buffer1[]; double Ma[]; double RSi[]; int init() { IndicatorBuffers(4); SetIndexBuffer(0,Buffer0); SetIndexBuffer(1,Buffer1); SetIndexBuffer(2,Ma); SetIndexBuffer(3,RSi); return(0); } [/CODE] 2. [CODE]int start() { int shift; double rsi = 0; for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){ RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift); } for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){ Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift); Buffer0[shift] = RSi[shift]; Buffer1[shift] = Ma[shift]; } return(0); } 是的,你也可以这样做 当你需要时,只需比较RSi和MA的缓冲区,你就能看到它们的相对位置。 Triip 2014.10.07 14:06 #3619 mladen: 是的,你也可以这样做,当你需要时,只需比较RSi和MA的缓冲区,你就可以看到它们的相对位置。 很好,非常感谢mladen learning 2014.10.07 18:07 #3620 mladen: apprentice coder 这里有一个指标有这样的排序过程(它是对2维数组进行排序):spearman_rank_correlation_nmc.mq4 mladen 有没有c/c++做同样事情的例子? 1...355356357358359360361362363364365366367368369...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
伙计们,我需要一点帮助来编码RSI和SMA的关系。
正如你在图片上看到的,有信号(向上-向下箭头),但其中一些是假信号。所以我决定用RSI14和SMA20来消除虚假信号。
这背后的逻辑很简单,如果RSI14高于SMA20,就应该出现上升箭头。如果RSI低于SMA20,则应出现向下箭头。
我已经把一些上升箭头标错了,因为RSI太高了,但这部分我可以自己编码。
我已经找到了很多RSI<MA交叉的代码,但其中大多数在出现交叉时做多/做空。但我需要一个RSI高于或低于的术语,然后做一些事情。
目前我已经发现,我必须使用IRSI和数组,但我自己无法将这些代码放在一起。三角
你是否检查过这里发布的代码:https://www.mql5.com/en/forum/general
triip 你检查过这里发布的信息吗:https://www.mql5.com/en/forum/general
是的,但我所发现的都是交叉信号。我需要RSI高于/低于SMA的条件。
我的理解是,首先我必须声明什么是ABOVE,什么是BELOW,然后我可以在IF句中使用它们。
三合板
你是否检查过这里张贴的那张 :https://www.mql5.com/en/forum/174476是的,但我所找到的都是交叉信号。我需要RSI在SMA之上/之下的条件。
我的理解是,首先我必须声明什么是ABOVE,什么是BELOW,然后我可以在IF句中使用它们。
是的,但我所找到的都是交叉信号。我需要RSI高于/低于SMA的条件。 我的理解是,首先我必须声明什么是ABOVE,什么是BELOW,然后我可以在IF句中使用它们。
三联单
我不知道你用什么rsi来获得你图片上的那些信号,所以......这就是我所能知道的。没有代码就不能提供更多帮助
triip 不知道你用什么RSI来获得你图片上的那些信号,所以......我只能说这些。如果没有代码,我无法提供更多帮助
对不起,我没有提到箭头信号不是来自RSI,它是我使用的另一个代码。但我看到,RSI与SMA将有助于避免错误的信号。这就是为什么我想编辑信号代码,使它也能识别RSI条件。
我所需要的是。
箭头信号进来了,但所有这些信号都不是真正的信号。所以在箭头出现之前,必须有另一个if检查 来控制RSI条件。
如果(我目前的代码&&RSI高于/低于SMA)。
{ 显示箭头
}
我需要那个红色部分。
对不起,我没有提到箭头信号不是来自RSI,这是我使用的另一个代码。但我看到RSI和SMA有助于避免错误信号。这就是为什么我喜欢编辑信号代码,使它也能识别RSI条件。
我所需要的是。
箭头信号进来了,但它们都不是真正的信号。因此,如果箭头出现,那么必须有另一个if检查,控制RSI条件。
如果(我目前的代码&&RSI高于/低于SMA)。
{ 显示箭头
}
我需要那个红色部分。triip
你必须做以下工作。
1.将RSI的值保存到一个缓冲器中
2.2.使用iMAOnArray()来计算该RSI值的SMA。
3.将保存的RSI值与iMAOnArray()的计算值进行比较,这就是你的条件。
3.
你必须做到以下几点。
1.将RSI的值保存到一个缓冲器中
2.使用iMAOnArray()计算该RSI值的SMA。
3.比较保存的RSI值和iMAOnArray()的计算值,这就是你的条件。那么,1和2是这样的吗?
1.
extern int rsi_p = 14;
extern int MA_Period=20;
extern int MA_Shift=0;
extern int MA_Method=0;
extern int NumberOfBarsToCalculate = 10000;
double Buffer0[];
double Buffer1[];
double Ma[];
double RSi[];
int init()
{
IndicatorBuffers(4);
SetIndexBuffer(0,Buffer0);
SetIndexBuffer(1,Buffer1);
SetIndexBuffer(2,Ma);
SetIndexBuffer(3,RSi);
return(0);
}
[/CODE]
2.
[CODE]int start() {
int shift;
double rsi = 0;
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);
}
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);
Buffer0[shift] = RSi[shift];
Buffer1[shift] = Ma[shift];
}
return(0);
}
那么1和2是这样的吗?
1.
extern int rsi_p = 14;
extern int MA_Period=20;
extern int MA_Shift=0;
extern int MA_Method=0;
extern int NumberOfBarsToCalculate = 10000;
double Buffer0[];
double Buffer1[];
double Ma[];
double RSi[];
int init()
{
IndicatorBuffers(4);
SetIndexBuffer(0,Buffer0);
SetIndexBuffer(1,Buffer1);
SetIndexBuffer(2,Ma);
SetIndexBuffer(3,RSi);
return(0);
}
[/CODE]
2.
[CODE]int start() {
int shift;
double rsi = 0;
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);
}
for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){
Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);
Buffer0[shift] = RSi[shift];
Buffer1[shift] = Ma[shift];
}
return(0);
}
是的,你也可以这样做
当你需要时,只需比较RSi和MA的缓冲区,你就能看到它们的相对位置。
是的,你也可以这样做,当你需要时,只需比较RSi和MA的缓冲区,你就可以看到它们的相对位置。
很好,非常感谢mladen![](https://c.mql5.com/forextsd/smiles/smile.png)
apprentice coder 这里有一个指标有这样的排序过程(它是对2维数组进行排序):spearman_rank_correlation_nmc.mq4
mladen
有没有c/c++做同样事情的例子?