波动性质量指数 - 页 61

 
samirmfs:

大家好,我的朋友 ,你能不能给我一个指标,它的名字是Volaritility qualtity nrs - alerts et arrows,但格式是mq4而不是ex4,谢谢你。你的朋友萨米尔

萨米尔

你是否在寻找一个这样的:https://www.mql5.com/en/forum/general 或者这个:https://www.mql5.com/en/forum/general

 

从来不知道托马斯-斯特里德曼发明了它

 

亲爱的Mladen,

希望您能帮助我们解决所附的vq ea的问题。

我附上一张图片,显示了发生的情况。ea/指标/设置也附在rar文件中。该指标不是 "nrp "版本,但在 "稳定 "模式下,我看到它不会重绘(如果不是,请让我知道 ),它是一个多时间框架版本。该策略涉及在1Mtf上使用EA,但在5Mtf上使用EA indi参数;这是可能的,因为所附的指标允许这种模式(它是一个MTF)。我只对EA做了一个修改,增加了 "稳定 "模式,使EA能够根据指标以这种方式工作。我不是一个程序员。这个解决方案(即:允许EA在1Mtf中工作,但在EA参数中加入5Mtf:"稳定 "模式)似乎比让EA直接在5Mtf中工作更好,因为它使提前匹配回调成为可能,并以1Mtf的剥头皮方式,最终以更积极的结果打开/关闭交易。问题是,如附图所示(也在rar.文件中),EA有时不跟随指标(我在 "稳定 "模式下重复),所以可能发生延迟交易或不打开,或如附图所示不合逻辑地打开相反的交易,如indi 。请您帮助我们解决这个问题好吗?在视觉/手动模式下,该指标给出了很多好的信号(在1Mtf和5Mtf参数下)。非常感谢您的时间。

vq_indiea.rar

附加的文件:
 
vitoingletto:
亲爱的Mladen,

希望你能帮助我们解决所附的关于VQ EA的问题。

我附上了一张图片,显示了所发生的情况。ea/指标/设置也附在rar文件中。该指标不是 "nrp "版本,但在 "稳定 "模式下,我看到它不会重绘(如果不是,请让我知道 ),它是一个多时间框架版本。该策略涉及在1Mtf上使用EA,但在5Mtf上使用EA indi参数;这是可能的,因为所附的指标允许这种模式(它是一个MTF)。我只对EA做了一个修改,增加了 "稳定 "模式,使EA能够根据指标以这种方式工作。我不是一个程序员。这个解决方案(即:允许EA在1Mtf中工作,但在EA参数中加入5Mtf:"稳定 "模式)似乎比让EA直接在5Mtf中工作更好,因为它使提前匹配回调成为可能,并以1Mtf的剥头皮方式,最终以更积极的结果打开/关闭交易。问题是,如附图所示(也在rar.文件中),EA有时不跟随指标(我重复 "稳定 "模式),所以可能发生延迟交易或不开仓,或如附图所示不合逻辑地开出相反的交易,如indi 。请您帮助我们解决这个问题好吗?在视觉/手动模式下,该指标给出了很多好的信号(在1Mtf和5Mtf参数下)。非常感谢你的时间。

vq_indiea.rar

在你的EA中,你正在寻找最后的信号(可能是很久以前发生的)。首先,请尝试只使用两个值:一个是当前方向,一个是先前方向(缓冲区6)。当当前柱状图的值与前一个柱状图相比发生变化时,那么你就有了一个信号。如果方向是1,那么就是买入信号,如果方向是-1,那么就是卖出信号。

________________

PS:不需要在EA中循环寻找方向的值。只需用指数1表示第一个闭合柱,用指数2表示第二个闭合柱(以便在闭合柱的基础上进行信号操作)

 

亲爱的Mladen,谢谢你的快速回答。对不起,我不是一个程序员,但如果你能以我的水平更容易理解的方式建议我在元编辑器上应该做什么,我会自己尝试去做。很抱歉,我甚至不知道你说的 "缓冲区 "是什么意思 。再次感谢。

