文章 "DoEasy. 控件(第三十一部分):滚动条控件内内容的滚动" - 页 3 1234 新评论 leonerd 2024.06.02 08:41 #21 #include <DoEasy\Engine.mqh> CEngine engine; .... int h=37,w=100; string name=prefix+"EDIT_BUY_LIMIT"; x=309; y=124; if(!EditCreate(name,x,y,w-16,h,"",clrBlack,clrWhite)) { Alert(TextByLanguage("Failed to create Edit element (创建编辑元素失败)"","Could not create Edit element \""),prefix+"EDIT_BUY_LIMIT"+", error: "+(string)GetLastError()); return false; } //+------------------------------------------------------------------+ //| 创建编辑| //+------------------------------------------------------------------+ bool EditCreate(const string name, const int x, const int y, const int w, const int h, const string text, const color clr_txt, const color clr_bg, const string font="Calibri", const int font_size=11) { if(!engine.CreateEditField(0,name,0,false,x,y,w,h,font_size,CORNER_LEFT_LOWER,ALIGN_CENTER,false)) { Print(DFUN,TextByLanguage("创建编辑元素失败!错误代码="","Could not Edit element! Error code="),GetLastError()); return false; // --- 在此返回 false } } leonerd 2024.06.07 19:52 #22 实际上,如何通过将编辑器链接到面板来创建编辑器? leonerd 2024.06.08 11:49 #23 哇,我画了面板,花了好多时间。结果发现无法创建编辑元素... Artyom Trishkin 2024.06.08 13:49 #24 leonerd #: 哇,我画了面板,花了好多时间。结果发现你无法创建编辑元素... 请给我看看你的完全可编译示例。 leonerd 2024.06.08 14:31 #25 Artyom Trishkin #: 请给我看看你的完全可编译示例。 如果没有这样的对象,还有什么可编译的。 有 GRAPH_ELEMENT_TYPE_WF_RADIOBUTTON 和许多其他对象,但没有简单的编辑对象。通过引擎方法 CreateEditField(),我最终创建了一个字段,但请告诉我如何将其绑定到面板上? CPanel *pnl=engine.CreateWFPanel("WFPanel",50,50,280,240,array_clr,200,true,true,false,-1,FRAME_STYLE_BEVEL,true,false); if(pnl!=NULL) { if(!pnl.CreateNewElement(GRAPH_ELEMENT_TYPE_WF_RADIOBUTTON,InpRbnShiftX+dist_rbtn_x*i,InpRbnShiftY,50,20,clrNONE,255,true,false)) .. } Artyom Trishkin 2024.06.08 14:57 #26 leonerd #:那么,如果没有这样的对象,还编译什么呢?有 GRAPH_ELEMENT_TYPE_WF_RADIOBUTTON 和许多其他对象,但没有简单的编辑对象。通过引擎方法 CreateEditField(),我最终创建了一个字段,但请告诉我如何将其绑定到面板上? 该库仍在开发中。图形元素只完成了不到一半。目前还没有输入字段。只有一个标准字段,而你正在尝试制作它。 当 "输入框 "对象可用时,一切就都能正常工作了。现在将标准对象绑定到表单是不现实的,因为它不会参与表单对象的事件模型。 leonerd 2024.06.09 13:06 #27 好的。 另外,这个方法不能正常工作 CArrayObj* pos_orders=engine.GetListAllOrdersByPosID(prev_pos_ticket); 它只返回最后一个订单。出于某种原因,在过滤订单时,它将这些订单视为已删除的待处理订单。 我给你提供一些信息。仓位上的第一个订单是用限制器(SELL STOP)打开的,通过更改 SL/TP 对仓位进行了多次更新。然后,我在 SL 上捕捉到了一个平仓事件。我试图找到平仓的 第一单,但上述方法无法正常工作。 CEngine engine .... if(event.TypeEvent()==TRADE_EVENT_POSITION_CLOSED_BY_SL) { ulong prev_pos_ticket=event.TicketPositionPrevious(); // 这里是正确的位置票 CArrayObj* pos_orders=engine.GetListAllOrdersByPosID(prev_pos_ticket); // 在这里,接收到的数组中只有最后一阶的位置 (sl) } Artyom Trishkin 2024.06.09 14:24 #28 leonerd 平仓的 第一单,但上述方法无法正常工作。 仓单和仓位 ID 是完全不同的东西。您需要通过仓位 ID 进行搜索,而不是通过仓位单进行搜索,因为仓位单是不断变化的,它等于产生仓位变化交易的订单的仓位单。 您应该阅读有关 MetaTrader 5 订单系统的文章或帮助....。 leonerd 2024.06.11 20:13 #29 在平仓()中,您甚至根本没有填写填充信息 在 Trading.mqh trade_obj.ClosePosition(ticket,comment,deviation) 中,trade_obj 已填入所需的内容,而进入 this.m_request.type_filling 方法则成为默认的 FOK。 Artyom Trishkin 2024.06.11 21:00 #30 leonerd ,comment,deviation) 中,trade_obj 已填入所需的内容,而进入 this.m_request.type_filling 方法则成为默认的 FOK。 我会研究一下。谢谢。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
哇,我画了面板,花了好多时间。结果发现你无法创建编辑元素...
请给我看看你的完全可编译示例。
如果没有这样的对象,还有什么可编译的。
有 GRAPH_ELEMENT_TYPE_WF_RADIOBUTTON 和许多其他对象,但没有简单的编辑对象。通过引擎方法 CreateEditField(),我最终创建了一个字段,但请告诉我如何将其绑定到面板上?
那么,如果没有这样的对象,还编译什么呢?
有 GRAPH_ELEMENT_TYPE_WF_RADIOBUTTON 和许多其他对象,但没有简单的编辑对象。通过引擎方法 CreateEditField(),我最终创建了一个字段,但请告诉我如何将其绑定到面板上?
该库仍在开发中。图形元素只完成了不到一半。目前还没有输入字段。只有一个标准字段,而你正在尝试制作它。
当 "输入框 "对象可用时,一切就都能正常工作了。现在将标准对象绑定到表单是不现实的,因为它不会参与表单对象的事件模型。
好的。
另外,这个方法不能正常工作
它只返回最后一个订单。出于某种原因,在过滤订单时,它将这些订单视为已删除的待处理订单。
我给你提供一些信息。仓位上的第一个订单是用限制器(SELL STOP)打开的,通过更改 SL/TP 对仓位进行了多次更新。然后,我在 SL 上捕捉到了一个平仓事件。我试图找到平仓的 第一单,但上述方法无法正常工作。
仓单和仓位 ID 是完全不同的东西。您需要通过仓位 ID 进行搜索,而不是通过仓位单进行搜索,因为仓位单是不断变化的,它等于产生仓位变化交易的订单的仓位单。
您应该阅读有关 MetaTrader 5 订单系统的文章或帮助....。
在平仓()中,您甚至根本没有填写填充信息
在 Trading.mqh trade_obj.ClosePosition(ticket,comment,deviation)
中,trade_obj 已填入所需的内容,而进入 this.m_request.type_filling 方法则成为默认的 FOK。
中,trade_obj 已填入所需的内容,而进入 this.m_request.type_filling 方法则成为默认的 FOK。