使用 DeletePending 按钮删除限价订单,会产生许多相同的OnChartEvent 事件,但应该有不同的事件,对吗?
或者通过批量操作删除限价订单也会产生许多相同的事件。
如果手动平仓,事件是有顺序的。
2023.03.07 14:58:31.385 TestDoEasy131 (GBPUSD.c,H1) - Pending order removed: 2023.03.07 14:57:59.055 - 2023.03.07 14:58:31.385 TestDoEasy131 (GBPUSD.c,H1) GBPUSD.c Deleted 0.10 Pending order Buy Limit #89090285 at price 1.19636, sl 1.19486, tp 1.19786, Magic number 4718715 (123), G1: 8, G2: 4 2023.03.07 14:58:31.386 TestDoEasy131 (GBPUSD.c,H1) - Pending order removed: 2023.03.07 14:57:58.395 - 2023.03.07 14:58:31.386 TestDoEasy131 (GBPUSD.c,H1) GBPUSD.c Deleted 0.10 Pending order Buy Limit #89090282 at price 1.19640, sl 1.19490, tp 1.19790, Magic number 10223739 (123), G1: 12, G2: 9 2023.03.07 14:58:31.386 TestDoEasy131 (GBPUSD.c,H1) - Pending order removed: 2023.03.07 14:58:00.613 - 2023.03.07 14:58:31.386 TestDoEasy131 (GBPUSD.c,H1) GBPUSD.c Deleted 0.10 Pending order Buy Limit #89090287 at price 1.19636, sl 1.19486, tp 1.19786, Magic number 6357115 (123), G1: 1, G2: 6 2023.03.07 14:58:31.386 TestDoEasy131 (GBPUSD.c,H1) - Pending order removed: 2023.03.07 14:57:59.669 - 2023.03.07 14:58:31.386 TestDoEasy131 (GBPUSD.c,H1) GBPUSD.c Deleted 0.10 Pending order Buy Limit #89090286 at price 1.19636, sl 1.19486, tp 1.19786, Magic number 393339 (123), G1: 6 2023.03.07 14:58:31.392 TestDoEasy131 (GBPUSD.c,H1) MAGIC = %d10223739 2023.03.07 14:58:31.392 TestDoEasy131 (GBPUSD.c,H1) 2023.03.07 14:58:30 2023.03.07 14:58:31.392 TestDoEasy131 (GBPUSD.c,H1) OnChartEvent: Pending order removed 2023.03.07 14:58:31.394 TestDoEasy131 (GBPUSD.c,H1) MAGIC = %d10223739 2023.03.07 14:58:31.394 TestDoEasy131 (GBPUSD.c,H1) 2023.03.07 14:58:30 2023.03.07 14:58:31.394 TestDoEasy131 (GBPUSD.c,H1) OnChartEvent: Pending order removed 2023.03.07 14:58:31.395 TestDoEasy131 (GBPUSD.c,H1) MAGIC = %d10223739 2023.03.07 14:58:31.395 TestDoEasy131 (GBPUSD.c,H1) 2023.03.07 14:58:30 2023.03.07 14:58:31.395 TestDoEasy131 (GBPUSD.c,H1) OnChartEvent: Pending order removed 2023.03.07 14:58:31.397 TestDoEasy131 (GBPUSD.c,H1) MAGIC = %d10223739 2023.03.07 14:58:31.397 TestDoEasy131 (GBPUSD.c,H1) 2023.03.07 14:58:30 2023.03.07 14:58:31.397 TestDoEasy131 (GBPUSD.c,H1) OnChartEvent: Pending order removed
BillionerClub OnChartEvent 事件,但应该有不同的事件。
我不明白您的意思...
或通过批量操作删除限价订单,会出现许多相同的事件
如果手动关闭,事件是连续的。
Artyom Trishkin OnChartEvent 中才会出现不同的事件。
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- 如果在测试仪中工作,则退出 //if(MQLInfoInteger(MQL_TESTER)) // return; int idx=id-CHARTEVENT_CUSTOM; //--- 从 lparam 中提取:(1) 事件时间的毫秒数;(2) 原因;(3) 事件源;(4) 设置事件的准确时间。 ushort msc=engine.EventMSC(lparam); ushort reason=engine.EventReason(lparam); ushort source=engine.EventSource(lparam); long time=::TimeCurrent()*1000+msc; //--- 处理贸易活动 if(idx>TRADE_EVENT_NO_EVENT && idx<TRADE_EVENTS_NEXT_CODE) { //--- 获取所有交易事件列表 CArrayObj *list=engine.GetListAllOrdersEvents(); if(list==NULL) return; //--- 获取事件索引相对于列表末尾的偏移量 //--- 在测试程序中,偏移量通过 lparam 参数传递给事件处理程序 //--- not in the tester - each event is sent one at a time and handled in OnChartEvent() int shift=(engine.IsTester() ? (int)lparam : 0); CEvent *event=list.At(list.Total()-1-shift);
我是这样改正的,似乎有效。
int shift=(engine.IsTester() ? (int)lparam : 0); static int NEvents =list.Total()-1-shift; CEvent *event=list.At(NEvents); NEvents++;
BillionerClub OnChartEvent 中才会出现不同的事件
你的意思是库向事件处理程序发送了错误的事件吗?
我是这样解决的,似乎有效。
Artyom Trishkin #:
你是说程序库向事件处理程序发送了错误的事件?
你是说程序库向事件处理程序发送了错误的事件?
是的,我就是这个意思,我想我已经解决了这个问题,但我不确定这个解决方案,因为我不太明白它的缺点在哪里。
int shift=(engine.IsTester() ? (int)lparam : 0); static int NEvents =list.Total()-1-shift; CEvent *event=list.At(NEvents); NEvents++; if(event==NULL) { event=list.At(list.Total()-1-shift); if(event==NULL)return; }
新文章 DoEasy 库中的其他类(第七十部分):扩展功能并自动更新图表对象集合已发布:
在本文中,我将扩展图表对象的功能,并编排图表导航、创建屏幕截图、以及为图表保存和应用模板。 此外,我还将实现图表对象集合、其窗口和其内指标的自动更新。
现在是时候来测试创建当前图表的屏幕截图了。 每次点击按钮都会创建一个特定大小的图表屏幕截图。 首次点击 — 800x600,第二次 — 750x562,第三次 — 当前图表尺寸:
创建三个不同分辨率的屏幕截图后(附有相应的日志条目),
我们还查看了保存这些屏幕截图的文件夹内容。
在创建屏幕截图之前,我将光标悬停在当前图表两个窗口的不同区域上,图表注释会显示时间、价格和子窗口的索引,以及以像素为单位的光标 X/Y 坐标。 光标 Y 坐标有两个值。 第一个值显示品种主窗口初始坐标的 Y 坐标。 第二个所示数值(括号中)显示相对于光标所在窗口上边框的 Y 坐标。
作者:Artyom Trishkin