测试 "CopyTicks"。 - 页 40 1...333435363738394041424344454647 新评论 fxsaber 2017.11.02 21:02 #391 Copytix不能把现有的勾去掉struct MQLTICK { uchar Data[sizeof(MqlTick)]; }; union UNION { MQLTICK Tick1; MqlTick Tick2; UNION() { ArrayInitialize(this.Tick1.Data, 1); } }; #define TOSTRING(A) #A + " = " + (string)(A) void OnStart() { const string Name = "A1234"; if (CustomSymbolCreate(Name) || SymbolInfoInteger(Name, SYMBOL_CUSTOM)) { UNION Union; MqlTick Ticks[] = {{0}}; Ticks[0] = Union.Tick2; Ticks[0].time = TimeCurrent(); Ticks[0].time_msc = Ticks[0].time * 1000; Print(TOSTRING(CustomTicksReplace(Name, Ticks[0].time_msc, Ticks[0].time_msc, Ticks))); // Тик записали без проблем MqlTick Ticks2[]; SymbolSelect(Name, true); // Прочесть тик не можем Print(TOSTRING(CopyTicksRange(Name, Ticks2))); Print(TOSTRING(CopyTicks(Name, Ticks2))); SymbolSelect(Name, false); CustomSymbolDelete(Name); } }结果CustomTicksReplace(Name,Ticks[0].time_msc,Ticks[0].time_msc,Ticks) = 1 CopyTicksRange(Name,Ticks2) = 0 CopyTicks(Name,Ticks2) = 0 fxsaber 2017.11.02 21:11 #392 Copytix改变了原始数据struct MQLTICK { uchar Data[sizeof(MqlTick)]; }; union UNION { MQLTICK Tick1; MqlTick Tick2; UNION() { ArrayInitialize(this.Tick1.Data, 1); } }; #define TOSTRING(A) #A + " = " + (string)(A) void OnStart() { const string Name = "A1234"; if (CustomSymbolCreate(Name) || SymbolInfoInteger(Name, SYMBOL_CUSTOM)) { UNION Union; MqlTick Ticks[] = {{0}}; Ticks[0] = Union.Tick2; Ticks[0].time = 0; Ticks[0].time_msc = 0; Print(TOSTRING(Ticks[0].ask)); Print(TOSTRING(CustomTicksReplace(Name, Ticks[0].time_msc, Ticks[0].time_msc, Ticks))); MqlTick Ticks2[]; SymbolSelect(Name, true); // Прочесть тик не можем Print(TOSTRING(CopyTicksRange(Name, Ticks2))); Print(TOSTRING(Ticks2[0].ask)); SymbolSelect(Name, false); CustomSymbolDelete(Name); } }结果Ticks[0].ask = 7.748604185489348 e-304 CustomTicksReplace(Name,Ticks[0].time_msc,Ticks[0].time_msc,Ticks) = 1 CopyTicksRange(Name,Ticks2) = 1 Ticks2[0].ask = 0.0 fxsaber 2017.11.14 07:08 #393 为什么会产生不必要的抽搐?脚本输出了过多的刻度线string GetTickFlag( uint tickflag ) { string flag = ""; #define TICKFLAG_MACRO(A) flag += ((bool)(tickflag & TICK_FLAG_##A)) ? " TICK_FLAG_" + #A : ""; TICKFLAG_MACRO(BID) TICKFLAG_MACRO(ASK) TICKFLAG_MACRO(LAST) TICKFLAG_MACRO(VOLUME) TICKFLAG_MACRO(BUY) TICKFLAG_MACRO(SELL) #undef TICKFLAG_MACRO if (flag == "") flag = " FLAG_UNKNOWN (" + (string)tickflag + ")"; return(flag); } #define TOSTRING(A) " " + #A + " = " + (string)Tick.A string TickToString( const MqlTick &Tick ) { return(TOSTRING(time) + "." + (string)IntegerToString(Tick.time_msc %1000, 3, '0') + TOSTRING(bid) + TOSTRING(ask) + TOSTRING(last)+ TOSTRING(volume) + GetTickFlag(Tick.flags)); } struct MQLTICK : public MqlTick { bool operator ==( const MqlTick &Tick ) const { return((!Tick.ask || (Tick.ask == this.ask)) && (!Tick.bid || (Tick.bid == this.bid))); } void operator =( const MqlTick &Tick ) { this.ask = Tick.ask ? Tick.ask : this.ask; this.bid = Tick.bid ? Tick.bid : this.bid; } }; void OnStart() { MqlTick Ticks[]; const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, 0, 1 e4); MQLTICK Tick = {0}; for (int i = 0; i < Amount; i++) if (Tick == Ticks[i]) Print(TickToString(Ticks[i])); else Tick = Ticks[i]; }EURUSD Metaquotes-Demo的结果 time = 2017.11.14 02:27:14.352 bid = 1.16679 ask = 1.16682 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 02:29:11.325 bid = 1.16685 ask = 1.16687 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 03:04:02.402 bid = 1.16715 ask = 1.16717 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 03:41:09.453 bid = 1.16707 ask = 1.1671 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 03:42:53.101 bid = 1.16718 ask = 1.16721 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 04:51:22.072 bid = 1.16719 ask = 1.16721 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 04:53:55.649 bid = 1.16714 ask = 1.16717 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 04:56:12.254 bid = 1.16713 ask = 1.16716 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 04:57:12.497 bid = 1.16713 ask = 1.16716 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 04:58:28.934 bid = 1.16719 ask = 1.16722 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 05:18:44.717 bid = 1.16728 ask = 1.16731 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 05:25:39.559 bid = 1.16725 ask = 1.16728 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 05:27:54.243 bid = 1.16718 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 05:29:38.909 bid = 1.16718 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 05:31:40.868 bid = 1.16719 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 05:38:29.393 bid = 1.16709 ask = 1.16712 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 05:39:29.429 bid = 1.16709 ask = 1.16712 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 05:47:36.539 bid = 1.16718 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 06:19:44.287 bid = 1.16726 ask = 1.16729 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 06:21:11.941 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 06:22:22.686 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 06:23:11.019 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 06:23:24.926 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 06:24:22.060 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 06:24:26.871 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 06:25:26.704 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 06:25:27.401 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 06:42:16.087 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 06:44:00.557 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 06:44:36.362 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 06:45:00.577 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 06:51:36.472 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 06:52:37.091 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 06:53:38.025 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 06:56:11.389 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 07:03:22.022 bid = 1.16708 ask = 1.16711 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 07:08:35.305 bid = 1.16718 ask = 1.16721 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 07:24:15.039 bid = 1.16755 ask = 1.16758 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 07:27:16.339 bid = 1.16751 ask = 1.16754 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 07:39:26.342 bid = 1.16739 ask = 1.16742 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 07:43:33.909 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 07:45:25.462 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 07:47:05.824 bid = 1.16741 ask = 1.16744 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 07:48:19.985 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 07:49:57.642 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 07:52:39.036 bid = 1.16738 ask = 1.16741 last = 0.0 volume = 0 TICK_FLAG_ASK time = 2017.11.14 08:04:47.750 bid = 1.16739 ask = 1.16741 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 08:23:23.778 bid = 1.16705 ask = 1.16707 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK time = 2017.11.14 08:28:22.233 bid = 1.16706 ask = 1.16708 last = 0.0 volume = 0 TICK_FLAG_BID time = 2017.11.14 08:28:37.245 bid = 1.16706 ask = 1.16708 last = 0.0 volume = 0 TICK_FLAG_ASK fxsaber 2017.11.14 08:33 #394 在COPY_TICKS_ALL模式下,Copitix业余地填写了零出价/报价字段。void OnStart() { MqlTick Ticks[]; const int Amount = CopyTicks(_Symbol, Ticks); ArrayPrint(Ticks); }[1986] 2017.11.14 10:12:11 1.16873 1.16873 0.0000 0 1510654331879 6 [1987] 2017.11.14 10:12:12 1.16871 1.16873 0.0000 0 1510654332026 2 [1988] 2017.11.14 10:12:12 1.16871 1.16871 0.0000 0 1510654332947 4 [1989] 2017.11.14 10:12:16 1.16869 1.16870 0.0000 0 1510654336930 6 [1990] 2017.11.14 10:12:17 1.16867 1.16868 0.0000 0 1510654337028 6 [1991] 2017.11.14 10:12:20 1.16866 1.16868 0.0000 0 1510654340943 2 [1992] 2017.11.14 10:12:22 1.16868 1.16869 0.0000 0 1510654342728 6 [1993] 2017.11.14 10:12:22 1.16868 1.16870 0.0000 0 1510654342834 4 [1994] 2017.11.14 10:12:22 1.16868 1.16869 0.0000 0 1510654342954 4 [1995] 2017.11.14 10:12:23 1.16867 1.16869 0.0000 0 1510654343339 2 [1996] 2017.11.14 10:12:27 1.16867 1.16868 0.0000 0 1510654347042 4 [1997] 2017.11.14 10:12:31 1.16867 1.16869 0.0000 0 1510654351428 4 [1998] 2017.11.14 10:12:31 1.16868 1.16869 0.0000 0 1510654351832 2 [1999] 2017.11.14 10:12:31 1.16869 1.16871 0.0000 0 1510654351942 6 这是为了什么?在INFO模式下,这种行为很方便,但在ALL模式下,你要等待获得原始数据,而且只有GUI显示。如果价格没有变化,则为空。就目前而言,旗帜 似乎是一个不必要的实体。而不是显示空价格,通过这个标志增加MqlTick-structure。tkc是否只存储(没有空价格)旗帜,只存储(没有旗帜)价格,还是说旗帜和价格都在那里是不合理的?而为什么要引入国旗呢?TICK_FLAG_VOLUME – тик изменил объем数量是否有变化,完全不重要。或者我有什么误解吗?特别是对于自定义字符,需要ZS Raw ALL数据,因为它直接关系到通过自定义字符的数据交换渠道问题。 Sergey Chalyshev 2017.11.14 10:46 #395 fxsaber:在COPY_TICKS_ALL模式下,Copitix业余地填写了零出价/报价字段。 它是为了什么而做的?在INFO模式下,这种行为是有用的,但在ALL模式下,我们在等待原始数据,但它们只在GUI中显示。如果价格没有变化,则为空。就目前而言,旗帜 似乎是一个不必要的实体。而不是显示空价格,通过这个标志增加MqlTick-structure。tkc是否只存储(没有空价格)旗帜,只存储(没有旗帜)价格,还是说旗帜和价格都在那里是不合理的?而为什么要引入国旗呢?数量是否有变化,完全不重要。或者我有什么误解吗?SZY Raw ALL数据特别需要定制字符,因为它直接解决了通过定制字符的数据交换渠道问题。你是否就你所发现的缺点写信给Servicedeck?感觉这一切都将被浪费。还有,为什么会有国旗?TICK_FLAG_VOLUME - 嘀嗒声改变了音量。我认为这是一个非常重要的指标。否则我们怎么能知道交易已经执行了,而不是仅仅改变了,移动了投标要求? fxsaber 2017.11.14 11:03 #396 Sergey Chalyshev: 你是否就你发现的任何缺陷写信给服务台?可持续发展部对所有的要求作出迅速的回应。在那里进行了进一步的讨论。我认为这是一个非常重要的指标。否则你怎么知道交易已经完成,而不仅仅是出价和要价发生了变化?只有国旗就够了。TICK_FLAG_LAST - 该刻度线已经改变了最后一笔交易的价格。 通过将其改为 "交易通过"。事实上,最后的价格改变了--没有人关心。可能连续有几笔价格和数量完全相同的交易。因此,应该只有一个旗子--交易。 Dmitriy Skub 2017.11.14 11:14 #397 TICK_FLAG_VOLUME - 滴答改变的体积不知何故,以前没有想到帮助中写的是什么。 它所改变的量是什么?上面写的到底是什么意思?) Sergey Chalyshev 2017.11.14 11:22 #398 fxsaber:工作人员代表对所有的请求都会迅速作出回应。在那里进行了进一步的讨论。所需的只是一面旗帜。 通过将其改为 "交易通过"。价格发生变化的事实对任何人来说都无关紧要。可能连续有几笔价格和数量完全相同的交易。因此,应该只有一个旗子--交易。如果它是有反应的,那就好了。至于旗帜。我也有这样的想法,在专家顾问中分析情况,结合匹配交易,这就有点够了。这种情况--交换时间、服务器时间和计算机时间 不一致。我怎么知道MarketClosed,如果有一笔交易,即使是最后的价格,也意味着交易正在进行中。而如果你把所有的交易合并在一个级别上,就不清楚这个级别是什么时候交易的?P.S. 额外的旗帜并不影响传输的旗帜数量。 fxsaber 2017.11.14 11:26 #399 Sergey Chalyshev: 如果它有反应,那就好了。关于旗帜。我也有这样的想法,在用于形势分析的EA中,把重合的交易结合起来,这就够了。这种情况--交换时间、服务器时间、计算机时间不一致。我怎么知道MarketClosed,如果有一笔交易,即使是最后的价格,也意味着交易正在进行中。而如果你把所有的交易合并在一个级别上,就会不清楚这个级别被交易了多长时间?为什么要在一个层面上合并?我不会合并,而让丝带保持现在的样子--来自交换的东西。P.S. 不必要的旗帜不会影响传送旗帜的数量。 标志是强制测量的,因为MQ不返回原始数据。他们在CopyTicks里面修改它们。 fxsaber 2017.11.17 06:45 #400 tkc文件是按月划分的。因为这个问题而产生的问题如果终端还没有上传tick数据,当你调用CopyTicks时,终端如何知道要提取哪些kc文件?CopyTicksRange是基于CopyTicks还是独立实现的?我的理解是否正确,例如,通过CopyTicksRange获取9月份的ticks,总是比通过CopyTicks要快,因为CopyTicks不知道通过输入参数,它应该获取哪个月份的数据?我们需要尽快将历史数据纳入指标。可以通过CopyTicksRange查询,得到一个反弹为-1,直到所有的东西都下载完毕。而如果你按月申请:本月,然后是上月,等等。它不会更慢,但指标将准备好工作,至少有一些历史。对吗? 1...333435363738394041424344454647 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
结果
Copytix改变了原始数据
结果
为什么会产生不必要的抽搐?
脚本输出了过多的刻度线
EURUSD Metaquotes-Demo的结果
在COPY_TICKS_ALL模式下,Copitix业余地填写了零出价/报价字段。
这是为了什么?在INFO模式下,这种行为很方便,但在ALL模式下,你要等待获得原始数据,而且只有GUI显示。
如果价格没有变化,则为空。就目前而言,旗帜 似乎是一个不必要的实体。而不是显示空价格,通过这个标志增加MqlTick-structure。
tkc是否只存储(没有空价格)旗帜,只存储(没有旗帜)价格,还是说旗帜和价格都在那里是不合理的?
而为什么要引入国旗呢?
数量是否有变化,完全不重要。或者我有什么误解吗?
特别是对于自定义字符,需要ZS Raw ALL数据,因为它直接关系到通过自定义字符的数据交换渠道问题。
在COPY_TICKS_ALL模式下,Copitix业余地填写了零出价/报价字段。
它是为了什么而做的?在INFO模式下,这种行为是有用的,但在ALL模式下,我们在等待原始数据,但它们只在GUI中显示。
如果价格没有变化,则为空。就目前而言,旗帜 似乎是一个不必要的实体。而不是显示空价格,通过这个标志增加MqlTick-structure。
tkc是否只存储(没有空价格)旗帜,只存储(没有旗帜)价格,还是说旗帜和价格都在那里是不合理的?
而为什么要引入国旗呢?
数量是否有变化,完全不重要。或者我有什么误解吗?
SZY Raw ALL数据特别需要定制字符,因为它直接解决了通过定制字符的数据交换渠道问题。
你是否就你所发现的缺点写信给Servicedeck?
感觉这一切都将被浪费。
还有,为什么会有国旗?
我认为这是一个非常重要的指标。否则我们怎么能知道交易已经执行了,而不是仅仅改变了,移动了投标要求?
你是否就你发现的任何缺陷写信给服务台?
可持续发展部对所有的要求作出迅速的回应。在那里进行了进一步的讨论。
我认为这是一个非常重要的指标。否则你怎么知道交易已经完成,而不仅仅是出价和要价发生了变化?
只有国旗就够了。
TICK_FLAG_VOLUME - 滴答改变的体积
不知何故,以前没有想到帮助中写的是什么。
它所改变的量是什么?上面写的到底是什么意思?)
工作人员代表对所有的请求都会迅速作出回应。在那里进行了进一步的讨论。
所需的只是一面旗帜。
通过将其改为 "交易通过"。价格发生变化的事实对任何人来说都无关紧要。可能连续有几笔价格和数量完全相同的交易。因此,应该只有一个旗子--交易。如果它是有反应的,那就好了。
至于旗帜。
我也有这样的想法,在专家顾问中分析情况,结合匹配交易,这就有点够了。
这种情况--交换时间、服务器时间和计算机时间 不一致。我怎么知道MarketClosed,如果有一笔交易,即使是最后的价格,也意味着交易正在进行中。
而如果你把所有的交易合并在一个级别上,就不清楚这个级别是什么时候交易的?
P.S. 额外的旗帜并不影响传输的旗帜数量。
如果它有反应,那就好了。
关于旗帜。
我也有这样的想法,在用于形势分析的EA中,把重合的交易结合起来,这就够了。
这种情况--交换时间、服务器时间、计算机时间不一致。我怎么知道MarketClosed,如果有一笔交易,即使是最后的价格,也意味着交易正在进行中。
而如果你把所有的交易合并在一个级别上,就会不清楚这个级别被交易了多长时间?
为什么要在一个层面上合并?我不会合并,而让丝带保持现在的样子--来自交换的东西。
tkc文件是按月划分的。因为这个问题而产生的问题