如何在图表上显示订单类型(卖出/买入)? - 页 3 123 新评论 Simon Gniadkowski 2013.07.31 08:31 #21 pro_: 如果它对你有用--很好。我很高兴。但我的观点是,任何指标都应该尽可能的通用,而不是只对某些特定情况有好处。你只做一次,但要做得正确,这样,如果你需要改变一些东西,或者情况在你的头寸方面发生变化,它就能正确地工作。 总之,欢迎你的到来。 这是不可能的,你创建了对象,然后试图在下一次勾选时再次创建它,这将会失败。...所以,如果第一个订单是买入,第二个订单是卖出,文本不会从买入更新为卖出。 Ahmad Mehdiyev 2013.07.31 08:40 #22 正如我之前所说,代码中存在很多错误。我希望提问者能自己解决这个问题,并对编码有更多的了解。这似乎不是他的意图。而且不幸的是,我没有时间为他写代码。我只是给了他一些东西让他开始工作,而不是一个成品。 [删除] 2013.07.31 08:50 #23 RaptorUK: 这是不可能的,你创建了对象,然后试图在下一次打勾时再次创建它,这将会失败。...所以,如果第一个订单是买入,第二个订单是卖出,文本不会从买入更新为卖出。 它可以工作,但只显示最后一个订单。我不知道如何为当前的订单改变它! Keith Watford 2013.07.31 11:00 #24 我不知道这是否是好的做法,但我在init()和ObjectSetText 中创建的标签只是一个"."。 我还没有想出如何放置一个完全是空文本的标签。如果我尝试的话,就会出现 "Label "的文字。 当然这很好,只要你知道你需要多少个标签。 我想,在主体中删除多余的标签并在需要时添加新的标签,应该不会太困难。 这是我在init()中用来创建标签的代码 int y=20; for(int x=1;x<=10;x++) { ObjectCreate("Message"+x, OBJ_LABEL, 0, 0, 0);// Creating obj. ObjectSet("Message"+x, OBJPROP_CORNER, 1); // Reference corner ObjectSet("Message"+x, OBJPROP_XDISTANCE, 10);// X coordinate ObjectSet("Message"+x, OBJPROP_YDISTANCE, y);// Y coordinate ObjectSetText("Message"+x,".",8,"Arial",CLR_NONE); // Empty Labels y=y+15; Keith Watford 2013.07.31 11:02 #25 哦,在deinit()中 for(int x=1;x<=10;x++) { ObjectDelete("Message"+x) ; } Simon Gniadkowski 2013.07.31 11:41 #26 Konnj: 它可以工作,但只显示最后的订单。我不知道如何改变它为当前的订单! 发布你的最新代码.. . [删除] 2013.07.31 11:50 #27 { int counted_bars=IndicatorCounted(); int pos; string OrderTip = "OT"; string ottt; color LabelColor3; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() ) { if(OrderType()==OP_BUY) pos++; if(OrderType()==OP_SELL) pos++; } } if (OrderType()==OP_BUY) { ottt="Buy"; LabelColor3 = DodgerBlue; } if (OrderType()==OP_SELL){ ottt="Sell"; LabelColor3 = Red; } else ottt=""; ObjectCreate(OrderTip, OBJ_LABEL, 0 , 0, 0, 0); ObjectSet(OrderTip, OBJPROP_CORNER, 1); ObjectSet(OrderTip, OBJPROP_XDISTANCE, 10); ObjectSet(OrderTip, OBJPROP_YDISTANCE, 15); ObjectSetText(OrderTip, "Order Type: "+ottt, 8, "Tahoma",LabelColor3); } Simon Gniadkowski 2013.07.31 12:18 #28 Konnj: 我的意思是整个代码 .......但不要紧......试试这些变化。 { int counted_bars=IndicatorCounted(); int pos; string OrderTip = "OT"; string ottt = " "; color LabelColor3 = Black; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() ) { if (OrderType() == OP_BUY) { ottt = "Buy"; LabelColor3 = DodgerBlue; } if (OrderType() == OP_SELL){ ottt = "Sell"; LabelColor3 = Red; } } } if (ObjectFind(OrderTip) < 0) ObjectCreate(OrderTip, OBJ_LABEL, 0 , 0, 0, 0); ObjectSet(OrderTip, OBJPROP_CORNER, 1); ObjectSet(OrderTip, OBJPROP_XDISTANCE, 10); ObjectSet(OrderTip, OBJPROP_YDISTANCE, 15); ObjectSetText(OrderTip, "Order Type: "+ottt, 8, "Tahoma",LabelColor3); } [删除] 2013.07.31 12:46 #29 它现在正在工作,非常感谢。 Keith Watford 2016.04.17 11:00 #30 请不要发表与这个非常老的主题无关的询问。我已经重新张贴了你的询问https://forum.mql4.com/72256 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果它对你有用--很好。我很高兴。但我的观点是,任何指标都应该尽可能的通用,而不是只对某些特定情况有好处。你只做一次,但要做得正确,这样,如果你需要改变一些东西,或者情况在你的头寸方面发生变化,它就能正确地工作。
总之,欢迎你的到来。
这是不可能的,你创建了对象,然后试图在下一次打勾时再次创建它,这将会失败。...所以,如果第一个订单是买入,第二个订单是卖出,文本不会从买入更新为卖出。
它可以工作,但只显示最后一个订单。我不知道如何为当前的订单改变它!
我不知道这是否是好的做法,但我在init()和ObjectSetText 中创建的标签只是一个"."。
我还没有想出如何放置一个完全是空文本的标签。如果我尝试的话,就会出现 "Label "的文字。
当然这很好,只要你知道你需要多少个标签。
我想,在主体中删除多余的标签并在需要时添加新的标签,应该不会太困难。
这是我在init()中用来创建标签的代码
哦,在deinit()中
它可以工作,但只显示最后的订单。我不知道如何改变它为当前的订单!
我的意思是整个代码 .......但不要紧......试试这些变化。
请不要发表与这个非常老的主题无关的询问。
我已经重新张贴了你的询问
https://forum.mql4.com/72256