VPS возвращает некорректный _Point value (MT5) - страница 3

 
Stanislav Korotky:
Что написано в строке 97?
что-то в цикле for, при заполнении буфера, я подсократил код пока искал эту ошибку, которая больше ни разу нигде не возникала, поэтому не помню на каком конкретно буфере, наверное на первом же
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(!isNewBar())
     {  
      return(prev_calculated);
     }
//--- check if all data calculated
   if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
   int to_copy;
   if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      //--- last value is always copied
      to_copy++;
     }
//--- try to copy
   CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
//--- calculate 
   for(int i=0;i<rates_total && !IsStopped();i++)
     {
     
       BarsBuffer1[i]=(open[i]-MABuffer[i])*indx1;
       BarsBuffer2[i]=(high[i]-MABuffer[i])*indx1;
       BarsBuffer3[i]=(low[i]-MABuffer[i])*indx1;
       BarsBuffer4[i]=(close[i]-MABuffer[i])*indx1;
     
     }
   return(rates_total);
  }
 
Maxim Dmitrievsky:
что-то в цикле for, при заполнении буфера, я подсократил код пока искал эту ошибку, которая больше ни разу нигде не возникала

Желательно все же иметь конкретную строку. Из приведенного кода как минимум видно, что нет проверки на результат CopyBuffer, так что MABuffer может быть не таким как предполагалось. Про BarsBuffers вообще ничего не ясно.

Обычно ошибка выхода за пределы вызвана недостаточно корректным кодом MQL, который не учитывает все возможные осложнения при выполнении ядра. В тепличных условиях он работает, а при любом отклонении - падает.

 
Stanislav Korotky:

Желательно все же иметь конкретную строку. Из приведенного кода как минимум видно, что нет проверки на результат CopyBuffer, так что MABuffer может быть не таким как предполагалось. Про BarsBuffers вообще ничего не ясно.

Обычно ошибка выхода за пределы вызвана недостаточно корректным кодом MQL, который не учитывает все возможные осложнения при выполнении ядра.


Если еще раз возникнет - скину :) но после того как пофиксили сервер больше не возникала

скорее всего при заполнении первого буфера и возникала, никогда не было проблем, в 2-х ботах этот индикатор используется

40-й символ это массив с ценами МА, скорее всего стандартный индикатор в буфер не копировался

А поскольку обращение идет к стандартному индикатору, то смею предположить что на впс что-то случилось с либой индикатора имхо

 
Maxim Dmitrievsky:
что-то в цикле for, при заполнении буфера, я подсократил код пока искал эту ошибку, которая больше ни разу нигде не возникала, поэтому не помню на каком конкретно буфере, наверное на первом же


ни проверок на результаты функций

ни проверок на размеры массивов

можно только посочувствовать

 
o_o:


ни проверок на результаты функций

ни проверок на размеры массивов

можно только посочувствовать


а толку? ну стояла бы проверка все равно ошибка была не здесь

зачем код засорять если все работает )

 
Я бы на месте пользователя, где заглючил терминал предъявил бы финасовые претензии.
Если вы арендуете сторнний ВПС то получаете полноценный удаленный компютер который рабоает так же как и ваш домашний. С ВПС Метаквотес принцип работы совершенно другой.
 

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

----

У меня вот красота и даже не знаю что могло быть, это просто юзер решил снять советник с ВПС сегодня. Советники (все с этого счета) юзают ZZZ индюк, советник ставит индикатор на график и так же снимает по окончанию работы.

Хотя этот индикатор уже месяцами работает и на втором ВПС все ок.  И много таких ошибок посыпалось... По идее, при любом криворуком программисте, не должно быть аж так плохо. 

CE 2 09:44:15.242 ZZZ (USDJPY,M1) Access violation at 0x000000014018F8BF write to 0x0000000000211008

GP 2 09:44:15.242 ZZZ (EURJPY,M1) Access violation at 0x000000014018F8BF write to 0x0000000000211008

HN 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F880 4885D2            test       rdx, rdx

QM 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F883 0F8487000000      jz         dword 0x14018f910

CD 2 09:44:15.242 ZZZ (EURJPY,M1)

NP 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F889 53                push       rbx

LL 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F88A 4883EC20          sub        rsp, 0x20

