Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
пошла реклама "вимпоцетина" :-)
PS/ если 4-ка работает, 5-ка работает, наверное ТС и ещё что-то кроме терминалов исползьует, а крашится только один конкретный индюк, то сильно вряд-ли дело в чипах памяти
Именно. Все работало нормально. А при тестировании крашился терминал. Не сразу. Оказалось дело в памяти. Даже просто удаление из слота одной димм решало проблему. Прикупил новую.
И какова вероятность что проблема в памяти исключительно на этом индикаторе? Я только что запустил советник. Дебагер отрабатывает без проблем.
Именно. Все работало нормально. А при тестировании крашился терминал. Не сразу. Оказалось дело в памяти. Даже просто удаление из слота одной димм решало проблему. Прикупил новую.
проверяется очень просто - берёшь чистую систему (пустую VDS) и запускаешь терминал с индюком. Накладных расходов на 1 день около 0. Ну может доллар.
хотя 99% что это лишнее - не выдумывайте лишних сущностей. ТС портирует софт с MT4 на MT5 и именно при этом при работе с подкачкой данных возникает крах.
PS/ совсем дурацкий, никчёмный вопрос - а у ТС рассчёты идут в OnCalculate или в start() ?? такое тоже бывает
И какова вероятность что ароблема в памяти исключительно на этом индикаторе? Я только что запустил советник. Дебагер отрабатывает без проблем.
проверяется очень просто - берёшь чистую систему (пустую VDS) и запускаешь терминал с индюком. Накладных расходов на 1 день около 0. Ну может доллар.
хотя 99% что это лишнее - не выдумывайте лишних сущностей. ТС портирует софт с MT4 на MT5 и именно при этом при работе с подкачкой данных возникает крах.
PS/ совсем дурацкий, никчёмный вопрос - а у ТС рассчёты идут в OnCalculate или в start() ?? такое тоже бывает
Я рад что вы в меня верите. Конечно в OnCalculate, и даже на mql4 был написан в OnCalculate и с #property strict
крах может быть и внутри OnInit....и даже в начале OnCalculate
он-же крах, ему можно всех опережать :-)
попробуйте отключить оптимизацию. И наставить принтов.
если вы говорите что в дебаге оно работает всегда, а при обчном запуске валится с историей.
крах может быть и внутри OnInit....и даже в начале OnCalculate
он-же крах, ему можно всех опережать :-)
попробуйте отключить оптимизацию. И наставить принтов.
если вы говорите что в дебаге оно работает всегда, а при обчном запуске валится с историей.
В дебагере по F5 проходит. Но не идёт в дебагере по Ctrl-F5, то-есть на исторических данных. Не идёт вообще... Даже не входит в OnInit(), а если кинуть на график, то крашится.
раз на исходник смотреть нельзя,
то может быть опишите технику "что поменялось в коде индкитатора при переносе с Mt4 на 5".. можно даже diff кинуть - врядли в нём ваши секретные формулы тайны рынка ;-)
раз на исходник смотреть нельзя,
то может быть опишите технику "что поменялось в коде индкитатора при переносе с Mt4 на 5".. можно даже diff кинуть - врядли в нём ваши секретные формулы тайны рынка ;-)
крах может быть и внутри OnInit....и даже в начале OnCalculate
он-же крах, ему можно всех опережать :-)
попробуйте отключить оптимизацию. И наставить принтов.
если вы говорите что в дебаге оно работает всегда, а при обчном запуске валится с историей.
Да нет. У него DebugBreak() сразу после поднятия в стек вызовов OnInit()-а. Поэтому крах до него.
По поводу памяти. Я уже писал, что программа пытается обратиться по адресу 0x04 и ОС абсолютно правильно его валит (или проц, тут доки читать надо), так как первые N (тут тоже доки надо читать) адресов памяти запрещены к использованию. именно для того, что бы определять разыменование нулевого указателя.
mov rdx, [0x4] - означает, поместить данные (8 байт), хранящиеся по адресу 0х4 в регистр процессора rdx,
test rdx,rdx - побитовое И двух значений, так как данные, находящиеся в rdx, сравниваются сами с собой, то это проверка на 0, если в rdx битовый 0, то в регистр zf помещается 1, иначе 0.
jz 0x3c5184a - если zf==1 (в rdx битовый 0), то перейти к инструкции, находящейся по адресу 0х3c5184a
add rdx, 0xf4 - к значению, находящемуся в rdx прибавить 0xf4 (244), при этом, если регистр zf принимает значение 1 если результат сложения 0 и 0 если не 0.
jz 0x3c5184a - смотри выше.
dec dword[rdx+0x4] - уменьшить значение 4-х байтового числа, хранящегося по адресу (значение, хранящееся в rdx + 4) на 1. Опять же регистр zf принимает значение в зависимости от результата операции по той же логике.
jnz 0x3c5184a - если zf==0, перейти к инструкции, находящейся по адресу 0х3c5184a
Вот, как это исполняется на процессоре. Учитывая, что отправляют нас к выполнению на один и тот-же адрес, скорее всего это функция. А дальше сам уже думай или код давай.