谁能给解决一下新的分形产生时数组如何及时更新?

 
分形指标在MT4里是内置指标 函数是: 上分形:iFractals(NULL,0,MODE_UPPER,shift) 下分形:iFractals( NULL,0,MODE_LOWER,shift) 根据这个函数,我定义了两个数组: double upper_fractal[3]; double down_fractal[3]; 可以得到: 上分形的值 upper_fractal[0]=? upper_fractal[1]=? upper_fractal[2]=? 和下分形的值 down_fractal[0]=? down_fractal[1]=? down_fractal[2]=? 代码如下: double upper_fractal[3]; double down_fractal[3]; { for(int l=0;l0) { if(n>2) { break; } upper_fractal[n]=iFractals(NULL,0,MODE_UPPER,l); n++; } for(int x=0;x0) { if(m>2) { break; } down_fractal[m]=iFractals(NULL,0,MODE_LOWER,x); m++; } } return(0); } } 在实际的应用中却又出现了问题,每到市场数据发生变化,产生新的上分形和新的下分形的时候,好像这几个数组的值没有及时更新,于是就出现了错误,或者成交一次以后市场价格变化了就不再成交,或者不能成交,或者显示invalid Value of TakeProfit之类的问题(因为我的止损、止盈是和upper_fractal[ ]、down_fractal[ ]相关的)。 我查阅了很多资料,是不是因为占用内存缓存,MT4的数组是存在内存缓存里的,不能及时更新。 难道必须用C语言方案写一个外部链接文件存储和调用数组么? 谁能给解决一下新的分形产生时数组如何及时更新?
 
peiyingxuan:
分形指标在MT4里是内置指标 函数是: 上分形:iFractals(NULL,0,MODE_UPPER,shift) 下分形:iFractals( NULL,0,MODE_LOWER,shift) 根据这个函数,我定义了两个数组: double upper_fractal[3]; double down_fractal[3]; 可以得到: 上分形的值 upper_fractal[0]=? upper_fractal[1]=? upper_fractal[2]=? 和下分形的值 down_fractal[0]=? down_fractal[1]=? down_fractal[2]=? 代码如下: double upper_fractal[3]; double down_fractal[3]; { for(int l=0;l0) { if(n>2) { break; } upper_fractal[n]=iFractals(NULL,0,MODE_UPPER,l); n++; } for(int x=0;x0) { if(m>2) { break; } down_fractal[m]=iFractals(NULL,0,MODE_LOWER,x); m++; } } return(0); } } 在实际的应用中却又出现了问题,每到市场数据发生变化,产生新的上分形和新的下分形的时候,好像这几个数组的值没有及时更新,于是就出现了错误,或者成交一次以后市场价格变化了就不再成交,或者不能成交,或者显示invalid Value of TakeProfit之类的问题(因为我的止损、止盈是和upper_fractal[ ]、down_fractal[ ]相关的)。 我查阅了很多资料,是不是因为占用内存缓存,MT4的数组是存在内存缓存里的,不能及时更新。 难道必须用C语言方案写一个外部链接文件存储和调用数组么? 谁能给解决一下新的分形产生时数组如何及时更新?

指标要在OnCalculate下面取值,EA的话要在OnTick下面取值。这样就能及时实时更新数值了。

另外还要注意你代码执行的顺序,要在取值之后再做条件判断是否下单。

 
Leon Lam:

指标要在OnCalculate下面取值,EA的话要在OnTick下面取值。这样就能及时实时更新数值了。

另外还要注意你代码执行的顺序,要在取值之后再做条件判断是否下单。


谢谢了,试一下

 
peiyingxuan:

谢谢了,试一下


还是

没有解决a

原因: