Надо бы исправить ошибку в примере мат.части: Справочник MQL5 / Торговые функции / HistorySelect

 

Пример:

void OnStart()
  {
   color BuyColor =clrBlue;
   color SellColor=clrRed;
//--- request trade history
   HistorySelect(0,TimeCurrent());
//--- create objects
   string   name;
   uint     total=HistoryDealsTotal();
   ulong    ticket=0;
   double   price;
   double   profit;
   datetime time;
   string   symbol;
   long     type;
   long     entry;
//--- for all deals
   for(uint i=0;i<total;i++)
     {
      //--- try to get deals ticket
      if((ticket=HistoryDealGetTicket(i))>0)
        {
         //--- get deals properties
         price =HistoryDealGetDouble(ticket,DEAL_PRICE);
         time  =(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
         symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
         type  =HistoryDealGetInteger(ticket,DEAL_TYPE);
         entry =HistoryDealGetInteger(ticket,DEAL_ENTRY);
         profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         //--- only for current symbol
         if(price && time && symbol==Symbol())
           {
            //--- create price object
            name="TradeHistory_Deal_"+string(ticket);
            if(entry) ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,time,price,0,0);
            else      ObjectCreate(0,name,OBJ_ARROW_LEFT_PRICE,0,time,price,0,0);
            //--- set object properties
            ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0);
            ObjectSetInteger(0,name,OBJPROP_BACK,0);        
              ObjectSetInteger(0,name,OBJPROP_COLOR,type?BuyColor:SellColor);//????????????????????????????????????????????
            if(profit!=0) ObjectSetString(0,name,OBJPROP_TEXT,"Profit: "+string(profit));
           }
        }
     }
//--- apply on chart
   ChartRedraw();
}

Надо:

            ObjectSetInteger(0,name,OBJPROP_COLOR,type?SellColor:BuyColor);
 
VBAG:

Пример:

Надо:

почему?  для сделки Buy - цвет  BuyColor.
 
sergeev:
почему?  для сделки Buy - цвет  BuyColor.

Скорее всего потому, что:

POSITION_TYPE_BUY = 0

POSITION_TYPE_SELL= 1

Попробуйте пример на график бросить - всё наоборот получается.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 

да.
 

Спасибо, исправим.
 

Всем доброго дня!

Не хочу создавать новую тему, поэтому напишу здесь. Уже много лет натыкаюсь на эти ошибки в Справочнике MQL5 -> Константы, перечисления и структуры  -> Торговые константы -> Типы торговых операций (ошибки выделил жёлтым цветом). Кто-нибудь может исправить эти ошибки, как на сайте MQL5, так и в MetaEditor МТ5?

С уважением, Владимир.

Пример торговой операции TRADE_ACTION_PENDING для установки отложенного ордера:

#property description "Пример установки отложенных ордеров"
#property script_show_inputs
#define EXPERT_MAGIC 123456                             // MagicNumber эксперта
input ENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT;   // тип ордера
//+------------------------------------------------------------------+
//| Установка отложенных ордеров                                     |
//+------------------------------------------------------------------+
void OnStart()
  {
//-- объявление и инициализация запроса и результата
   MqlTradeRequest request={};
   MqlTradeResult  result={};
//--- параметры для установки отложенного ордера
   request.action   =TRADE_ACTION_PENDING;                             // тип торговой операции
   request.symbol   =Symbol();                                         // символ
   request.volume   =0.1;                                              // объем в 0.1 лот
   request.deviation=2;                                                // допустимое отклонение от цены
   request.magic    =EXPERT_MAGIC;                                     // MagicNumber ордера
   int offset = 50;                                                    // отступ от текущей цены для установки ордера, в пунктах
   double price;                                                       // цена срабатывания ордера
   double point=SymbolInfoDouble(_Symbol,SYMBOL_POINT);                // размер пункта
   int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);                // кол-во знаков после запятой (точность)
   //--- проверка типа операции
   if(orderType==ORDER_TYPE_BUY_LIMIT)
     {
      request.type     =ORDER_TYPE_BUY_LIMIT;                          // тип ордера
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;        // цена для открытия 
      request.price    =NormalizeDouble(price,digits);                 // нормализованная цена открытия 
     }
   else if(orderType==ORDER_TYPE_SELL_LIMIT)
     {
      request.type     =ORDER_TYPE_SELL_LIMIT;                          // тип ордера
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point;         // цена для открытия 
      request.price    =NormalizeDouble(price,digits);                  // нормализованная цена открытия 
     }
   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // тип ордера
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // цена для открытия 
      request.price=NormalizeDouble(price,digits);                      // нормализованная цена открытия 
     }
   else if(orderType==ORDER_TYPE_SELL_STOP)
     {
      request.type     =ORDER_TYPE_SELL_STOP;                           // тип ордера
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;         // цена для открытия 
      request.price    =NormalizeDouble(price,digits);                  // нормализованная цена открытия 
     }
   else Alert("Этот пример только для установки отложенных ордеров");   // если выбран не отложенный ордер
//--- отправка запроса
   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());                 // если отправить запрос не удалось, вывести код ошибки
//--- информация об операции
   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
  }
 

Причина обращения: