Креш

 
There has been a critical error
Time        : 2005.07.14 17:46
Program     : Client Terminal
Version     : 4.00 (build: 177, Jul 13 2005)
Owner       : MetaQuotes Software Corp. (MetaTrader)
OS          : Windows XP Professional 5.1 Service Pack 2 (Build 2600)
Processors  : 1, type 586, level 6
Memory      : 359920/92416 kb
Exception   : C0000005
Address     : 0046F0BC
Access Type : write
Access Addr : 3B8E4B86

Registers   : EAX=00000007 CS=001b EIP=0046F0BC EFLGS=00010202
            : EBX=01CF2D80 SS=0023 ESP=0260FED4 EBP=0260FF5C
            : ECX=00000007 DS=0023 ESI=01CF2D80 FS=003b
            : EDX=01CDCB38 ES=0023 EDI=3B8E4B86 GS=0000

Stack Trace : 00463077 0044CCBD 77C3A3B0 7C80B50B
            : 00000000 00000000 00000000 00000000
            : 00000000 00000000 00000000 00000000
            : 00000000 00000000 00000000 00000000
Modules     :
          1 : 00400000 002C7000 C:\Program Files\MetaTrader 4\terminal.exe
          2 : 20000000 002C5000 C:\WINDOWS\system32\xpsp2res.dll
          3 : 5AD70000 00038000 C:\WINDOWS\system32\UxTheme.dll
          4 : 662B0000 00058000 C:\WINDOWS\system32\hnetcfg.dll
          5 : 71A50000 0003F000 C:\WINDOWS\system32\mswsock.dll
          6 : 71A90000 00008000 C:\WINDOWS\System32\wshtcpip.dll
          7 : 71AA0000 00008000 C:\WINDOWS\system32\WS2HELP.dll
          8 : 71AB0000 00017000 C:\WINDOWS\system32\WS2_32.dll
          9 : 72D10000 00008000 C:\WINDOWS\system32\msacm32.drv
         10 : 72D20000 00009000 C:\WINDOWS\system32\wdmaud.drv
         11 : 73DD0000 000FE000 C:\WINDOWS\system32\MFC42.DLL
         12 : 74720000 0004B000 C:\WINDOWS\system32\MSCTF.dll
         13 : 76380000 00005000 C:\WINDOWS\system32\MSIMG32.dll
         14 : 763B0000 00049000 C:\WINDOWS\system32\comdlg32.dll
         15 : 76B40000 0002D000 C:\WINDOWS\system32\WINMM.dll
         16 : 76C30000 0002E000 C:\WINDOWS\system32\WINTRUST.dll
         17 : 76C90000 00028000 C:\WINDOWS\system32\IMAGEHLP.dll
         18 : 76F20000 00027000 C:\WINDOWS\system32\DNSAPI.dll
         19 : 76F60000 0002C000 C:\WINDOWS\system32\WLDAP32.dll
         20 : 76FB0000 00008000 C:\WINDOWS\System32\winrnr.dll
         21 : 76FC0000 00006000 C:\WINDOWS\system32\rasadhlp.dll
         22 : 77120000 0008C000 C:\WINDOWS\system32\OLEAUT32.dll
         23 : 773D0000 00102000 C:\WINDOWS\WinSxS\X86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.dll
         24 : 774E0000 0013D000 C:\WINDOWS\system32\ole32.dll
         25 : 77A80000 00094000 C:\WINDOWS\system32\CRYPT32.dll
         26 : 77B20000 00012000 C:\WINDOWS\system32\MSASN1.dll
         27 : 77BD0000 00007000 C:\WINDOWS\system32\midimap.dll
         28 : 77BE0000 00015000 C:\WINDOWS\system32\MSACM32.dll
         29 : 77C10000 00058000 C:\WINDOWS\system32\msvcrt.dll
         30 : 77D40000 00090000 C:\WINDOWS\system32\USER32.dll
         31 : 77DD0000 0009B000 C:\WINDOWS\system32\ADVAPI32.dll
         32 : 77E70000 00091000 C:\WINDOWS\system32\RPCRT4.dll
         33 : 77F10000 00046000 C:\WINDOWS\system32\GDI32.dll
         34 : 77F60000 00076000 C:\WINDOWS\system32\SHLWAPI.dll
         35 : 7C800000 000F4000 C:\WINDOWS\system32\kernel32.dll
         36 : 7C900000 000B0000 C:\WINDOWS\system32\ntdll.dll
         37 : 7C9C0000 00814000 C:\WINDOWS\system32\SHELL32.dll

Call stack  :
0046E3D0:0CEC [0046F0BC] ?ExecuteStaticAsm@CExpertInterior
00462E6D:020A [00463077] ?RunExpertInt@CExpertInterior
0044CC9D:0020 [0044CCBD] ?ThreadFunctionRun@CExpert
77C3A307:00A9 [77C3A3B0] _endthreadex                     [C:\WINDOWS\system32\msvcrt.dll]
7C80B357:01B4 [7C80B50B] GetModuleFileNameA               [C:\WINDOWS\system32\kernel32.dll]


Переписал немного эксперта,
Терминал падает на вызове моей функции.

int ASC(string Sym, int TimeFrame, int RISK, int Shift)
{
Alert2(-91);
   int    Len =  3 + RISK * 2;
   double x1  = 67 + RISK;
   double x2  = 33 - RISK;
Alert2(-92);
   double WprAbs = 100 + iWPR(Sym, TimeFrame, Len, Shift);
Alert2(-93);

   int Signal = 0;
   if (WprAbs > x1) Signal =  1;
   if (WprAbs < x2) Signal = -1;
Alert2(-94);
   return(Signal);
}

int newBar()
{
   int Signal = ASC(Symbol(),PERIOD_D1,RISK,1);
Alert2(-11);
   
   BuySignal2  = Signal > 0;
   SellSignal2 = Signal < 0;
Alert2(-10);
   Range = (iATR(NULL,PERIOD_D1,20,1) + iATR(NULL,PERIOD_D1,5,1))/2.;
Alert2(-101);
}

int newTick() 
{
Alert2(-9);
   int Signal1 = ASC(Symbol(),PERIOD_D1,RISK,0);
Alert2(-8);
   int Signal2 = ASC(Symbol(),PERIOD_W1,RISK,0);


При запуске вызывается сначала newBar(), в ней ASC срабатывает.
Затем вызывается newTick().
Алерт -9 есть, -8 уже нет.

 
не падает.
не могли бы Вы предоставить полный текст падучего эксперта
 
Отправил на адрес Рената.
 
почему не на мой? stringoATmetaquotesDOTru
ждите до завтра тогда.
 
Какой был, на тот и послал.
Продублировал на ваш.
 
получил. воспроизвёл. спасибо.
 
вскрытие показало глюк в компилере, который мы будем исправлять.
а пока уберите функцию deinit (которая у Вас совсем пустая). либо напишите
int deinit() { return(0); }
в теле функции должна быть хотя бы одна строка кода.
спасибо.
 
Да, встречался похожий глюк и раньше.
Но не терминал падал, а компилятор выдавал ошибки синтаксиса,
если в тексте была функция без тела.
Причем это бывало не всегда.
Никакой связи тогда не обнаружил.