А лог при входе в start() вести пытались?
А если параллельно запустить эксперт без начинки (голый start() с логом)- что из этого выйдет?
А если логгировать все типа "собираюсь выполнить calculateLot()"- на какой функции все виснет?
А если параллельно запустить эксперт без начинки (голый start() с логом)- что из этого выйдет?
А если логгировать все типа "собираюсь выполнить calculateLot()"- на какой функции все виснет?
Если мерзнут котиры, есть прожка, следит за логами и ребутит терминал, если тики не поступают Х сек/мин.
Соответственно можно и на зависании эксперта тоже самое сделать. Но если он виснет, то правильнее конечно будет разобраться в причине, а не лечить следствие.
А перезапуск робота как котирам помогает?
jartmailru:
А перезапуск робота как котирам помогает?
Не робота - терминала. Больше ничего не помогает.
А перезапуск робота как котирам помогает?
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.
trinitron:
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.
А почему по таймеру? Или виснет строго периодично?
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.
Перезапуск системы каждые четыре часа. Терминал прописывать в "Run" файла реестра (regedit).
type TForm1 = class(TForm) Timer1: TTimer; Button1: TButton; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; MPre: Word; implementation {$R *.dfm} procedure RebootSystem(Flags: UINT); var handle_: THandle; n: DWORD; luid: TLargeInteger; priv: TOKEN_PRIVILEGES; ver: TOSVERSIONINFO; begin ver.dwOSVersionInfoSize := Sizeof(ver); GetVersionEx(ver); if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then begin if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, handle_) then if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then begin priv.PrivilegeCount := 1; priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; priv.Privileges[0].Luid := luid; AdjustTokenPrivileges(handle_, false, priv, 0, nil, n); end end; if not ExitWindowsEx(Flags,1) then Form1.Caption := 'Ошибка'; end; procedure TForm1.Timer1Timer(Sender: TObject); var tm: TDateTime; Hour, Min, Sec, MSec: Word; begin tm := GetTime; DecodeTime(tm, Hour, Min, Sec, MSec); if (Min <> MPre) then begin if (MPre = 0) then begin if (((Hour + 2) mod 4) = 0) then RebootSystem(EWX_REBOOT); end; MPre := Min; Caption := IntToStr(MPre); end; //Caption := IntToStr(Hour)+':'+IntToStr(Min)+':'+IntToStr(Sec); end; procedure TForm1.Button1Click(Sender: TObject); begin if (Button1.Caption = 'Run') then Timer1.Enabled := true else Timer1.Enabled := false; if (Timer1.Enabled) then Button1.Caption := 'Stop' else Button1.Caption := 'Run'; end; procedure TForm1.FormCreate(Sender: TObject); begin MPre := 65535; end; end.
Спасибо, протестирую исходник.
Уже написал на делфи, свою прогу котора перезапускает список программ по времени.
кстати крик души гляньте плиз мой топик по подсчету профита по валютным парам. Ошибки в упор не вижу а считается все крыво
http://forum.mql4.com/ru/44099
trinitron:
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.
Ось какая?
В Висте/7ке планировщик заданий весьма продвинутый (будильником у меня работает).
Или XStarter в помощь.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет.
Вообщем пару недель подряд наблюдаю такую картину. Роботы которые писал Х месяцев назад торгуют нормально первые Х часов (или минут), а потом останавливаются. Проблему решает или перезапуск робота, или в крайнем случае перезапуск всего терминала. Могу конечно прогу набросать чтобы автоматически перезапускала теримналы по таймеру, но может есть уже готовое решение?