Potrebbe essere più semplice riavviare il terminale ogni ora con un programma di terzi, questi errori non compaiono molto spesso, una o due volte al giorno...
Credo di aver capito. Ho bisogno di dare all'EA un comando per riavviare Windows (senza password di accesso) e mettere il terminale nell'autostart del sistema operativo. Grazie per le opzioni.
Dipende dal tipo di sistema. Più grande è la leva, più piccolo è il deposito, meglio è. Tuttavia, si dovrebbe prendere in considerazione che la società di brokeraggio può cambiare la leva: alcuni lo fanno periodicamente, altri - lo cambiano quando il deposito cresce oltre una certa quantità. La riduzione della leva finanziaria è uno strumento efficace per le società di intermediazione. Quando si usa un sistema simile alla martingala, è meglio lavorare con una leva 1:200 e più alta, meglio 1:500...1:1000.
-Aleksey-: Credo di aver capito. Ho bisogno di dare all'EA un comando per riavviare Windows (senza password di accesso) e mettere il terminale nell'autostart del sistema operativo. Grazie per le opzioni.
Troppo globale e piuttosto lento. Sarebbe sufficiente monitorare l'attività del terminale con RestartOnCrash, e in caso di fallimento della connessione dare il comando Alt+F4 al terminale (nello script via VinApi), il programma lo lancerà istantaneamente di nuovo.
evillive: Troppo globale e piuttosto lento. Sarebbe sufficiente monitorare l'attività del terminale con RestartOnCrash, e in caso di fallimento della connessione dare il comando Alt+F4 al terminale (nello script via VinApi), quel programma lo lancerà rapidamente di nuovo.
Connessione interrotta: l'errore 6 è gestito dal mio Expert Advisor attraverso il rescan del server. Ho trovato un esempio sul forum. O forse intendi un altro errore? Guarderò il programma, grazie.
L'errore generale porta anche a una perdita di connessione. Sopra ho scritto che mi sono messo nello script terminale s-Reconnect, gestisce errori come No connection e General Error, quando si verificano ri-login e tutto. Ma è più facile riavviare il terminale a qualsiasi errore del genere, ci vuole circa lo stesso tempo.
Questo script restart.vbs riavvia il terminale. Come posso eseguirlo dall'EA?
'+++++++++++++++++++++
'terminate application
'+++++++++++++++++++++
Const strComputer = "."
Dim objWMIService, colProcessList
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'terminal.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
Set objWMIService = Nothing
Set colProcessList = Nothing
'+++++++++++++
'waiting pause
'+++++++++++++
WScript.Sleep 5000
'++++++++++++++++
'run appplication
'++++++++++++++++
Dim ProgramPath, objShell
ProgramPath = "D:\Program Files\Metatrader\terminal.exe"
Set objShell = createobject("Wscript.Shell")
objShell.Run Quote(ProgramPath), 1
Set objShell = Nothing
'+++++++++++++++++
'quotes processing
'+++++++++++++++++
Function Quote(sText)
Quote = chr(34) & sText & chr(34)
End Function
Non c'è bisogno di usare il consulente. Puoi eseguire questo script ogni mezz'ora o un'ora attraverso lo scheduler.
Perché no, se un errore è stato rilevato dall'Expert Advisor? Si può fallire nell'impostare o modificare un ordine entro mezz'ora. Cos'è uno scheduler - non ne ho mai usato uno...?
Dipende dal tipo di sistema. Più grande è la leva, più piccolo è il deposito, meglio è. Tuttavia, si dovrebbe prendere in considerazione che la società di brokeraggio può cambiare la leva: alcuni lo fanno periodicamente, altri - lo cambiano quando il deposito cresce oltre una certa quantità. La riduzione della leva finanziaria è uno strumento efficace per le società di intermediazione. Quando si usa un sistema simile alla martingala, è meglio lavorare con una leva 1:200 e più alta, meglio 1:500...1:1000.
Credo di aver capito. Ho bisogno di dare all'EA un comando per riavviare Windows (senza password di accesso) e mettere il terminale nell'autostart del sistema operativo. Grazie per le opzioni.
Troppo globale e piuttosto lento. Sarebbe sufficiente monitorare l'attività del terminale con RestartOnCrash, e in caso di fallimento della connessione dare il comando Alt+F4 al terminale (nello script via VinApi), quel programma lo lancerà rapidamente di nuovo.
Questo script restart.vbs riavvia il terminale. Come posso eseguirlo dall'EA?
'+++++++++++++++++++++ 'terminate application '+++++++++++++++++++++ Const strComputer = "." Dim objWMIService, colProcessList Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'terminal.exe'") For Each objProcess in colProcessList objProcess.Terminate() Next Set objWMIService = Nothing Set colProcessList = Nothing '+++++++++++++ 'waiting pause '+++++++++++++ WScript.Sleep 5000 '++++++++++++++++ 'run appplication '++++++++++++++++ Dim ProgramPath, objShell ProgramPath = "D:\Program Files\Metatrader\terminal.exe" Set objShell = createobject("Wscript.Shell") objShell.Run Quote(ProgramPath), 1 Set objShell = Nothing '+++++++++++++++++ 'quotes processing '+++++++++++++++++ Function Quote(sText) Quote = chr(34) & sText & chr(34) End FunctionQuesto script restart.vbs riavvia il terminale. Come si esegue dall'EA?
Non è necessario eseguirlo dall'Expert Advisor. Puoi eseguire questo script ogni mezz'ora o ogni ora attraverso lo scheduler.
Non c'è bisogno di usare il consulente. Puoi eseguire questo script ogni mezz'ora o un'ora attraverso lo scheduler.
Bene, allora, ecco https://www.mql5.com/ru/forum/106619
Windows Task Scheduler, permette di fare cose come inviare posta, eseguire applicazioni/script/bottoni, ecc. su una pianificazione o per segnale.