测试 "CopyTicks"。 - 页 3

 

我不是在测试,我是在提醒开发者。实践表明,它永远不会是多余的))。

至于交易方向--在福尔茨,它总是由交易所给出的。

目前在终端使用的算法不适合这样做 - 你必须从交易所获取信息。

 
Dmitriy Skub:

我不是在测试,我是在提醒开发者。实践表明,它永远不会是多余的))。

关于交易方向--在堡垒上总是由交易所提供。

现在在终端使用的算法并不适合于此--我们必须从交易所获取信息。

只是有几个关于copyticks(和mqltickinfo)的主题以 "waiting "结束。

下面是另一个例子。

https://www.mql5.com/ru/forum/61607


所以真的,"等待"。:-)

CopyTicks на медленном рынке
CopyTicks на медленном рынке
  • www.mql5.com
На нём видно, что после получения первых 10 тиков после запуска терминала, CopyTicks перестаёт работать:. - - Категория: автоматические торговые системы
 
现在1210版本中的CopyTicks()是什么情况?
 
Михаил:
而现在,在1210版本中,CopyTicks()是怎么做的?
一切都很好:滴答的故事
 
Михаил:
而现在,在1210版本中,CopyTicks()的情况如何?

几乎有效。没有重复的。卷宗没有丢失。

但是,旌旗灯号的交易方向是缺失的。买入价/卖出价的计算方式并没有给予适当的保真度。

实际结构是旧的,与帮助中描述的不同。因此,我理解这是一个中级建设。因此,我们一如既往地等待着下一次))。

 
Dmitriy Skub:

它几乎是有效的。没有重复的。卷宗没有丢失。

但是,旌旗灯号的交易方向是缺失的。买入价/卖出价的计算方式并没有给予适当的保真度。

真正的结构是旧的,与帮助中描述的结构不同。因此,我理解这是一个中级建设。因此,我们一如既往地等待着下一次))。

谢谢
 

关于交易、自动交易系统和测试交易策略的论坛

淘宝网

zimbabve15, 2016.02.03 06:15

经纪人 "开盘 "工具ED-3.16左表--tick数据由指标在OnCalculate程序中通过SymbolInfoTick请求写入,右表--通过CopyTicks。两者的结构:时间、出价、要价、翻牌、成交量、时间_msec、标志。

为什么同样的蜱虫有不同的体积和标志?

如果我们通过SymbolInfoTick接收来自经纪商的零标志的原始数据,那么看起来终端处理传入的tick并根据与前一个tick的比较给它分配一个标志?如何处理这些卷宗?差异是显著的。


关于交易、自动交易系统和策略测试的论坛

淘宝网

zimbabve15, 2016.02.03 06:39

FiboFroup经纪商通过SymbolInfoTick的 左侧刻度表,通过CopyTicks的右侧表格两者的结构:时间、买入、卖出、行权、成交量、时间_msec、标志。

标志是不同的,因为在相同的刻度中的买入/卖出值,以不同的方式书写。


 
zimbabve15:


在没有任何代码的情况下发布 "床单 "是一种流行病吗?
 

抄袭

//////////////////////////////////////////////////////////////////////////////////////////////////////////

MqlTick tick_array[];

int OnInit()
{
int copied=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,countHistoryTicks) 。
如果(Save_File!=NOT_SAVE)
{
SaveTicksToFile(tick_array)。
}
return(INIT_SUCCEED)。

}


void SaveTicksToFile(MqlTick &massiveTicks[] )

{

string filename,file_buffer。

StringConcatenate(filename,Symbol(),".txt")。

int file_handle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ)。

FileSeek(file_handle,0,SEEK_END)。

int sizeMassiveTicks=ArraySize(massiveTicks)。

int i=0。

while(i<sizeMassiveTicks)

{

StringConcatenate(file_buffer,TimeToString(massiveTicks[i].time,TIME_DATE|TIME_SECONDS)," ",DoubleToString(massiveTicks[i].bid,_Digits)," ",DoubleToString(massiveTicks[i].ask,_Digits)," ",DoubleToString(massiveTicks[i].last,_Digits)," ",IntegerToString(massiveTicks[i].volume,_Digits)," ",IntegerToString(massiveTicks[i].time_msc))。

FileWrite(file_handle,file_buffer)。

i++;

}

FileClose(file_handle)。

}

符号InfoTick

////////////////////////////////////////////////////////////////////////

int OnCalculate(const int rates_total,

const int prev_calculated,

const datetime &time[]。

const double &open[],

const double &high[],

const double &low[],

const double &close[],

const long &tick_volume[],

const long &volume[]。

const int &spread[])

{

MqlTick last_tick;

SymbolInfoTick(Symbol(),last_tick)。


TickStruct tick={0,0,0,0,0,0,0};

tick.time=TimeCurrent()。

tick.bid=last_tick.bid。

tick.ask=last_tick.ask。

tick.flag=last_tick.flags。

tick.last=last_tick.last。

tick.time_msc=last_tick.time_msc。

tick.volume=last_tick.volume。

int total=ArraySize(g_ticks);

如果(ArrayResize(g_ticks,total+1,1000)<0)

{

警报(":指标没有足够的内存来保存下一个tick数据;)

}

否则

{

g_ticks[total]=tick。

UpTick[rate_total-1]=total。

}

if(total>999)

{

SaveTempTicks()。

ArrayFree(g_ticks)。

}

return(rate_total)。

}

空白的SaveTempTicks()

{

// 创建滴答历史 文件

int hTicksFile=FileOpen(Symbol()+"fullTicks.tks", FILE_BIN|FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE);

如果(hTicksFile<1)

返回。

FileSeek(hTicksFile,0,SEEK_END)。

// 文件记录

int total=ArraySize(g_ticks),i=0;

while(i<total)

{

如果(FileWriteStruct(hTicksFile,g_ticks[i])==0)

{

Print("保存数据到临时文件失败...")。

返回。

}

i++;

}

FileClose(hTicksFile)。

}

 
请纠正你的帖子(在论坛中正确插入代码)。如果你除了在信息中附上代码外,还能附上文件本身(*.mq5)就更好了。