Ограничение на количество GlobalVariables в терминале MT 4

 
Добрый день.
Возникла необходимость передавать из советника на одном ТФ данные в индикатор на другом ТФ. Передаваемых данных довольно много (порядка 10 000 значений)
В связи с этим вопрос: Существует ли ограничение на количество GlobalVariables в терминале МТ4


P.S. Библиотеку https://www.mql5.com/ru/code/9350 видел. Попробовал. Терминал завалил.
 
Пишите чего и как делаете: все подробности. Использую библиотеку каждый день по-черному. Ничего не падает.
 
А что других методов не нашлось?
 
lusp >>:
Добрый день.
Возникла необходимость передавать из советника на одном ТФ данные в индикатор на другом ТФ. Передаваемых данных довольно много (порядка 10 000 значений)
  


в этой ситуации ГП вообще не в теме. Используйте обычные файлы. - и понятнее и быстрее.
 
marketeer >>:
Пишите чего и как делаете: все подробности. Использую библиотеку каждый день по-черному. Ничего не падает.
Пытаюсь получить вчерашнюю ситуацию. Пока работает. Если упадет отпишу подробно

zhuki >>:
А что других методов не нашлось?

Например?

sergeev >>:


в этой ситуации ГП вообще не в теме. Используйте обычные файлы. - и понятнее и быстрее.

С файлами не устраивает быстродействие. Планируется передавать данные при каждом тике для прорисовки на своих тайм-фреймах

 
Сюда загляните. Может быть поможет.
https://www.mql5.com/ru/forum/357
 
lusp писал(а) >>
Пытаюсь получить вчерашнюю ситуацию. Пока работает. Если упадет отпишу подробно

Например?

С файлами не устраивает быстродействие. Планируется передавать данные при каждом тике для прорисовки на своих тайм-фреймах



Очевидно Вы наивно полагаете что ГП живут в памяти? :)
Они также прописываются в файл благодаря чему и срок хранения их 14 дней.

 
Вы бы хоть объяснили,что надо и кому надо передать.Или надо догадаться?
 
#include <GlobalArray.mqh>

void DeleteArrays(string sy) {
  // Массивы индикатора М1
  GlobalArrayDelete(GlArrayName(sy, PERIOD_M1, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_M5, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_M15, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_M30, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_H1, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_H4, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_D1, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_W1, "TST"));
  GlobalArrayDelete(GlArrayName(sy, PERIOD_MN1, "TST"));

}

string GlArrayName(string sy, int tf, string in) {
  return (StringConcatenate(sy,"-",in,"-",tf));
}

double M1[], M5[], M15[], M30[], H1[], H4[], D1[], W1[], MN1[];

//---- input parameters
extern int       wnd=100;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   DeleteArrays(Symbol());
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  ArrayResize(M1,wnd); 
  ArrayResize(M5,wnd); 
  ArrayResize(M15,wnd); 
  ArrayResize(M30,wnd); 
  ArrayResize(H1,wnd); 
  ArrayResize(H4,wnd); 
  ArrayResize(D1,wnd); 
  ArrayResize(W1,wnd); 
  ArrayResize(MN1,wnd);
  
  for(int i = 0; i< wnd; i++) {
    M1[i] = iClose(Symbol(),PERIOD_M1,i);
    M5[i] = iClose(Symbol(),PERIOD_M5,i);
    M15[i] = iClose(Symbol(),PERIOD_M15,i);
    M30[i] = iClose(Symbol(),PERIOD_M30,i);
    H1[i] = iClose(Symbol(),PERIOD_H1,i);
    H4[i] = iClose(Symbol(),PERIOD_H4,i);
    D1[i] = iClose(Symbol(),PERIOD_D1,i);
    W1[i] = iClose(Symbol(),PERIOD_W1,i);
    MN1[i] = iClose(Symbol(),PERIOD_MN1,i);
  }
  
    
  DeleteArrays(Symbol());
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_M1, "TST"), M1, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_M5, "TST"), M5, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_M15, "TST"), M15, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_M30, "TST"), M30, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_H1, "TST"), H1, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_H4, "TST"), H4, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_D1, "TST"), D1, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_W1, "TST"), W1, wnd);
  GlobalArraySet(GlArrayName(Symbol(), PERIOD_MN1, "TST"), MN1, wnd);
     
   return(0);
  }
Это передатчик

#property copyright "Copyright © 2010"
#property link      ""

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Green
#property indicator_width1 2

#include <GlobalArray.mqh>

double B1[];
int osz = 0;

string GlArrayName(string sy, int tf, string in) {
  return (StringConcatenate(sy,"-",in,"-",tf));
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
   
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer (0,B1);
   SetIndexEmptyValue(0,0.0);
   

  return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
  string nm = GlArrayName(Symbol(), Period(), "TST");
  int sz = GlobalArraySize(nm);
  if (osz != sz) {
    Print ("Размер глобального массива ",nm," ",sz," элементов");
    osz = sz;
  }   

  if (sz > 0) {
    ArrayInitialize(B1,0.0);
    GlobalArrayGet(nm, B1, sz);
  }  else Print ("Глобального массива ",nm," не обнаружено"); 

  return(0);
}
Это приемник


А Это падение терминала.

Что не так делаю?
 
sergeev писал(а) >>


в этой ситуации ГП вообще не в теме. Используйте обычные файлы. - и понятнее и быстрее.


И файл не нужен. Индикаторного буфера достаточно, и вызова индикатора через iCustom().

Зачем изобретать квадратное колесо, когда уже избретено круглое колесо?

 
А не проще только Symbol() передать.