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

 
Tretyakov Rostyslav #:
Я Вас к сожалению не понял(
Сначала пишете в массив две цены первого прямоугольника, затем второго, потом третьего, и т. д. 
 
Artyom Trishkin #:
Сначала пишете в массив две цены первого прямоугольника, затем второго, потом третьего, и т. д. 

Не знаю правильно ли я Вас понял, но у меня получилось

      ArrayResize(price1,cnt_block*2);
      int i=0;
      for(int j=0; j<ObjectsTotal(); j++)
        {
         if(ObjectType(ObjectName(j))==OBJ_RECTANGLE)
           {
            price1[i]=ObjectGetDouble(0,ObjectName(j),OBJPROP_PRICE1); i+=1;
            price1[i]=ObjectGetDouble(0,ObjectName(j),OBJPROP_PRICE2); i+=1;
           }
        }
 
Tretyakov Rostyslav #:

Не знаю правильно ли я Вас понял, но у меня получилось

Ну, если теперь из полученного массива можете извлечь правильные цены по номеру нужного прямоугольника, значит получилось. 
 
Tretyakov Rostyslav #:

Не знаю правильно ли я Вас понял, но у меня получилось

 price1[i]=ObjectGetDouble(0,ObjectName(j),OBJPROP_PRICE1); i+=1;
 price1[i]=ObjectGetDouble(0,ObjectName(j),OBJPROP_PRICE2); i+=1;

Это химия.

 
Artyom Trishkin #:
Ну, если теперь из полученного массива можете извлечь правильные цены по номеру нужного прямоугольника, значит получилось. 

Мне не нужно знать к какому прямоугольнику какая цена относится, у меня прямоугольники рисуются руками, появился новый прямоугольник - обновил массив,

а затем идет перебор цен массива.

 
Vitaly Muzichenko #:

Это химия.

Что Вы имеете ввиду?

 
Tretyakov Rostyslav #:

Что Вы имеете ввиду?

Уже ничего, Вы ответили

Tretyakov Rostyslav #:

Мне не нужно знать к какому прямоугольнику какая цена относится, у меня прямоугольники рисуются руками, появился новый прямоугольник - обновил массив,

а затем идет перебор цен массива.

 
Tretyakov Rostyslav #:

Мне не нужно знать к какому прямоугольнику какая цена относится, у меня прямоугольники рисуются руками, появился новый прямоугольник - обновил массив,

а затем идет перебор цен массива.

в массиве надо держать не цены, а объекты. Появился прямоугольник - добавился объект. 

всё станет сразу проще, и сможет работать не только с прямоугольниками.

Что у вас обозначается прямоугольником ? торговая область ?? значит класс TradingArea, его инстансы помещаются в коллекцию и это синхронизуется с чартом. 

 
Как поднять ARROW над ценой в mql4?

В MQL5 есть PLOT_ARROW_SHIFT

Пробую в MQL4 - не работает

Её функция 
SetIndexShift

сдвигает влево-вправо по горизонтали

 

Есть код скользящей средней. Как мне получить в буфере значение средней умноженной на volume?

//+------------------------------------------------------------------+
//|                                                         3_Ma.mq5 |
//+------------------------------------------------------------------+
#property indicator_chart_window

#property indicator_buffers 1
#property indicator_plots   1

#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed


input int                Ma_Fast = 21;
input ENUM_MA_METHOD     Method_Fast = MODE_SMA;
input ENUM_APPLIED_PRICE Price_Fast = PRICE_CLOSE;
//---
double Fast[];

int FastHandle;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
   SetIndexBuffer(0, Fast, INDICATOR_DATA);
   FastHandle   = iMA(NULL, 0, Ma_Fast, 0, Method_Fast, Price_Fast);

  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(
   const int         bars,
   const int prev_calculated,
   const datetime&   time[],
   const double&     open[],
   const double&     high[],
   const double&     low[],
   const double&     close[],
   const long&       tick_volume[],
   const long&       volume[],
   const int&        spread[])
  {
     if(prev_calculated == 0)
     {
      //--- для нулевых индексов установим нулевые значения
      ArrayInitialize(Fast, EMPTY_VALUE);

     }
   CopyBuffer(FastHandle, 0, 0, bars, Fast);

   return(bars);
  }
//+------------------------------------------------------------------+