Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Напишите в Сервисдеск со всеми деталями (если необходимо, приложите эксперта). Так будет быстрее
Возможно Вы используете большой размер локальных переменных функции, например массивы.
В следующем билде, для 32битного терминала, можно будет управлять размером стека через соответствующее свойство компилятора #property stacksize
Это проблема только 32-ух битных терминалов? У меня x64. Как понять "...большой размер локальных переменных функции, например массивы..."? Насколько это должно быть большим, чтобы стек оказывался в итоге переполненным?
Но если программист самостоятельно, через свойство, не укажет требуемый размер стека, то EX5 в терминале будет работать с размером стека по умолчанию ( 256Кб )
По поводу большого размера.
Под каждое объявление переменной внутри функции(кроме static переменных) отводится место на стеке, при этом выделение места на стеке под локальные переменные происходит при каждом вызове.
Поэтому если функция имеет локальные переменные размером в 64Кб, то стека хватит на 3 вложенных вызова, при 4 вызове произойдёт переполнение стека (т.к. часть стека уходит на внутренние нужды терминала). Поэтому если есть потребность в больших локальных данных, то лучше использовать динамическую память - при входе в функцию память под локальные нужды выделяется в системе (new, ArrayResize) и при выходе из функции производится удаление памяти (delete, ArrayFree).
Здравствуйте!
Не могу понять такую проблему.
filehandle=FileOpen("My\\Symbols.txt",FILE_READ|FILE_TXT|FILE_ANSI);
В при отладке отрабатывает нормально, файл читаем, находясь в MT5\MQL5\File\
При прогоне в тестере пишет "Не удалось открыть файл Symbols.txt, ошибка 5004", и хендел -1
подсовывал так же в папку MT5\tester\агент000\MQL5\File, но оно его опять не видит и файл там убивает вообще.)
При этом в описании сказано:
"Файл открывается в папке клиентского терминала в подпапке MQL5\files (или каталог_агента_тестирования\MQL5\files в случае тестирования)."
"функция ищет файл в локальной папке (MQL5\Files или MQL5\Tester\Files в случае тестирования)."
И у меня нет такой папки "MQL5\Tester\Files" как сказано в справке?
Чего я делаю не так и как эту проблему мне победить?
Благодарю за ответ.
Попробуйте использовать #property tester_file:
#property tester_file "My\\Symbols.txt"
Попробуйте использовать #property tester_file:
Ух-х-х Вроде помогло в MT5\tester\агент000\MQL5\File поместил еще раз, тогда с property пашет.
Благодарю!
Попробовал на тестере опять хендл -1 и ошибка 5004.
Не понимаю, что еще может тут быть, явно он не находит файл, при отладке же все видит.
Файл скопируйте в MQL5\Tester\Files (предварительно создав папку).
Попробовал, создал такие папки ручками, положил свой файл (с подпапкой, отключил #property tester_file), не находит он его в тестере никак.
А если подключить #property tester_file то как ни странно работает.
Правда периодически, он мне папку и файл там грохает в MT5\tester\агент000\MQL5\File, наверно связано с тем, если отключить #property tester_file то он там все трет.
Да, вот сейчас выяснил, что если я меняю код (где либо) mq5 файле (из под которого вызывается txt) , затем компилируем его и идем в тестер, он все трет в MT5\tester\агент000\MQL5\File
Чудеса какие-то, но хоть как то, работает и то хорошо.
Попробовал, создал такие папки ручками, положил свой файл (с подпапкой, отключил #property tester_file), не находит он его в тестере никак.
А если подключить #property tester_file то как ни странно работает.
Правда периодически, он мне папку и файл там грохает в MT5\tester\агент000\MQL5\File, наверно связано с тем, если отключить #property tester_file то он там все трет.
Да, вот сейчас выяснил, что если я меняю код (где либо) mq5 файле (из под которого вызывается txt) , затем компилируем его и идем в тестер, он все трет в MT5\tester\агент000\MQL5\File
Чудеса какие-то, но хоть как то, работает и то хорошо.
Если W7, положите файлик в каталог Document and Setting/.../MetaQuotes/Common/Files, или отключите UAC
PS опять же проверте правильность написания имени, на каких раскладках записано имя (лучше конечно копипастить), наличие пробела в конце имени ну и так далее.
Если W7, положите файлик в каталог Document and Setting/.../MetaQuotes/Common/Files, или отключите UAC
PS опять же проверте правильность написания имени, на каких раскладках записано имя (лучше конечно копипастить), наличие пробела в конце имени ну и так далее.
Действительно у меня Win7 64бит, но UAC на нуле.
C:\Documents and Settings\All Users\MetaQuotes\Terminal\Common\Files\ закинул туда свою папку и файлик, не помогло, не находит в тестере файл.
Да вроде все правильно с именем, на #property tester_file же в тесте работает (и на отладке работает по любому ), а в тестере никак , окромя как только через #property tester_file.
И то с выше озвученной проблемой убийства файла после изменения и компиляции mq5 (у меня такой расклад получается).
У вас в справке наглая ложь написана:
CLBufferWrite
Записывает массив в буфер OpenCL.
bool CLBufferWrite(
int buffer // хендл на буфер OpenCL
const void& data[] // массив значений
uint offset=0 // с какого элемента, по умолчанию с первого
void size=WHOLE_ARRAY // количество значений, по умолчанию весь массив
);
Параметры
......offset
.....
size
[in] Количество значений, которые нужно записать. По умолчанию в буфер OpenCL пишутся все значения массива.
......На самом деле пишется количество байт (!!), а вовсе не значений.
Два вечера угробил на отладку индикатора, пока допёр..! А всё пачему? - патамушта верил в ваше писание...
ИСПРАВЬТЕ НЕМЕДЛЕННО !! :))
// Вовремя не догадался, потому что по умолчанию ( size=WHOLE_ARRAY) работает правильно.