实时的提基 - 页 5 123456789101112...26 新评论 prostotrader 2020.01.30 15:00 #41 Aleksey Mavrin: 蜱虫不能同时拥有一个以上的标志吗? 你是对的,我做到了。 //+------------------------------------------------------------------+ //| Ticks_test.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- bool is_book; MqlTick ticks[]; ulong last_time, mem_cnt; bool is_first; int t_cnt, result; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_book = MarketBookAdd(Symbol()); result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, 0, 1); if(result > 0) { last_time = ulong(ticks[0].time_msc); is_first = true; } else { is_first = false; Alert("No start time!"); return(INIT_FAILED); } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| возвращает строковое описание тика | //+------------------------------------------------------------------+ string GetTickDescription(MqlTick &tick) { string res = string(tick.time) + "." + string(tick.time_msc%1000); // bool buy_tick=((tick.flags&TICK_FLAG_BUY)==TICK_FLAG_BUY); bool sell_tick=((tick.flags&TICK_FLAG_SELL)==TICK_FLAG_SELL); bool ask_tick=((tick.flags&TICK_FLAG_ASK)==TICK_FLAG_ASK); bool bid_tick=((tick.flags&TICK_FLAG_BID)==TICK_FLAG_BID); bool last_tick=((tick.flags&TICK_FLAG_LAST)==TICK_FLAG_LAST); bool volume_tick=((tick.flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME); // if((buy_tick== true) || (sell_tick == true)) { res = res + (buy_tick?StringFormat(" Buy Tick: Last=%G Volume=%d ",tick.last,tick.volume):""); res = res + (sell_tick?StringFormat(" Sell Tick: Last=%G Volume=%d ",tick.last,tick.volume):""); res = res + (ask_tick?StringFormat(" Ask=%G ",tick.ask):""); res = res + (bid_tick?StringFormat(" Bid=%G ",tick.ask):""); } else { res = res + (ask_tick?StringFormat(" Ask=%G ",tick.ask):""); res = res + (bid_tick?StringFormat(" Bid=%G ",tick.ask):""); res = res + (last_tick?StringFormat(" Last=%G ",tick.last):""); res = res + (volume_tick?StringFormat(" Volume=%d ",tick.volume):""); } return res; } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ //void OnTick() void OnBookEvent(const string &symbol) { if(Symbol() == symbol) { if(is_first == true) { result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, last_time, 0); if(result > 0) { Print("First packet of ticks:"); t_cnt = 0; for(int i= 0; i<result; i++) { if(ticks[i].time_msc == ticks[0].time_msc) t_cnt++; Print(GetTickDescription(ticks[i])); } is_first = false; last_time = ulong(ticks[0].time_msc); } } else { result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, last_time, 0); if(result > 0) { if(result > t_cnt) { mem_cnt = t_cnt; t_cnt = 0; for(int i= 0; i<(result - int(mem_cnt)); i++) { if(ticks[i].time_msc == ticks[0].time_msc) t_cnt++; Print(GetTickDescription(ticks[i])); } if(last_time == ulong(ticks[0].time_msc)) { t_cnt += int(mem_cnt); } else last_time = ulong(ticks[0].time_msc + 1); } else { t_cnt = 0; last_time++; } } else { t_cnt = 0; last_time++; } } } } //+------------------------------------------------------------------+ 我已经展示了所有标记收集器的原理,你可以随意使用这段代码(提取所有标记)。 prostotrader 2020.01.30 15:01 #42 Aleksey Mavrin: 但这是否意味着可以保证你能处理所有的OnBookEvent事件? 手段 Andrey Khatimlianskii 2020.01.30 15:31 #43 prostotrader: 重复进行 OnBookEvent()恰恰是新 一批蜱虫到来的保证! 你有一个股票代号。 OnTick确切地说是指一个tick的到来,而你可以通过CopyTicks获得整个包。 此外,你可以从任何地方(甚至从图表事件)获得它们。OnBookEvent有自己的目的,你不必把它捅到你想或不想的地方。 嫖 娼者。 从参考资料来看。 发放率。 终端在缓存中为每个字符存储了4096个最后的刻度,以便快速访问(对于堆栈运行 的字符,65536个刻度),对这些数据的查询 是最快的。 结束语:---- 如果你不能得到足够的4K最后的刻度,那么通过各种方式订阅堆栈。但我无法想象哪里会需要这样做(除了第一次运行)。 Andrey Khatimlianskii 2020.01.30 15:33 #44 prostotrader: 手段 是的,如果你只想得到一个勾选历史,你根本不必收集这些事件的队列并处理它们。 prostotrader 2020.01.30 15:34 #45 Andrey Khatimlianskii: 你有一个股票代号。 OnTick确切地说是指一个tick的到来,你可以通过CopyTicks获得整个包。 更重要的是,你可以从任何地方(甚至从图表事件)获得它们。OnBookEvent有自己的用途,你不必把它捅到你想或不想的地方。 如果你没有足够的4K最后一击,那么当然要订阅tumblr。但我无法想象哪里可能需要它(除了第一次运行外)。 安德鲁! 该主题被称为"实时蜱虫"。 没有必要100次指出,可以通过计时器或其他东西上的OnTick()事件来接收ticks。 Andrey Khatimlianskii 2020.01.30 15:35 #46 prostotrader: 安德烈! 该主题被称为"实时蜱虫"。 没有必要指出100次,你可以通过定时器上的OnTick()事件或其他什么东西来获得ticks。 正是如此!而OnBookEvent与OnTimer的主题有相同的相关性 prostotrader 2020.01.30 15:37 #47 Andrey Khatimlianskii: 正是如此!而OnBookEvent和OnTimer一样,与主题有很大关系。 今年在一个股票工具上运行 //+------------------------------------------------------------------+ //| Ticks_test.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- bool is_book; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_book = MarketBookAdd(Symbol()); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { Print(__FUNCTION__ + " Tick is done!"); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if(Symbol() == symbol) { Print(__FUNCTION__ + " Tick is done!"); } } //+------------------------------------------------------------------+ Andrey Khatimlianskii 2020.01.30 15:45 #48 prostotrader: 今年在股票工具上推出 谢谢,我知道它是如何工作的。 试想一下,可能有一种与你不同的交易方法。 prostotrader 2020.01.30 15:48 #49 Andrey Khatimlianskii: 谢谢你,我知道它是如何工作的。 试想一下,可能有一种与你不同的交易方法。 安德烈(恕我直言)。 你为什么要 "乱来"? 或者说,你不知道实时获取和从历史中获取的区别 吗? 而这与另一种交易方式有什么关系呢? 每个人都 按照自己的想法进行交易和编写机器人! 由以下人员添加 不喜欢我的 实时获取蜱虫的版本? 然后发布你的 版本! 那么让我们来看看不同的方法... Andrey Khatimlianskii 2020.01.30 16:05 #50 prostotrader: 安德烈(恕 我直言) 你为什么要 "乱来"? 或者说,你不知道实时获取和从历史中获取的区别 吗? 而这与另一种交易方式有什么关系呢? 每个人都 按照自己的想法进行交易和编写机器人! 由以下人员添加 不喜欢我的 实时获取蜱虫的版本? 然后发布你的 版本! 那么让我们来看看不同的方法... 在你的代码中用 OnTick替换OnBookEvent,并比较结果。 123456789101112...26 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
蜱虫不能同时拥有一个以上的标志吗?
你是对的,我做到了。
我已经展示了所有标记收集器的原理,你可以随意使用这段代码(提取所有标记)。但这是否意味着可以保证你能处理所有的OnBookEvent事件?
手段
重复进行
OnBookEvent()恰恰是新 一批蜱虫到来的保证!
你有一个股票代号。
OnTick确切地说是指一个tick的到来,而你可以通过CopyTicks获得整个包。
此外,你可以从任何地方(甚至从图表事件)获得它们。OnBookEvent有自己的目的,你不必把它捅到你想或不想的地方。
从参考资料来看。
发放率。 终端在缓存中为每个字符存储了4096个最后的刻度,以便快速访问(对于堆栈运行 的字符,65536个刻度),对这些数据的查询 是最快的。
结束语:----
如果你不能得到足够的4K最后的刻度,那么通过各种方式订阅堆栈。但我无法想象哪里会需要这样做(除了第一次运行)。
手段
是的,如果你只想得到一个勾选历史,你根本不必收集这些事件的队列并处理它们。
你有一个股票代号。
OnTick确切地说是指一个tick的到来,你可以通过CopyTicks获得整个包。
更重要的是,你可以从任何地方(甚至从图表事件)获得它们。OnBookEvent有自己的用途,你不必把它捅到你想或不想的地方。
如果你没有足够的4K最后一击,那么当然要订阅tumblr。但我无法想象哪里可能需要它(除了第一次运行外)。
安德鲁!
该主题被称为"实时蜱虫"。
没有必要100次指出,可以通过计时器或其他东西上的OnTick()事件来接收ticks。
安德烈!
该主题被称为"实时蜱虫"。
没有必要指出100次,你可以通过定时器上的OnTick()事件或其他什么东西来获得ticks。
正是如此!而OnBookEvent与OnTimer的主题有相同的相关性
正是如此!而OnBookEvent和OnTimer一样,与主题有很大关系。
今年在一个股票工具上运行
今年在股票工具上推出
谢谢,我知道它是如何工作的。
试想一下,可能有一种与你不同的交易方法。
谢谢你,我知道它是如何工作的。
试想一下,可能有一种与你不同的交易方法。
安德烈(恕我直言)。
你为什么要 "乱来"?
或者说,你不知道实时获取和从历史中获取的区别 吗?
而这与另一种交易方式有什么关系呢?
每个人都 按照自己的想法进行交易和编写机器人!
由以下人员添加
不喜欢我的 实时获取蜱虫的版本?
然后发布你的 版本!
那么让我们来看看不同的方法...
安德烈(恕 我直言)
你为什么要 "乱来"?
或者说,你不知道实时获取和从历史中获取的区别 吗?
而这与另一种交易方式有什么关系呢?
每个人都 按照自己的想法进行交易和编写机器人!
由以下人员添加
不喜欢我的 实时获取蜱虫的版本?
然后发布你的 版本!
那么让我们来看看不同的方法...
在你的代码中用 OnTick替换OnBookEvent,并比较结果。