Скачать MetaTrader 5

Подскажите пожалуйста, как можно сделать локальный массив close доступным глобально.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Статьи уже помогли многим трейдерам. Заходи и читай!
Elena
107
Elena 2015.05.22 12:28 
Собственно вопрос такой, в функции onCalculate получаем массивы close и т.д, но они замкнуты внутри этой функции, передавать их параметрами во внутрь вызываемых функций будет слишком долго и нудно, поэтому хотелось бы просто "расшарить" их через указатели, но толком как это сделать в документации найти не получилось. Если "на пальцах": из функции OnCalculate вызывается другая функция, которая в свою очередь вызывает 3 и так далее, так вот и хотелось бы без передачи через параметры 2 использовать массив close в 3...
Alexandr Bryzgalov
27603
Alexandr Bryzgalov 2015.05.22 12:30  
T-S-V:
Собственно вопрос такой, в функции onCalculate получаем массивы close и т.д, но они замкнуты внутри этой функции, передавать их параметрами во внутрь вызываемых функций будет слишком долго и нудно, поэтому хотелось бы просто "расшарить" их через указатели, но толком как это сделать в документации найти не получилось. Если "на пальцах": из функции OnCalculate вызывается другая функция, которая в свою очередь вызывает 3 и так далее, так вот и хотелось бы без передачи через параметры 2 использовать массив close в 3...

перед именем передаваемого массива в параметрах функции ставьте &

Elena
107
Elena 2015.05.22 12:32  
Alexandr Bryzgalov:

перед именем передаваемого массива в параметрах функции ставьте &

Вы вопрос читали? БЕЗ передачи через параметры, такой способ всем и давно известен. По вашему каждая функция на входе будет иметь по 4 доп параметра: const double &open[],const double &high[],const double &low[],const double &close[], но во второй функции мне эти параметры (массивы) не нужны, а нужны в 4-той из дерева...

Вот вопрос и заключается как РАСШАРИТЬ массив, к примеру через указатель или подобным образом и если не трудно с кратким примером: "шара" + обращение.

Vitalie Postolache
12135
Vitalie Postolache 2015.05.22 12:46  
T-S-V:

Вы вопрос читали? БЕЗ передачи через параметры, такой способ всем и давно известен. По вашему каждая функция на входе будет иметь по 4 доп параметра: const double &open[],const double &high[],const double &low[],const double &close[], но во второй функции мне эти параметры (массивы) не нужны, а нужны в 4-той из дерева...

Вот вопрос и заключается как РАСШАРИТЬ массив, к примеру через указатель или подобным образом и если не трудно с кратким примером: "шара" + обращение.

Почитайте про MqlRates, может это оно и есть.
Alexandr Bryzgalov
27603
Alexandr Bryzgalov 2015.05.22 12:48  
T-S-V:

Вы вопрос читали?

нет конечно, взял и сходу написал самый используемый вариант работы с массивами/

копирование массива подойдёт?

ЗЫ: ох да, ещё же структуры есть

George Merts
3609
George Merts 2015.05.22 12:49  

К сожалению, MQL не поддерживает указатели на массивы.

Я уже давно грущу по этому поводу... Сделали бы хотя бы функцию OnCalculate(), в которую будут передаваться указатели на таймсерии Стандартной Библиотеки типа CiOpen и подобные... Насколько было бы проще с передачей данных по таймсериям... Сохранил указатели в классе, и когда надо - используешь их на любом уровне вложенности...

Но сейчас - увы... Так что - только передача дополнительных параметров.

Ну или на каждом OnCalculate сперва копировать таймсери в свой массив, который потом использовать

Elena
107
Elena 2015.05.22 17:22  
George Merts:

К сожалению, MQL не поддерживает указатели на массивы.

Я уже давно грущу по этому поводу... Сделали бы хотя бы функцию OnCalculate(), в которую будут передаваться указатели на таймсерии Стандартной Библиотеки типа CiOpen и подобные... Насколько было бы проще с передачей данных по таймсериям... Сохранил указатели в классе, и когда надо - используешь их на любом уровне вложенности...

Но сейчас - увы... Так что - только передача дополнительных параметров.

Ну или на каждом OnCalculate сперва копировать таймсери в свой массив, который потом использовать

Спасибо, ответ исчерпывающий, значит придётся по старинке через параметры.
Elena
107
Elena 2015.05.22 17:29  
Alexandr Bryzgalov:

нет конечно, взял и сходу написал самый используемый вариант работы с массивами/

копирование массива подойдёт?

ЗЫ: ох да, ещё же структуры есть

Какой в этом смысл? Тогда уж проще через параметры, при копировании и память лишняя тратится и время дополнительное, зачем? Я искал вариант именно через указатели...
Alexandr Bryzgalov
27603
Alexandr Bryzgalov 2015.05.22 18:00  
T-S-V:
Какой в этом смысл? Тогда уж проще через параметры, при копировании и память лишняя тратится и время дополнительное, зачем? Я искал вариант именно через указатели...
ну нет такого )
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий