Индикаторы: Open Interest - страница 6

 
miillad :

Я написал коды, которые все точны, но команда SYMBOL_SESSION_INTEREST имеет галочку задержки.


Вы сами это придумали или прочитали в документации? Где в документации есть задержка?

 
В моей стране новогодние каникулы, и рынок закрыт. Когда я открою рынок, я покажу вам картинку.
 
Я могу попросить вас представить символ и брокера, на котором вы тестировали этот индикатор, чтобы я добавил его в MetaTrader.
 
miillad:

Привет.

Спасибо за создание данного индикатора.

Но у этого индикатора есть задержка тика. Вы исправляете эту проблему, пожалуйста?

Заметано, сэр.
 
Пример
Файлы:
tik1.jpg  198 kb
tik2.jpg  194 kb
tik3.jpg  190 kb
 
miillad:
Пример

1. Пожалуйста, ВСТАВЛЯЙТЕ картинку. ПриКРЕПЛЯТЬ картинку - неправильное действие.

2. Я в пятый раз прошу Вас: "Покажи код, с помощью которого ты выводишь на экран данные".

 
Vladimir Karputov:

1. Пожалуйста, ВСТАВЛЯЙТЕ картинку. ПриКРЕПЛЯТЬ картинку - неправильное действие.

2. Я в пятый раз прошу Вас: "Покажи код, с помощью которого ты выводишь на экран данные".

//+------------------------------------------------------------------+
//|Открытый интерес.mq5 |
//|Copyright © 2016, Владимир Карпутов |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Владимир Карпутов"
#property link      "http://wmua.ru/slesar/"
#property version   "1.001"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   2
//--- сюжет Max
#property indicator_label1  "Interest Max"
#property indicator_type1   DRAW_HISTOGRAM2
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3
//--- сюжет Текущий
#property indicator_label2  "Interest Min"
#property indicator_type2   DRAW_HISTOGRAM2
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  3
//--- индикаторные буферы
double         BufferMaxUp[];
double         BufferMaxDown[];
double         BufferMinUp[];
double         BufferMinDown[];
//---
datetime       StartDate=0;
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print(__FUNCTION__);
//--- отображение индикаторных буферов
   SetIndexBuffer(0,BufferMaxUp,INDICATOR_DATA);
   SetIndexBuffer(1,BufferMaxDown,INDICATOR_DATA);
   SetIndexBuffer(2,BufferMinUp,INDICATOR_DATA);
   SetIndexBuffer(3,BufferMinDown,INDICATOR_DATA);
   ArraySetAsSeries(BufferMaxUp,true);
   ArraySetAsSeries(BufferMaxDown,true);
   ArraySetAsSeries(BufferMinUp,true);
   ArraySetAsSeries(BufferMinDown,true);
//---
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора|
//+------------------------------------------------------------------+
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[])
  {
   if(prev_calculated==0)
     {
      Print("prev_calculated==0, StartDate=",StartDate);
      if(StartDate<D'2015.01.01 00:00')
        {
         StartDate=TimeCurrent();
        }
      else
        {
         return(rates_total);
        }
     }
//---
   double interest=SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST);
   Comment("Open interest= ",interest);
//---
   int limit=rates_total-prev_calculated;
   for(int i=0;i<limit;i++) // в случае, когда prev_calculated==0 или когда limit>1
     {
      BufferMaxUp[i]=interest;
      BufferMaxDown[i]=interest;
      BufferMinUp[i]=interest;
      BufferMinDown[i]=interest;
     }
//---
   if(interest>BufferMaxUp[0])
     {
      BufferMaxUp[0]=interest;
     }
   if(interest<BufferMinDown[0])
     {
      BufferMinDown[0]=interest;
     }
//--- возвращаем значение prev_calculated для следующего вызова
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

@Vladimir Karputov

спрашивал ,Вы проигнорили вопрос. повторю .

как я понял при смене ТФ на графике вся история торговой сессии обнуляется ?  бкс ,открытие  .одинаково -начинается сначала ! так и задумано ?

С ув

[Удален]  
motoRND:

@Vladimir Karputov

спрашивал ,Вы проигнорили вопрос. повторю .

как я понял при смене ТФ на графике вся история торговой сессии обнуляется ?  бкс ,открытие  .одинаково -начинается сначала ! так и задумано ?

С ув

Я, конечно, не Владимир, но да, так и задумано. Нет записи в файл!

 

Индикатор этот очень тормозной - не знаю что там тормозит, но это факт.

А что касается записи в файл, конечно, при появлении нового бара было бы не плохо делать запись, а при инициализации считывать...