Как показать тип ордера (продажа/покупка) на графике? - страница 3

 
pro_:

Если это работает для вас - прекрасно. Я рад. Но я считаю, что любой индикатор должен быть максимально универсальным, а не подходить только для какой-то конкретной ситуации. Сделай один раз, но сделай это правильно, чтобы, если тебе нужно будет что-то изменить или ситуация изменится с точки зрения твоих позиций, он работал правильно.

В любом случае, всегда пожалуйста.

Это не сработает, если вы создадите объект, а затем попытаетесь создать его снова на следующем тике, это не сработает. . так что если первый ордер - Buy, а второй - Sell, текст не будет обновлен с Buy на Sell.
 
Как я уже говорил, в коде очень много ошибок. Я надеялся, что спрашивающий поработает над этим сам и поймет кодировку немного лучше. Но, похоже, это не его намерение. И, к сожалению, у меня нет времени писать код для него. Я просто дал ему что-то для начала работы, а не готовый продукт.
 
RaptorUK:
Это не сработает, если вы создадите объект, а затем попытаетесь создать его снова на следующем тике, это не сработает. . так что если первый ордер - Buy, а второй - Sell, текст не будет обновлен с Buy на Sell.


Он работает, но просто показывает последний ордер. Я не знаю, как изменить его для текущего ордера!
 

Я не знаю, хорошая это практика или нет, но я создаю метки в 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