Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Модифицируя текст случайно не поставил константу в определении строки.
Компилятор проглотил дез диагностики, при работе эксперта естественно были ошибки.
int Log(int Level, string mes = "") { if (LogLevel() >= Level) { string sLevel = ; for (int i = 0; i < Level; i++) sLevel = sLevel + " "; ................init и deinit не вызываются.
А наверное нужно бы?
//+------------------------------------------------------------------+ //| SortArr.mq4 | //| Copyright © 2005, AU | //| http://www.lan.kiev.ua | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, AU" #property link "http://www.lan.kiev.ua" //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- double TmpArr[7]={4,1,6,3,9,12,3}; ArraySort(TmpArr,MODE_DESCEND);// for (int i=7-1; i>=0; i--){Print(" TmpArr[",i,"]=",TmpArr[i]);} //---- return(0); } //+------------------------------------------------------------------+Неправильнная сортировка
Так MODE_DESCEND должен быть четвертый по счету параметр. Какого же ты его вторым лепишь? Вместо количества сортируемых элементов.
то при посылке и модификации (?) ордера появляется окно подтверждения.
При этом
1. в окне непонятно что пытался делать эксперт покупать или продавать.
2. нет кнопки отказа от действий, в этом случае непонятно зачем такое подтверждение нужно.
Пока писал этот пост, попробовал снять галку ручного подтверждения.
В результате МТ свалился с крешем.
Crash Details:
The instruction at "0x73dd1351" referenced memory at "0x00000004" ....
Сам креш отослать не успел, он тоже свалился пока я раздумывал.
Билд 165.
Внешние длл не используются.
Открыто около 10 окон, на всех запущено по 1 индикатору и по эксперту (1 из них с ручным подтверждением сделок).
Единственная вещь которая могла бы вызвать подозрение,
в индикаторах использована функция
// Устранение подвисания терминала при расчете индикаторов. // Функция Idle вставляется в цикл расчета индикатора. int _hwnd = 0; int Idle() { if (_hwnd == 0) _hwnd = WindowHandle(Symbol(),Period()); if (_hwnd != 0) SendMessageA(_hwnd,0,0,0); }Вызывалась в данном случае 1 раз на тик.
то при посылке и модификации (?) ордера появляется окно подтверждения.
при ручном подтверждении любая торговая операция: открытие, модификация, закрытие, удаление - будет сопровождаться окном подтверждения. чтобы отличить это окно от стандартного окна, в тиковом графике фоном написано "Expert"
При этом
1. в окне непонятно что пытался делать эксперт покупать или продавать.
смотрите заголовок окна - там написано buy или sell
2. нет кнопки отказа от действий, в этом случае непонятно зачем такое подтверждение нужно.
есть крестик в правом верхнем углу
Крестик есть, но действие его как бы неочевидно.
Было бы намного понятнее, если бы в режиме подтверждения на форме появлялась кнопка "Отказ".
надпись я конечно сразу не заметил, но не суть.
Наверное если эксперт дает команду "Купить",
то кнопочка "Sell" и пр. должны быть задизейблены.
Т.е. чтобы у юзера был выбор подтвердить/отказать,
и может быть поправить стопы/тейки.
Все ИМХО, но думаю юзерам так было бы удобнее.
int start() { //---- int cb; for(cb=Bars-1;cb>=0;cb--) { if(TimeYear(Time[cb])>1989) { //пересечение маин вниз и спад маин if(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+2)> iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+2)&& iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+1)<= iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+1)&& iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+1)<= iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+2)) /* && iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+1)<= iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+2))*/ { Print(ObjectCreate("down"+cb,OBJ_ARROW,0,Time[cb],Open[cb])); Print(ObjectSet("down"+cb,OBJPROP_COLOR,Yellow)); Print(ObjectSet("down"+cb,OBJPROP_WIDTH,2)); Print(ObjectSet("down"+cb,OBJPROP_ARROWCODE,242)); } //пересечение маин вверх и рост if(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+2)< iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+2)&& iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+1)>= iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+1)&& iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+1)>= iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,cb+2)) /* && iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+1)<= iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,cb+2))*/ { Print(ObjectCreate("down"+cb,OBJ_ARROW,0,Time[cb],Open[cb])); Print(ObjectSet("down"+cb,OBJPROP_COLOR,Yellow)); Print(ObjectSet("down"+cb,OBJPROP_WIDTH,2)); Print(ObjectSet("down"+cb,OBJPROP_ARROWCODE,241)); } } } //---- return(0); }привела к крешу:
There has been a critical error Time : 2005.05.22 16:19 Program : Client Terminal Version : 4.00 (build: 169, May 10 2005) Owner : MetaTrader OS : Windows XP Professional 5.1 Service Pack 2 (Build 2600) Processors : 1, type 586, level 6 Memory : 523764/172060 kb Exception : C0000005 Address : 004521B5 Access Type : read Access Addr : 0000003C Registers : EAX=00000000 CS=001b EIP=004521B5 EFLGS=00010246 : EBX=00000000 SS=0023 ESP=013EFEE4 EBP=013EFF64 : ECX=0000003C DS=0023 ESI=0044F2BE FS=003b : EDX=000000DA ES=0023 EDI=017BF1F8 GS=0000 Stack Trace : 00446E65 7C80B50B 00000000 00000000 : 00000000 00000000 00000000 00000000 : 00000000 00000000 00000000 00000000 : 00000000 00000000 00000000 00000000 Modules : 1 : 00400000 00246000 D:\Forex\MetaTrader 4\terminal.exe 2 : 20000000 002CD000 C:\WINDOWS\system32\xpsp2res.dll 3 : 5B260000 00038000 C:\WINDOWS\system32\UxTheme.dll 4 : 61EC0000 0000E000 C:\WINDOWS\system32\MFC42LOC.DLL 5 : 698B0000 00058000 C:\WINDOWS\system32\hnetcfg.dll 6 : 71A30000 00040000 C:\WINDOWS\system32\mswsock.dll 7 : 71A70000 00008000 C:\WINDOWS\System32\wshtcpip.dll 8 : 71A80000 00008000 C:\WINDOWS\system32\WS2HELP.dll 9 : 71A90000 00017000 C:\WINDOWS\system32\WS2_32.dll 10 : 72CD0000 00008000 C:\WINDOWS\system32\msacm32.drv 11 : 72CE0000 00009000 C:\WINDOWS\system32\wdmaud.drv 12 : 73D90000 000FE000 C:\WINDOWS\system32\MFC42.DLL 13 : 746E0000 0004B000 C:\WINDOWS\system32\MSCTF.dll 14 : 76350000 00005000 C:\WINDOWS\system32\MSIMG32.dll 15 : 76380000 00049000 C:\WINDOWS\system32\comdlg32.dll 16 : 76B20000 0002E000 C:\WINDOWS\system32\WINMM.dll 17 : 76C20000 0002E000 C:\WINDOWS\system32\WINTRUST.dll 18 : 76C80000 00028000 C:\WINDOWS\system32\IMAGEHLP.dll 19 : 76F10000 00027000 C:\WINDOWS\system32\DNSAPI.dll 20 : 76F50000 0002D000 C:\WINDOWS\system32\WLDAP32.dll 21 : 76FA0000 00008000 C:\WINDOWS\System32\winrnr.dll 22 : 76FB0000 00006000 C:\WINDOWS\system32\rasadhlp.dll 23 : 77110000 0008C000 C:\WINDOWS\system32\OLEAUT32.dll 24 : 773C0000 00102000 C:\WINDOWS\WinSxS\ X86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.dll 25 : 774D0000 0013D000 C:\WINDOWS\system32\ole32.dll 26 : 77A70000 00095000 C:\WINDOWS\system32\CRYPT32.dll 27 : 77B10000 00012000 C:\WINDOWS\system32\MSASN1.dll 28 : 77BC0000 00007000 C:\WINDOWS\system32\midimap.dll 29 : 77BD0000 00015000 C:\WINDOWS\system32\MSACM32.dll 30 : 77C00000 00058000 C:\WINDOWS\system32\msvcrt.dll 31 : 77D30000 00090000 C:\WINDOWS\system32\USER32.dll 32 : 77DC0000 000AC000 C:\WINDOWS\system32\ADVAPI32.dll 33 : 77E70000 00091000 C:\WINDOWS\system32\RPCRT4.dll 34 : 77F10000 00046000 C:\WINDOWS\system32\GDI32.dll 35 : 77F60000 00076000 C:\WINDOWS\system32\SHLWAPI.dll 36 : 7C800000 000F6000 C:\WINDOWS\system32\kernel32.dll 37 : 7C900000 000B1000 C:\WINDOWS\system32\ntdll.dll 38 : 7C9C0000 00818000 C:\WINDOWS\system32\SHELL32.dll Call stack : 0044F0E0:30D5 [004521B5] ?ExecuteStaticAsm@CExpertInterior 00446D40:0125 [00446E65] ?RunExpertInt@CExpertInterior 7C80B357:01B4 [7C80B50B] GetModuleFileNameA [C:\WINDOWS\system32\kernel32.dll]причем ошибка не стабильная, потому что на следующем запуске скрипта все опять-таки отработалось без проблем
Спасибо - обязательно проверим. В понедельник выпустим билд 170 с рядом поправок в обработчике MQL4 кода.