[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 661

 
artmedia70:

它还没有发挥作用...而恰恰是AC

在日志中捕捉到,也许重新计算是不正确的,条件永远不会起作用,如AC1=0和AC2=0,永远不会有0>0的情况。

print(AC1,AC2) ;
if (BB>0 && OsMA>0 && AC1>AC2) return(1);

 
IgorM:

在日志中捕捉到,也许重新计算是错误的,条件永远不会被满足,比如AC1=0和AC2=0,永远不会有0>0。

print(AC1,AC2) ;
如果(BB>0 && OsMA>0 && AC1>AC2)返回(1)。

下面。

否则返回(0)。

 

谢谢你,伊戈尔。我认为那是狗被埋葬的地方...:)

我让Comment()输出同样的AC1和AC2=0.01,尽管在数据窗口 中它们的AC1=0.001008,AC2=0.001020。
我如何增加数字容量?那么,除了微不足道的乘以1000之外,还是这样吗?

 
IgorM:

是的,所以我将尝试而--那是直到第一个尖峰,然后........。- 我搞不清楚。


完成了。这里是其工作的结果。

代码并不复杂,所以你重新安排它以满足你的需要应该没有问题。

脚本附在帖子后面。

附加的文件:
0.mq4  4 kb
 

这样的条目是否正确。

double AC1=NormalizeDouble(iAC(sy,tf,1),8);
 
artmedia70:

到目前为止,它还没有发挥作用...而且是空调。

唯一的出路是找出变量中的确切数值--这将告诉我们为什么编程的条件不能工作。

如果四舍五入自动达到0.01,那么很可能在UsdJpy这样的工具上通过测试。然后有一个选项可以通过字符串变量来工作(如果你真的需要这么遥远的小数位)。

 
drknn:
唯一的出路是找出变量中的确切数值--这将告诉我们为什么编程的条件不能工作。
谢谢你,弗拉基米尔,我已经找到了原因。上面两个帖子的问题...
 
drknn:


完成了。这是他工作的结果。


谢谢,这很好--它起作用了,我只是不知道如何输入趋势标志--我以为这就像对数组进行排序 一样。
 
artmedia70:

这样的条目是否正确。


正确,因为第一个参数返回一个数字,第二个参数是一个可接受范围内的整数值。整个问题是究竟什么会进入变量。试着按原样打印,并尝试这种结构。

double AC1=NormalizeDouble(iAC(sy,tf,1),8);
string str=AC1;
Print("str = ",str);
 
IgorM:

谢谢,这很好--它起作用了,我只是不知道如何输入趋势标志--我以为我需要对阵列进行排序


与数组打交道的麻烦在于,一旦函数遇到一个给它的值,它就会返回存储这个值的单元格的编号。而这个值可以在数组的其他单元格中找到,这正是棘手的地方。所以我们必须不断地迭代,不断地翻阅这些数值,直到我们翻阅完整个数组。一旦我们遇到合适的值,我们就把单元格索引放入先前创建的数组中,或者把这些行拼接起来。

你的问题的复杂性在于,你必须寻找高峰/低谷。为了找到它,你需要跳过极值,只有这样,代码才会意识到它实际上已经跳过了。这就是为什么我们必须回溯一步,记住极点和它所在的细胞。