FJ 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F88E 48897C2430        mov        [rsp+0x30], rdi

KJ 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F893 488BD9            mov        rbx, rcx

FJ 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F896 488B7AF8          mov        rdi, [rdx-0x8]

OQ 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F89A 4881FFE8FFFF00    cmp        rdi, 0xffffe8

KQ 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F8A1 730B              jae        0x14018f8ae

RS 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F8A3 4883C138          add        rcx, 0x38

IH 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFD400000 00109000 C:\Windows\system32\MSCTF.dll (6.1.7601.23572)

FJ 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEF8530000 0003B000 C:\Windows\system32\WINMM.dll (6.1.7600.16385)

QE 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEF82D0000 00003000 C:\Windows\system32\api-ms-win-core-synch-l1-2-0.DLL (10.0.10586.788)

KH 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFBE30000 00015000 C:\Windows\system32\NLAapi.dll (6.1.7601.17964)

LK 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEF8C50000 00015000 C:\Windows\system32\napinsp.dll (6.1.7600.16385)

QJ 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFC810000 00055000 C:\Windows\System32\mswsock.dll (6.1.7601.23451)

FH 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFC640000 0005B000 C:\Windows\system32\DNSAPI.dll (6.1.7601.17570)

DJ 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEF8C40000 0000B000 C:\Windows\System32\winrnr.dll (6.1.7600.16385)

IE 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFC1E0000 00007000 C:\Windows\System32\wshtcpip.dll (6.1.7600.16385)

PG 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFC800000 00007000 C:\Windows\System32\wship6.dll (6.1.7600.16385)

JF 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEF8FD0000 00008000 C:\Windows\system32\rasadhlp.dll (6.1.7600.16385)

CJ 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFA840000 00053000 C:\Windows\System32\fwpuclnt.dll (6.1.7601.18283)

DK 2 09:44:15.242 ZZZ (EURJPY,M1)            : 000007FEFCA60000 00018000 C:\Windows\system32\CRYPTSP.dll (6.1.7601.23471)

OJ 2 09:44:15.242 ZZZ (EURJPY,M1)              000000014018F8A7 E8A4060000        call       0x14018ff50  ; #10045 (terminal64.exe)

Файлы:
 
Galina Bobro:

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

----

У меня вот красота и даже не знаю что могло быть, это просто юзер решил снять советник с ВПС сегодня. Советники (все с этого счета) юзают ZZZ индюк, советник ставит индикатор на график и так же снимает по окончанию работы.

Хотя этот индикатор уже месяцами работает и на втором ВПС все ок.  И много таких ошибок посыпалось... По идее, при любом криворуком программисте, не должно быть аж так плохо. 


Это был впс виноват, я же написал. Не может быть такого что бы индикаторы не сразу читались, ошибка один на миллион или даже миллиард (а вообще никогда), потому что даже если даже такие операции не работают стабильно то можно будет забыть про весь остальной код :)

У меня похожая ошибка при проверке бота на маркете, в терминале никак не воспроизводится. Это что-то с компилятором, не правильный доступ к памяти.

Т.е. такое вам прямо терминал выдал? прямо во вкладку экспертс?

 
Maxim Dmitrievsky:

Это был впс виноват, я же написал. Не может быть такого что бы индикаторы не сразу читались, ошибка один на миллион или даже миллиард (а вообще никогда), потому что даже если даже такие операции не работают стабильно то можно будет забыть про весь остальной код :)


Легко могут: с одного индюка читала другой на старшем ТФ, при загрузке стабильно выдавал штук 5 ошибок 4806. Просто в таком случае ждем след. тика и норм потом, да некоторые тики поначалу пропускали, но это не критично. Потом отключила уведомление о ошибке т.к. у заказчика вопросы начинались)

 
Galina Bobro:

Легко могут: с одного индюка читала другой на старшем ТФ, при загрузке стабильно выдавал штук 5 ошибок 4806. Просто в таком случае ждем след. тика и норм потом, да некоторые тики поначалу пропускали, но это не критично. Потом отключила уведомление о ошибке т.к. у заказчика вопросы начинались)


а что насчет вашей ошибки, это терминал возвращает? списки там случайно не используете?

Причина обращения: