Скачать MetaTrader 5

перезапуск терминала по времени

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
trinitron
816
trinitron  

Всем привет.

Вообщем пару недель подряд наблюдаю такую картину. Роботы которые писал Х месяцев назад торгуют нормально первые Х часов (или минут), а потом останавливаются. Проблему решает или перезапуск робота, или в крайнем случае перезапуск всего терминала. Могу конечно прогу набросать чтобы автоматически перезапускала теримналы по таймеру, но может есть уже готовое решение?

Андрей
1890
Андрей  
А лог при входе в start() вести пытались?
А если параллельно запустить эксперт без начинки (голый start() с логом)- что из этого выйдет?
А если логгировать все типа "собираюсь выполнить calculateLot()"- на какой функции все виснет?
Актер
2301
Актер  

Если мерзнут котиры, есть прожка, следит за логами и ребутит терминал, если тики не поступают Х сек/мин.

Соответственно можно и на зависании эксперта тоже самое сделать. Но если он виснет, то правильнее конечно будет разобраться в причине, а не лечить следствие.

Андрей
1890
Андрей  
А перезапуск робота как котирам помогает?
Актер
2301
Актер  
jartmailru:
А перезапуск робота как котирам помогает?
Не робота - терминала. Больше ничего не помогает.
trinitron
816
trinitron  
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.
Актер
2301
Актер  
trinitron:
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.
А почему по таймеру? Или виснет строго периодично?
Yuri
634
Yuri  

Перезапуск системы каждые четыре часа. Терминал прописывать в "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.
trinitron
816
trinitron  

Спасибо, протестирую исходник.

Уже написал на делфи, свою прогу котора перезапускает список программ по времени.

trinitron
816
trinitron  
кстати крик души гляньте плиз мой топик по подсчету профита по валютным парам. Ошибки в упор не вижу а считается все крыво
http://forum.mql4.com/ru/44099
Abzasc
1284
Abzasc  
trinitron:
Вообщем пишу прога которая по таймеру перзапускает все терминалы путь к которым проипсан в конфиге у проги. Пока это самый изящный путь.

Ось какая?

В Висте/7ке планировщик заданий весьма продвинутый (будильником у меня работает).

Или XStarter в помощь.

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий