编码帮助 - 页 170 1...163164165166167168169170171172173174175176177...786 新评论 fareastol 2013.10.15 21:03 #1691 是的......我不知道我是多么的心不在焉。感谢你的及时建议,TB_TotalCount和VACount的数字变得正确且绝对合理。但我寻找VA高/低的目标仍有问题,我的电脑在这部分的编码中又崩溃了。现在又想知道为什么。 非常感谢Mladen!你的建议让我在整个白夜之后有了部分笑容 fareastol 2013.10.16 00:00 #1692 嗨,Mladen。 我只是想告诉大家,我终于解决了我的其他问题。我正在努力改进它。 虽然你在这种情况下给我的帮助很少,但我发现这有时是教那些站在自己脚下学习的人的最好方法。 我从心底里感谢你,Mladen ! 祝你未来的日子愉快。 衷心感谢 Mladen Rakic 2013.10.16 03:29 #1693 zilliq: 嗨,Mladen。我成功地使用了相对和绝对动量 非常感谢你的帮助,现在我需要对RSX的动量进行平滑处理。 Zilliq Ps: 如果它能帮助别人的话。 //收盘时的相对动量 ind1= close-close[1]。 // 绝对动量 ind2=abs(ind1) ind3=wilderAverage[rs](ind1) ind4=wilderAverage[rs](ind2) ind3=(50*(ind3+ind4))/ind4 返回 ind3 as "RSI",0, 30, 70, 100 Zilliq 请看这个帖子:https://www.mql5.com/en/forum/178733/page36 你有一个例子,可以在那里完成(平滑)。 zilliq 2013.10.16 05:00 #1694 谢谢Mladen,我会看到的 祝你今天愉快,感谢你的帮助和工作 Zilliq zilliq 2013.10.16 05:20 #1695 好吧,如果我已经很好地理解了你的指标rsi smoother 2,你只是通过函数 ismooth改变了更大的平均值。 而你 "平滑 "了相对和绝对动量。 我对Hull平均数也做了同样的处理,但结果与你在我的图片上看到的不一样。 你知道为什么吗,还是我搞错了? 谢谢 Mladen 代码RSI14和RSImoother 45 //收盘时的相对动量 ind1=收盘价-收盘价[1] //绝对动量 ind2=abs(ind1) //用赫尔平均法平滑相对动量 v =(2*加权平均[round(rs/2)](ind1))-加权平均[rs](ind1) ind3 = weightedAverage[Round(Sqrt(rs))](v) //用Hull平均值平滑绝对动量 v2 =(2*加权平均[round(rs/2)](ind2))-加权平均[rs](ind2) ind4 = weightedAverage[Round(Sqrt(rs))](v2) ind5=(50*(ind3+ind4))/ind4 返回ind5为 "RSI平滑"。 我用T3 Tillson代替了两者的野生平均数(相对动量和绝对动量),但问题相同 附加的文件: cac_40_index_1.png 37 kb cac_40_index_2.png 47 kb Coding help Mladen Rakic 2013.10.16 05:59 #1696 这只是使用不同平滑方法 的结果。不同的平滑方法会产生不同的结果 如果你想得到与rsi主题中发布的rsi相媲美的结果,你必须使用该指标中使用的那种平滑法。 zilliq 2013.10.16 06:04 #1697 谢谢Mladen的回答 很奇怪,相对动量和绝对动量的平滑函数给出了这样的结果,而Hull平均数和T3则有些夸张。 您能否用数学公式解释一下(如果可能的话),MT4的平滑函数 是如何工作的,以获得一个与RSI相当的平滑RSI,请您解释一下,我将在之后编码。 非常感谢,祝你有一个愉快的一天 Zilliq 你的MT4代码和我的解释。 //相对动量 double mom = iMA(NULL,0,1,0,MODE_SMA, Price,i)-iMA(NULL,0,1,0,MODE_SMA,Price,i+1)。 //绝对动量 double moa = MathAbs(mom); //用 "ismooth函数 "平滑相对动量 double tmom = iSmooth(mom,Length,SmoothSpeed,i,0); //用 "ismooth函数 "平滑绝对动量 double tmoa = iSmooth(moa,Length,SmoothSpeed,i,1); if (tmoa != 0) //和比率50*(RM+AM)(AM) rsi = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00)。 否则rsi = 50; Coding help 非滞后工具 精英指标 :) Mladen Rakic 2013.10.16 06:28 #1698 Zilliq 你在那个指标里有它的源代码。只要把它转换为prorealtime zilliq 2013.10.16 07:40 #1699 哎哟,对我来说,解释等效函数 并不容易 (与PRT相比,MT4是如此复杂)。 我试着把MT4的代码翻译成数学代码,然后在PRT上编码。 请您在我在PRT上编码之前,确认我对每一行下面的不同解释。 非常感谢 Mladen Zilliq double iSmooth(double price,int length, double speed, int r, int instanceNo=0) { if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1; if(r<=2) { workSmooth[r] = price; workSmooth[r] = price; workSmooth[r] = price; return(price); } // // // // // _______________________________________________________________________ 双倍β=0.45*(length-1.0)/(0.45*(length-1.0)+2.0)。 beta = 0.45*(length-1.0)/(0.45*(length-1.0)+2.0) _______________________________________________________________________ double alpha = MathPow(beta,speed); alpha = beta^speed _______________________________________________________________________ workSmooth[r] = price+alpha*(workSmooth[r-1]-price); Filt0 = price+alpha*(Filt0[1]-price); _______________________________________________________________________ workSmooth[r]=(价格-workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1]。 Filt1 = (价格-Filt0 )*(1-alpha)+alpha*Filt1[1] _______________________________________________________________________ workSmooth[r] = workSmooth[r] + workSmooth[r]; Filt2 = Filt0 + Filt1 _______________________________________________________________________ workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1] 。 Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1] _______________________________________________________________________ workSmooth[r] = workSmooth[r] + workSmooth[r-1] 。 Filt4=Filt3+Filt4[1] 。 _______________________________________________________________________ return(workSmooth[r])。 返回 Filt4 Coding help T3 如何编码? Mladen Rakic 2013.10.16 07:45 #1700 zilliq: 对我来说,解释ismooth函数并不容易 (与PRT相比,MT4是如此复杂)。我试图将MT4代码翻译成数学代码,然后在PRT上编码。 请您确认我在PRT上编码前对每行下面的不同行的解释。 非常感谢,Mladen Zilliq double iSmooth(double price,int length, double speed, int r, int instanceNo=0) { if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1; if(r<=2) { workSmooth[r] = price; workSmooth[r] = price; workSmooth[r] = price; return(price); } // // // // // _______________________________________________________________________ 双倍β=0.45*(length-1.0)/(0.45*(length-1.0)+2.0)。 beta = 0.45*(length-1.0)/(0.45*(length-1.0)+2.0) _______________________________________________________________________ double alpha = MathPow(beta,speed); alpha = beta^speed _______________________________________________________________________ workSmooth[r] = price+alpha*(workSmooth[r-1]-price); Filt0 = price+alpha*(Filt0[1]-price); _______________________________________________________________________ workSmooth[r]=(价格-workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1]。 Filt1 = (价格-Filt0 )*(1-alpha)+alpha*Filt1[1] _______________________________________________________________________ workSmooth[r] = workSmooth[r] + workSmooth[r]; Filt2 = Filt0 + Filt1 _______________________________________________________________________ workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1] 。 Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1] _______________________________________________________________________ workSmooth[r] = workSmooth[r] + workSmooth[r-1] 。 Filt4=Filt3+Filt4[1] 。 _______________________________________________________________________ return(workSmooth[r])。 返回 Filt4 在我看来,应该是这样的,但请记住,我从未使用过prorealtime。 1...163164165166167168169170171172173174175176177...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的......我不知道我是多么的心不在焉。感谢你的及时建议,TB_TotalCount和VACount的数字变得正确且绝对合理。但我寻找VA高/低的目标仍有问题,我的电脑在这部分的编码中又崩溃了。现在又想知道为什么。
非常感谢Mladen!你的建议让我在整个白夜之后有了部分笑容
嗨,Mladen。
我只是想告诉大家,我终于解决了我的其他问题。我正在努力改进它。
虽然你在这种情况下给我的帮助很少,但我发现这有时是教那些站在自己脚下学习的人的最好方法。
我从心底里感谢你,Mladen !
祝你未来的日子愉快。
衷心感谢
嗨,Mladen。
我成功地使用了相对和绝对动量
非常感谢你的帮助,现在我需要对RSX的动量进行平滑处理。
Zilliq
Ps: 如果它能帮助别人的话。
//收盘时的相对动量
ind1= close-close[1]。
// 绝对动量
ind2=abs(ind1)
ind3=wilderAverage[rs](ind1)
ind4=wilderAverage[rs](ind2)
ind3=(50*(ind3+ind4))/ind4
返回 ind3 as "RSI",0, 30, 70, 100Zilliq
请看这个帖子:https://www.mql5.com/en/forum/178733/page36
你有一个例子,可以在那里完成(平滑)。
谢谢Mladen,我会看到的
祝你今天愉快,感谢你的帮助和工作
Zilliq
好吧,如果我已经很好地理解了你的指标rsi smoother 2,你只是通过函数 ismooth改变了更大的平均值。
而你 "平滑 "了相对和绝对动量。
我对Hull平均数也做了同样的处理,但结果与你在我的图片上看到的不一样。
你知道为什么吗,还是我搞错了?
谢谢 Mladen
代码RSI14和RSImoother 45
//收盘时的相对动量
ind1=收盘价-收盘价[1]
//绝对动量
ind2=abs(ind1)
//用赫尔平均法平滑相对动量
v =(2*加权平均[round(rs/2)](ind1))-加权平均[rs](ind1)
ind3 = weightedAverage[Round(Sqrt(rs))](v)
//用Hull平均值平滑绝对动量
v2 =(2*加权平均[round(rs/2)](ind2))-加权平均[rs](ind2)
ind4 = weightedAverage[Round(Sqrt(rs))](v2)
ind5=(50*(ind3+ind4))/ind4
返回ind5为 "RSI平滑"。
我用T3 Tillson代替了两者的野生平均数(相对动量和绝对动量),但问题相同
这只是使用不同平滑方法 的结果。不同的平滑方法会产生不同的结果
如果你想得到与rsi主题中发布的rsi相媲美的结果,你必须使用该指标中使用的那种平滑法。
谢谢Mladen的回答
很奇怪,相对动量和绝对动量的平滑函数给出了这样的结果,而Hull平均数和T3则有些夸张。
您能否用数学公式解释一下(如果可能的话),MT4的平滑函数 是如何工作的,以获得一个与RSI相当的平滑RSI,请您解释一下,我将在之后编码。
非常感谢,祝你有一个愉快的一天
Zilliq
你的MT4代码和我的解释。
//相对动量
double mom = iMA(NULL,0,1,0,MODE_SMA, Price,i)-iMA(NULL,0,1,0,MODE_SMA,Price,i+1)。
//绝对动量
double moa = MathAbs(mom);
//用 "ismooth函数 "平滑相对动量
double tmom = iSmooth(mom,Length,SmoothSpeed,i,0);
//用 "ismooth函数 "平滑绝对动量
double tmoa = iSmooth(moa,Length,SmoothSpeed,i,1);
if (tmoa != 0)
//和比率50*(RM+AM)(AM)
rsi = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00)。
否则rsi = 50;
Zilliq
你在那个指标里有它的源代码。只要把它转换为prorealtime
哎哟,对我来说,解释等效函数 并不容易 (与PRT相比,MT4是如此复杂)。
我试着把MT4的代码翻译成数学代码,然后在PRT上编码。
请您在我在PRT上编码之前,确认我对每一行下面的不同解释。
非常感谢 Mladen
Zilliq
double iSmooth(double price,int length, double speed, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1;
if(r<=2) { workSmooth[r] = price; workSmooth[r] = price; workSmooth[r] = price; return(price); }
//
//
//
//
//
_______________________________________________________________________
双倍β=0.45*(length-1.0)/(0.45*(length-1.0)+2.0)。
beta = 0.45*(length-1.0)/(0.45*(length-1.0)+2.0)
_______________________________________________________________________
double alpha = MathPow(beta,speed);
alpha = beta^speed
_______________________________________________________________________
workSmooth[r] = price+alpha*(workSmooth[r-1]-price);
Filt0 = price+alpha*(Filt0[1]-price);
_______________________________________________________________________
workSmooth[r]=(价格-workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1]。
Filt1 = (价格-Filt0 )*(1-alpha)+alpha*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r];
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1] 。
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1] 。
Filt4=Filt3+Filt4[1] 。
_______________________________________________________________________
return(workSmooth[r])。
返回 Filt4
对我来说,解释ismooth函数并不容易 (与PRT相比,MT4是如此复杂)。
我试图将MT4代码翻译成数学代码,然后在PRT上编码。
请您确认我在PRT上编码前对每行下面的不同行的解释。
非常感谢,Mladen
Zilliq
double iSmooth(double price,int length, double speed, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1;
if(r<=2) { workSmooth[r] = price; workSmooth[r] = price; workSmooth[r] = price; return(price); }
//
//
//
//
//
_______________________________________________________________________
双倍β=0.45*(length-1.0)/(0.45*(length-1.0)+2.0)。
beta = 0.45*(length-1.0)/(0.45*(length-1.0)+2.0)
_______________________________________________________________________
double alpha = MathPow(beta,speed);
alpha = beta^speed
_______________________________________________________________________
workSmooth[r] = price+alpha*(workSmooth[r-1]-price);
Filt0 = price+alpha*(Filt0[1]-price);
_______________________________________________________________________
workSmooth[r]=(价格-workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1]。
Filt1 = (价格-Filt0 )*(1-alpha)+alpha*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r];
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1] 。
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1] 。
Filt4=Filt3+Filt4[1] 。
_______________________________________________________________________
return(workSmooth[r])。
返回 Filt4在我看来,应该是这样的,但请记住,我从未使用过prorealtime。