Разработчики MT, возможно ли выделить память в dll для массива каким-нибудь MemAlloc например
#import "indicator.dll"
bool uShow(int ColvoBars, double &Array[]);
#import
int start()
{
double array[]
ArrayResize(array, (Bars/2)*6); // этого тут я нехочу делать
bool x = uShow(Bars, array);
}
а можно узнать почему ? не хотите
---
Вы хотите выделять память в DLL т е снизу, а использовать ее 'сверху'
вместо того что бы выделить память сверху и использовать ее снизу
DLL тут можно рассматривать как нижний уровень...
--
используя возможно 'некоторые трюковые приемы программирования'
можно получить некоторую вероятность , что работать будет - некий прием
но такие вещи не поддерживаемые разработчиком не обязательно сработают в следующих релизах
как пример: одно время программируя для MSDOS использовал недокументированные функции
в одной из следующих версий DOS, одна из функций перестала работать
Потому-что на выходе размер массива будет разный. Зачем сразу выделять в MQ4 например массив под 1000 баров, если в результате действий может получится массив из 140 баров.
В dll передается указатель на сам массив, я не знаю как поведет себя MT4 если выделить память под массив из dll, примет ли он во внимание что память выделена.
поэту и спрашиваю разработчиков, как там у них работа с памятью ведется.
А что Вам мешает расчитать необходимый размер, а потом сделать Resize на нужное значение? Память лучше всего выделять штатными средствами MQL4.
У меня весь код экспертов, и индикаторов в dll находится (не нравится ваш тестер, использую свой), вот хочу убрать лишний код из MQ4, коснулся вопрос использования памяти.
Я понимаю что штатными средствами лучше, ну хотел бы знать альтернативу (мне проще код писать) если она вообще или забить на это дело и оставить как есть???
У меня весь код экспертов, и индикаторов в dll находится (не нравится ваш тестер, использую свой), вот хочу убрать лишний код из MQ4, коснулся вопрос использования памяти.
Я понимаю что штатными средствами лучше, ну хотел бы знать альтернативу (мне проще код писать) если она вообще или забить на это дело и оставить как есть???
Есть такое слово умное - архитектура памяти, так вот - как разница если в МТ4 она собственная ? Смысл лезть в МТ - в инсталляции прилагается пример DLLSample - там все прекрасно показано как делается передача массивов, констант и переменных - я таким образом массивы туда-обратно с константами вперемешку гонял между МТ и кодировал для Матлаба через свою DLL - делал а потом сверял с матлабом библиотеку вейвлетов.
Могу сказать что если во входных параметрах массивы вперемешку с обычными переменными - то там важен порядок, точнее выравнивание аргументов, и под отладчиком DLL-ки видно непонятку с передачей сложных параметров. Все прекрасно и архи-шустро работает если заниматься менеджментом только собственно выделенной памяти. Пишется интерфейсный MQL файл с прописанной в нем DLL-кой обмена данными и далее можно лопатить выкаченные данные хоть на кластере силиконов в Сан-Диего .. ну если те пустят ;-)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Разработчики MT, возможно ли выделить память в dll для массива каким-нибудь MemAlloc например
#import "indicator.dll"
bool uShow(int ColvoBars, double &Array[]);
#import
int start()
{
double array[]
ArrayResize(array, (Bars/2)*6); // этого тут я нехочу делать
bool x = uShow(Bars, array);
}