如何在图表上显示订单类型(卖出/买入)? - 页 3

 
pro_:

如果它对你有用--很好。我很高兴。但我的观点是,任何指标都应该尽可能的通用,而不是只对某些特定情况有好处。你只做一次,但要做得正确,这样,如果你需要改变一些东西,或者情况在你的头寸方面发生变化,它就能正确地工作。

总之,欢迎你的到来。

这是不可能的,你创建了对象,然后试图在下一次勾选时再次创建它,这将会失败。...所以,如果第一个订单是买入,第二个订单是卖出,文本不会从买入更新为卖出。
 
正如我之前所说,代码中存在很多错误。我希望提问者能自己解决这个问题,并对编码有更多的了解。这似乎不是他的意图。而且不幸的是,我没有时间为他写代码。我只是给了他一些东西让他开始工作,而不是一个成品
 
RaptorUK:
这是不可能的,你创建了对象,然后试图在下一次打勾时再次创建它,这将会失败。...所以,如果第一个订单是买入,第二个订单是卖出,文本不会从买入更新为卖出。


它可以工作,但只显示最后一个订单。我不知道如何为当前的订单改变它!
 

我不知道这是否是好的做法,但我在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;
 

哦,在deinit()中

for(int x=1;x<=10;x++)
 {
 ObjectDelete("Message"+x) ;   
 }
 
Konnj:

它可以工作,但只显示最后的订单。我不知道如何改变它为当前的订单!
发布你的最新代码.. .
 
{
   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);
}
 
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);
}
 
它现在正在工作,非常感谢。
 

请不要发表与这个非常老的主题无关的询问。

我已经重新张贴了你的询问

https://forum.mql4.com/72256