Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1694

 
Aleksei Stepanenko #:

Не знаю зачем так сделано, по своей сути это функция булева.

Как-то так:

В enum элементы начинаются с нуля, то есть Ok=0 ,AllocError=1

то есть GetRepeat возвращает либо 0, либо 1

соответственно ! GetRepeat - это отрицание возвращаемого значения

0-это ложь, 1-истина


голову можно сломать

Точно!)) Спасибо, Алексей!

 
Не за что :)
 

Доброго времени суток!!!

Вот функция расчета средней цены сетки ордеров и её отображение на графике. После того как сетка закрывается горизонтальные линии отображающие среднюю линию не удаляются. 

Помогите дописать функцию чтобы эти линии удалялись после того как сетка ордеров закрылась. Спасибо!!!

//+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice(int ot=-1)
  {
   double order_lots = 0, order_price = 0, avg_price = 0;
     {
      for(int i = OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType()==ot||ot<0)
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble(order_price / order_lots, Digits);

   if(ObjectFind(0,"AveragePriceLine"+IntegerToString(ot))!=0)
      ObjectCreate(0,"AveragePriceLine"+IntegerToString(ot),OBJ_HLINE, 0, 0, avg_price);
   else
      ObjectSetDouble(0,"AveragePriceLine"+IntegerToString(ot),OBJPROP_PRICE,avg_price);
   if(ot==0)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrLime);
   if(ot==1)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrMagenta);
   return(avg_price);
  }

  

 
EVGENII SHELIPOV #:

Доброго времени суток!!!

Вот функция расчета средней цены сетки ордеров и её отображение на графике. После того как сетка закрывается горизонтальные линии отображающие среднюю линию не удаляются. 

Помогите дописать функцию чтобы эти линии удалялись после того как сетка ордеров закрылась. Спасибо!!!

  

Это не здесь надо делать.

void OnTick()
  {
//---
   if(ObjectFind(0,"AveragePriceLine"+0)==0&&CountTrade(0)<1)//для бай
     {ObjectDelete(0,"AveragePriceLine"+0);}
   if(ObjectFind(0,"AveragePriceLine"+1)==0&&CountTrade(1)<1)//для селл
     {ObjectDelete(0,"AveragePriceLine"+1);}

   .....

  }
 
MakarFX #:

Это не здесь надо делать.

Макар а как это привязать в void OnTick()

 
MakarFX #:

Это не здесь надо делать.

Макар спасибо чуть напильником доработал и всё нормально 

 

Подскажите пожалуйста. 

Советник задает время начало и окончание открытие ордеров. Хотел сделать так чтобы это время отображалось на графике. Пока не получается. Вот код. Помогите пожалуйста!!!

//-------------------------------------------------------------------+  Команда на открытие первых ордеров в сетке
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
   ObjectCreate(0, "Начало торговли", OBJ_VLINE,0,0, StartTime);
   ObjectSetInteger(0, "Начало торговли",OBJPROP_COLOR, clrBlue);
   ObjectCreate(0,"Окончание торговли", OBJ_VLINE, 0, 0, StopTime);
   ObjectSetInteger(0, "Окончание торговли", OBJPROP_COLOR, clrBlue);
     {
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
 
EVGENII SHELIPOV #:

Подскажите пожалуйста. 

Советник задает время начало и окончание открытие ордеров. Хотел сделать так чтобы это время отображалось на графике. Пока не получается. Вот код. Помогите пожалуйста!!!

Покажи переменные StartTime и StopTime
 
MakarFX #:
Покажи переменные StartTime и StopTime
extern string               TIME                           = "Настройки времени";
extern int                  UseHour                        = 1;         // Торговля в установленное время "0"-ВЫКЛ, "1"-ВКЛ
extern int                  StartTime                      = 1;         // Начало торговли
extern int                  StopTime                       = 19;        // Окончание торговли
 
EVGENII SHELIPOV #:
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      if(ObjectFind(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE))!=0)
        {
         ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0);
         ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
         ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0);
         ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
        }
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
Причина обращения: