Скачать MetaTrader 5

Опять проблемы с компилятором.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vadim Zhunko
5226
Vadim Zhunko  

Есть функция. В ней закоментировано всё, кроме двух массивов:

string TFStringToIntenger (int    NumberIndicator,
                           int&   CurrentTF,
                           string StringTF,
                           bool&  ArBoolGlobalVariable[][],
                           int&   ArNumberTF[][],
                           int&   ArIntGlobalVariable[][])
{
// Массивы
  int    ArTF_Time[];
  string ArTF_Textb[];
}

Сама функция ни где не вызывается. Код самого советника более 20000 строк с учётом всех библиотек и инклюдов.

После компиляции получаю такие ошибки:

'[' - too many arrays E:\...\ZN_AIASM_EXP_Extern_Variable_In_Array.mq4 (33, 22)
'2' - comma or semicolon expected E:\...\ZN_AIASM_EXP_Extern_Variable_In_Array.mq4 (33, 23)
']' - unexpected square bracket E:\...\ZN_AIASM_EXP_Extern_Variable_In_Array.mq4 (33, 24)

...............здесь ещё 350 строк, как последняя...............................

Все эти ошибки ссылаются на место в коде неотносящееся к этой функции. Без этой функции всё компилируется и работает.

Достаточно закоментировать любой из этих массивов или убрать у одного из них квадратные скобки для компиляции без ошибок.

Также, можно закоментировать любой массив в параметрах функции, что приведёт к компиляции без ошибок.

=========

Эта функция в полном незакоментированном виде нормально компилируется в любом другом коде.

Slava
Модератор
6960
Slava  

Похоже, Вы натолкнулись на ограничение на количество массивов в программе. Массивов не может быть больше 512. Мы ещё никогда не встречались с такой ситуацией.

Vadim Zhunko
5226
Vadim Zhunko  

Та уж...Интересное ограничение.

На глобальном уровне 69 массивов.

Надо везде посчитать? В библиотеках считать?

====================

Проверил. Библиотечные тоже входят в это ограничение.

Кошмар....:-( Что делать?

В MQL5 тоже такое ограничение?

Slava
Модератор
6960
Slava  

Массив, объявленный параметром, тоже считается. Локальные массивы тоже считаются. Массивы в библиотеках считаются отдельно, в пределах каждой библиотеки.

в MQL5 таких ограничений нет

Yuriy Zaytsev
16194
Yuriy Zaytsev  
Zhunko >>:

Та уж...Интересное ограничение.

На глобальном уровне 69 массивов.

Надо везде посчитать? В библиотеках считать?

====================

Проверил. Библиотечные тоже входят в это ограничение.

Кошмар....:-( Что делать?

В MQL5 тоже такое ограничение?

Вадим !

по количеству массивов не налетал на ограничения, но и не возникало такой ситуации...

тут наверно разработчики могут пролить свет!

--

1 что делать вопрос сложный! может принцепом оверлея  работать!

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

Но если не ошибаюсь тебе этот метод не подойдет!

---

2 как то ограничится в количесте массивов

---

3 еще вариант уносить большой объем данных  из MQL во внешние приложения ( но это трудный и длинный  путь )

т е оставив только, скрипту только

1 сбор данных и отправку наверх

2 формирование запросов наверх

3 получение информации сверху

4 вход выход в позиции

5 отображения информации на графиках ( останется самым сложным местом )

хранилище данных можно делать в SQL...  mySQL или MSSQL или что то еще ( более бодрым и простым будет mySQL )

прослойку написать на DLL например Си++

расчеты все делать где снаружи на более сильном чем MQL языке например на том же Си++

Вадим я понимаю, это огромный пласт который требует изучения новых технологий

получения знаний SQL, T/SQL или PL/SQL

какого то языка к примеру Си++

---

>Массивов не может быть больше 512.

если ограничения языка не позволят, то никак

---

Vadim Zhunko
5226
Vadim Zhunko  
stringo >>:

в MQL5 таких ограничений нет

Хоть какое-то облегчение :-)

bank
848
bank  
stringo >>:

Массив, объявленный параметром, тоже считается. Локальные массивы тоже считаются. Массивы в библиотеках считаются отдельно, в пределах каждой библиотеки.

в MQL5 таких ограничений нет

можно вопрос почти по теме?

из раздела Операции с массивами например ArrayMaximum в мкл5 только с одномерными будут работать?

а также из раздела Тех индикаторов типа iMAOnArray

приходица юзать промежуточный одномерный буфер например

for(shift=0; shift<15; shift++) Buffer[shift]=Сluster[band][shift];

Maxi=ArrayMaximum(Buffer);

Vadim Zhunko
5226
Vadim Zhunko  
sabluk >>:

можно вопрос почти по теме?

из раздела Операции с массивами например ArrayMaximum в мкл5 только с одномерными будут работать?

а также из раздела Тех индикаторов типа iMAOnArray

приходица юзать промежуточный одномерный буфер например

for(shift=0; shift<15; shift++) Buffer[shift]=Сluster[band][shift];

Maxi=ArrayMaximum(Buffer);


Это самому можно написать. Лишь бы ограничений не было.

Yuriy Zaytsev
16194
Yuriy Zaytsev  
Zhunko >>:

Русский MSDN и Русский Visual Studio 2008 вышли! 

---

http://www.microsoft.com/rus/news/issues/2008/10/visual.mspx

Среда Microsoft Visual Studio 2008 доступна на русском языке с 28 октября 2008 года. Приобрести профессиональные версии Visual Studio можно у партнеров Microsoft. Бесплатные версии Visual Studio доступны в центре для начинающих разработчиков. Загрузить пробные профессиональные версии. Online-библиотекa MSDN.

---


http://msdn.microsoft.com/ru-ru/aa700832.aspx

http://www.microsoft.com/express/ru/download/

http://msdn.microsoft.com/ru-ru/aa972637.aspx

http://msdn.microsoft.com/ru-ru/library/default.aspx

http://msdn.microsoft.com/ru-ru/vs2008/bb964355.aspx


---


Вадим я предполагаю ты уже давно скачал! бесплатный релиз VISUAL STUDIO 2008 на русском!

но если нет то вот он!

Vadim Zhunko
5226
Vadim Zhunko  
Да. Скачал давно. Но не ставил ещё.
Vadim Zhunko
5226
Vadim Zhunko  

Опять проблема :-(

Может не такая ужасная...

Почему-то не компилируются с первого раза советники. Вернее компилируются, но они становятся не активными в навигаторе. Только повторное компилирование делает их активными в навигаторе. Раньше в прежних билдах такого не наблюдалось.

Правда, иногда получается и с первого компилирования.

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий