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

 
Konnj:
Как насчет типа диаграммы Ticket?
Вы имеете в виду тип заказа?
 
RaptorUK:

Вы сначала выбрали правильный заказ?

Я не уверен, как его выбрать!


Также ... . Объект DeleteAll() ленив, не используйте его. ...

Я работаю над этим.


Разве я не сказал это уже дважды?

Да, это так. Мне жаль. :(
 
RaptorUK:
Вы имеете в виду тип заказа?


Правильно.
 
Konnj:

Правильно.
Хорошо, вы запутали ситуацию, когда сказали... "тип диаграмм".
 
RaptorUK:

Вы сначала выбрали правильный заказ?


Как я могу это сделать?
 
Konnj:

Как я могу это сделать, пожалуйста?

Вы уже сделали это в этом коде. . .

int CalculateCurrentOrders()
  {
                  int pos=0;

                  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++;
                       }
                    }
              
                return(pos);
  }

... просто убедитесь, что вы выбрали правильный заказ, если он существует, прежде чем пытаться использовать OrderType, или получить тип в этой функции.

 

Я перепробовал все, но не могу!!!

Уважаемый RaptorUK, у вас есть мои полные коды, просто скажите мне, что мне делать, пожалуйста!

С наилучшими пожеланиями

 

Этот код должен работать. Он использует ваши определения и кодировку. Я должен предупредить вас, что вам придется поработать над ним, чтобы убедиться, что он работает правильно во ВСЕХ случаях.

Я сделал кое-что из этого (отдельно проверил OrderType OP_SELL, остальное не лучший вариант, так как есть и другие типы ордеров). Есть много вещей, которые должны быть добавлены, чтобы это был хороший инструмент. Например, сейчас он будет показывать только тип последнего ордера, если у вас их несколько, он не будет исчезать, когда нет позиций, и т.д.

Так что берите это отсюда и работайте над этим. Это будет хорошим началом для изучения MQL.

int start()
  {
   int    counted_bars=IndicatorCounted();
   int pos;
   string OrderTyp = "OT";
   string ot;
   color LabelColor;
//----
                  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) { ot="Buy";  LabelColor = DodgerBlue; }
      if (OrderType()==OP_SELL){ ot="Sell"; LabelColor = Red; }
      ObjectCreate(OrderTyp, OBJ_LABEL, 0 , 0, 0, 0);
      ObjectSet(OrderTyp, OBJPROP_CORNER, 1);
      ObjectSet(OrderTyp, OBJPROP_XDISTANCE, 10);
      ObjectSet(OrderTyp, OBJPROP_YDISTANCE, 15);
      ObjectSetText(OrderTyp, "Order Type: "+ot, 8, "Tahoma",LabelColor);
//----
   return(0);
  }
 
pro_: он будет показывать только тип последнего ордера, если у вас их несколько, он не будет исчезать, когда нет позиций и т.д.


Как вы сказали, он показывает последний тип заказа! Моя проблема в том, что! Я хочу, чтобы он показывал текущий тип ордера на графике!


Спасибо pro_

 

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

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