请教大家:MT4内如何获取一段时间内所有Tick的时间和值

 

大家好,我想编一个剥头皮的EA,需要获取当前Tick之前几秒或几十秒之内的所有Tick的时间和数值,放到一个Array里计算,判断短期的走势。

小弟才疏学浅,之前只会用最小M1级别的报价,虽然知道Tick报价都存在MT4里,可实在不知道从哪获取。希望大家不吝赐教,多谢!!

 
参考 SymbolInfoTick()
 

也可以用onticket 把以前的值,都存起来呀。

 
Ziheng Zhuang:
参考 SymbolInfoTick()

SymbolInfoTick()也只能读取到最后一个tick的报价和时间吧?我想要的是之前几十秒内所有tick的报价,交易频繁的时候也许有上百个报价。用SymbolInfoTick()能实现吗?


dearmite:

也可以用onticket 把以前的值,都存起来呀。

onticket是个什么函数?另外,要存起来的话,需要一个外部变量或者文件吧?在交易频繁的时候EA也会频繁读写文件,一般的电脑恐怕不够用。

MQL5里用MarketBookGet就能做到,我想知道MQL4有没有专门的函数或者命令能做到。

 

MQL4好像没有这种函数,我觉得你可以创建两个数组,一个记录每次的报价,一个记录时间,大一点,可以是1000位,然后每次报价来了就记录一下,比如你要取30秒内的每一个报价,就同时查找时间和报价数组,当时间大于30秒了就调出了,这样就能有序的取到30秒内的报价了。

代码

double bidarry[1000];

int    timearry[1000];


OnTick()

{

//记录报价

  for(int i=999;i>0;i--)

{

            bidarry[i]=bidarry[i-1];

            timearry[i]=timearry[i-1];

        }

   bidarry[0]=Bid;

   timearry[0]=TimeCurrent();

//获取近30秒的报价

double valuearry[1000];//存储想要的近期报价

for(int i=0;i<1000;i++)

     {

        if(TimeCurrent()-timearry[i]>30)

        break;

        valuearry[i]=bidarry[i];

     }

//你想在valuearry[]上做什么计算都可以了

}

 
参考 SymbolInfoTick
 
cbc_lt:

大家好,我想编一个剥头皮的EA,需要获取当前Tick之前几秒或几十秒之内的所有Tick的时间和数值,放到一个Array里计算,判断短期的走势。

小弟才疏学浅,之前只会用最小M1级别的报价,虽然知道Tick报价都存在MT4里,可实在不知道从哪获取。希望大家不吝赐教,多谢!!

请问,解决方法找到了吗?我也是同样的问题,我想要的是统计多个价格区间内的tick的次数,也就是一跳成交量,难了我好久了。希望可以和你交流,如果你的问题已经解决,希望可以分享。

原因: