CHART_SHOW_OHLC для OBJ_CHART - страница 3

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

CHART_SHOW_OHLC для OBJ_CHART

fxsaber, 2016.10.23 18:59

А теперь прикол. После ChartRedraw объект, действительно, удаляется. А если ChartRedraw не делать - не удаляется!

Для подтверждения нажмите CTRL+B и выберите "Все". Объект можно даже поредактировать, чтобы убедиться, что это не фантом.

 
fxsaber:

При закомментированном ChartRedraw(), после удаления индикатора с графика, перезагрузите терминал.

Повторить действия после открытия рынков. 

 
Karputov Vladimir:

При закомментированном ChartRedraw(), после удаления индикатора с графика, перезагрузите терминал.

Повторить действия после открытия рынков. 

Зачем мне эти танцы с бубном? Все уже выяснилось

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

CHART_SHOW_OHLC для OBJ_CHART

fxsaber, 2016.10.23 19:06

Ну так тогда ChartRedraw будет происходить на каждом тике.

В Справку надо добавить, что после ObjectDelete удаление происходит только после явного или неявного вызова ChartRedraw.

Грубо говоря, ObjectDelete не удаляет объект, а устанавливает флаг "убиться" на следующем ChartRedraw (верно для индикаторов).

 
fxsaber:
Зачем мне эти танцы с бубном? Все уже выяснилось

Откуда Вы это берете??

Ну так тогда ChartRedraw будет происходить на каждом тике.

 Где Вы видели ChartRedraw  у меня в OnCalculate?

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0

string CHARTNAME="ObjChart";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                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[])
  {
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
   ObjectCreate(0,CHARTNAME,OBJ_CHART,0,0,0);

   const long Chart=ObjectGetInteger(0,CHARTNAME,OBJPROP_CHART_ID);

   ChartSetInteger(Chart,CHART_SHOW_OHLC,false);

   ChartRedraw(Chart);
  }
//+------------------------------------------------------------------+
//| OnDeinit function                                                |
//+------------------------------------------------------------------+
void OnDeinit(const int Reason)
  {
   ResetLastError();
   if(!ObjectDelete(0,CHARTNAME))
      Print("Error #",GetLastError());
   ChartRedraw();
  }

//+------------------------------------------------------------------+


Пожалуйста пишите в стилистике MQL5, не стреляйте себе в обе ноги на полном ходу и не спешите с выводами.

Файлы:
test.mq5  4 kb
 
Karputov Vladimir:


Пожалуйста пишите в стилистике MQL5, не стреляйте себе в обе ноги на полном ходу и не спешите с выводами.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

CHART_SHOW_OHLC для OBJ_CHART

fxsaber, 2016.10.23 18:50

Ага, не мое. Вот теперь мое
#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots 0

void OnInit()
{
  ObjectCreate(0, "ObjChart", OBJ_CHART, 0, 0, 0);
}

void OnDeinit( const int Reason )
{
  ObjectDelete(0, "ObjChart");
}

int OnCalculate( const int rates_total,
                 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[] )
{
  return(rates_total);
}
Не удаляется объект - баг.
 
В копилку OBJ_CHART

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2016.10.22 12:22

При перетаскивании (CHARTEVENT_OBJECT_DRAG) мышью графического объекта OBJ_CHART сбрасывается текущий интервал отображения в OBJ_CHART.

Прошу убрать в следующем билде данный сброс.

Если менять, например, OBJPROP_XSIZE, то после (а перед - тем более) ChartNavigate лучше не делать - гадость получится.
Причина обращения: