测试 "CopyTicks"。 - 页 4 1234567891011...47 新评论 zimbabve15 2016.02.08 13:23 #31 CopyTicks ////////////////////////////////////////////////////////////////////////////////////////////////////////// MqlTick tick_array[]; int OnInit() { int copied=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,countHistoryTicks); if(Save_File!=NOT_SAVE) { SaveTicksToFile(tick_array); } return(INIT_SUCCEEDED); } 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)," ",IntegerToString(massiveTicks[i].flags,_Digits)); FileWrite(file_handle,file_buffer); i++; } FileClose(file_handle); } SymbolInfoTick //////////////////////////////////////////////////////////////////////// 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); if(ArrayResize(g_ticks,total+1,1000)<0) { Alert(": индикатору не хватает памяти для сохранения данных об очередном тике."); } else { g_ticks[total]=tick; UpTick[rates_total-1]=total; } if(total>999) { SaveTempTicks(); ArrayFree(g_ticks); } return(rates_total); } void SaveTempTicks() { // Создание файла тиковой истории int hTicksFile=FileOpen(Symbol()+"fullTicks.tks",FILE_BIN|FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE); if(hTicksFile<1) return; FileSeek(hTicksFile,0,SEEK_END); // Запись файла int total=ArraySize(g_ticks),i=0; while(i<total) { if(FileWriteStruct(hTicksFile,g_ticks[i])==0) { Print("Ошибка сохранения данных во временный файл..."); return; } i++; } FileClose(hTicksFile); } 附加的文件: My_TicksCollector_010216_FullMqlTick.mq5 5 kb BearAndBullsPower_TesterHistory_020216.mq5 9 kb Vladimir Karputov 2016.02.08 13:32 #32 尽可能地创造一个简短的例子,清楚地证明问题。理想情况下,所有的处理都在一个文件中。 zimbabve15 2016.02.08 14:37 #33 zimbabve15 2016.02.08 14:42 #34 在调试器中,我看的是数值。 通过SymbolInfoTick(Symbol(),last_tick)获得last_tick。tick_array通过CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1)。都是实时的,ticks是一样的,flag是不同的。我还没有设法用这种方式抓住数量的差异,它不像旗帜的差异那么频繁。 至少让我们给它们下个定义。 Vladimir Karputov 2016.02.08 14:45 #35 zimbabve15:在调试器中,我看的是数值。 通过SymbolInfoTick(Symbol(),last_tick)获得last_tick。tick_array通过CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1)。都是实时的,ticks是一样的,flag是不同的。我还没有设法用这种方式抓住数量的差异,它不像旗帜的差异那么频繁。 至少让我们给它们下个定义。 为了定义它,我们需要一个例子文件。 zimbabve15 2016.02.08 15:05 #36 ED-3.16.txt - 经纪人通过CopyTicks开业第二个文件同一经纪人通过SymbolInfoTick(Symbol(),last_tick)。 附加的文件: ED-3.16.txt 707 kb zimbabve15 2016.02.08 15:06 #37 通过SymbolInfoTick(Symbol(),last_tick)的第二个文件同一经纪人。 附加的文件: ED-3.16fullTicks.txt 680 kb Vladimir Karputov 2016.02.08 15:14 #38 告诉我,我怎样才能把*.txt文件装入MetaEditor?如果有问题,尽可能使例子简单化--一个文件。 [删除] 2016.02.08 15:33 #39 Karputov Vladimir: 告诉我,我怎样才能把*.txt文件装入MetaEditor?如果有问题,尽可能使例子简单化--一个文件。 其实这不是问题,换个扩展名,MetaEditor就能吃下它。你最好问一下程序的源代码文件,因为这个日志是由它获得的。 Vladimir Karputov 2016.02.08 15:40 #40 Alexey Kozitsyn: 没问题,换个扩展名,MetaEditor就会把它吃掉。你最好要求提供产生该日志的程序的源代码文件。 所以我已经要求两页:给出最短的例子(我澄清一下,以防万一,"例子 "是*.mq5文件,数量为1件--这只是一个),说明问题。 1234567891011...47 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在调试器中,我看的是数值。
通过SymbolInfoTick(Symbol(),last_tick)获得last_tick。
tick_array通过CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1)。
都是实时的,ticks是一样的,flag是不同的。我还没有设法用这种方式抓住数量的差异,它不像旗帜的差异那么频繁。
至少让我们给它们下个定义。
在调试器中,我看的是数值。
通过SymbolInfoTick(Symbol(),last_tick)获得last_tick。
tick_array通过CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1)。
都是实时的,ticks是一样的,flag是不同的。我还没有设法用这种方式抓住数量的差异,它不像旗帜的差异那么频繁。
至少让我们给它们下个定义。
ED-3.16.txt - 经纪人通过CopyTicks开业
第二个文件同一经纪人通过SymbolInfoTick(Symbol(),last_tick)。
告诉我,我怎样才能把*.txt文件装入MetaEditor?如果有问题,尽可能使例子简单化--一个文件。
没问题,换个扩展名,MetaEditor就会把它吃掉。你最好要求提供产生该日志的程序的源代码文件。