mladen:
在你的EA中,你正在寻找最后的信号(可能发生在很久之前)。首先,请尝试只使用两个值:一个是当前方向,一个是先前方向(缓冲区6)。当当前柱状图的值与前一个柱状图相比发生变化时,那么你就有了一个信号。如果方向是1,那么就是买入信号,如果方向是-1,那么就是卖出信号。

________________

PS:不需要在EA中循环寻找方向的值。只需用指数1表示第一个闭合柱,用指数2表示第二个闭合柱(以便在闭合柱的基础上进行信号操作)
 
vitoingletto:
亲爱的Mladen 谢谢你的快速回答。对不起,我不是一个程序员,但如果你能以我的水平更容易理解的方式建议我在元编辑器上应该做什么,我会自己尝试去做。很抱歉,我甚至不知道你用 "缓冲区 " 。再次感谢。

vitoingletto

尝试更换这个零件。

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

if(VQ2>0&&VQ1<EMPTY_VALUE){if(Reverse)SV=1;else BV=1;break;}

if(VQ1>0&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}}

[/PHP]

With this :

[PHP] double VQCurrent =iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,1);

double VQPrevious=iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,2);

if (VQCurrent!=VQPrevious)

{

if (VQCurrent== 1) if (Reverse) SV=1; else BV=1;

if (VQCurrent==-1) if (Reverse) BV=1; else SV=1;

}

 

不幸的是,这并不奏效。它完全改变了逻辑,在1Mtf中不能像在5Mtf中那样工作,而是在1Mtf中完全不能工作。有什么建议吗? 谢谢

mladen:
vitoingletto

试试替换这部分。

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

if(VQ2>0&&VQ1<EMPTY_VALUE){if(Reverse)SV=1;else BV=1;break;}

if(VQ1>0&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}}

[/PHP]

With this :

[PHP] double VQCurrent =iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,1);

double VQPrevious=iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,2);

if (VQCurrent!=VQPrevious)

{

if (VQCurrent== 1) if (Reverse) SV=1; else BV=1;

if (VQCurrent==-1) if (Reverse) BV=1; else SV=1;

}

 
vitoingletto:
不幸的是,这并不奏效。它完全改变了逻辑,在1Mtf模式下不能像在5Mtf模式下那样工作,而是在1Mtf模式下完全不能工作。有什么建议吗?谢谢

vitoingletto

iCustom()调用的第二个参数 是时间框架参数。在多时间框架指标的情况下,最好使用该参数以使指标以正确的方式工作。如果时间框架作为iCustom()调用的第二个参数时,其值与你传递给指标的值(在指标的TimeFrame参数中)不一样,那么指标就不能在多时间框架模式下正确工作(这也是唯一可以不同的情况)。

 

另外,在原EA的这两行中,:

if(VQ2>0&&VQ10&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}

有一个部分是不需要的。VQ2>0和VQ1>0总是真的(EMPTY_VALUE 是一个正值),这两个根本就不需要进行比较。只需检查VQ1或VQ2是否不等于EMPTY_VALUE即可。

 

已完成!!!!

我改变了:

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i) 。

VQ2=iCustom(NULL,0, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i) 。

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,5, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i) 。

VQ2=iCustom(NULL,5, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i) 。

而且它还在工作。只有一个问题,在回溯测试 中,有一次在同一个柱子上开了两个头寸,时间是10分钟。

有什么建议吗? 谢谢。

mladen:
vitoingletto iCustom()调用的第二个参数是时间框架参数。在多时间框架指标的情况下,最好使用该参数以使指标以正确的方式工作。如果时间框架作为iCustom()调用的第二个参数时,其值与你传递给指标的值(在指标的TimeFrame参数中)不一样,那么指标就不能在多时间框架模式下正确工作(这也是唯一可以不同的情况)。
附加的文件:
2_position.jpg  243 kb