Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1288

 
YanSay:

Sto cercando di farlo con ShellExecuteW() come segue:

controlla qui:

https://www.mql5.com/ru/forum/160683/page1243#comment_18095301

bisogna specificare il programma da eseguire e il file separatamente?
 
leonerd:


E questa situazione a cosa è dovuta? Lo stesso indice della barra. E sembra accadere solo alla prima esecuzione di un simbolo. O più a fondo nella storia. Pensavo che sopra, nel codice, si controllasse solo la presenza di barre...

Gli stessi valori significano una linea o un punto verticale.
Il codice è stato scritto come esempio per dimostrare senza pretendere di essere una versione pulita.
 
Aleksei Stepanenko:

dare un'occhiata qui:

https://www.mql5.com/ru/forum/160683/page1243#comment_18095301

Forse dovresti specificare il programma da eseguire e il file separatamente?

Grande, ha funzionato, grazie!

Ora tutto quello che resta da fare è costruire un controllo di esecuzione nel codice per assicurarsi che il codice non continui fino all'esecuzione dello script, qualche consiglio su come implementare questo?

Sono sicuro che c'è un modo più affidabile e corretto di Sleep().

#import "shell32.dll"
int ShellExecuteW(int hWnd, string lpVerb, string lpFile, string lpParameters, string lpDirectory, int nCmdShow);
#import
#define  SW_SHOW 5
#define  SW_SHOWNORMAL 1

void OnStart()
{
   ShellExecuteW(NULL,"Open","python.exe","C:\\Users\\yansa\\Desktop\\test_script.py",NULL,SW_SHOW); 
   Sleep(10000);
   //Code continues
}
 

Puoi dirmi come far tornare l'EA a OnInit() in una condizione if?

 if(buy_lots>0||sell_lots>0)
  { Go to OnInit();}
 
MakarFX:

Come si può far tornare l'EA a OnInit() in una condizione if?

Avvolgete il codice che usate in OnInit() in una funzione separata e chiamate questa funzione da OnInit() e, se necessario, dal vostro if()

 
YanSay:

Grande, ha funzionato, grazie!

Ora tutto quello che resta da fare è costruire un controllo di esecuzione nel codice per assicurarsi che il codice non continui fino all'esecuzione dello script, qualche consiglio su come implementare questo?

Sono sicuro che c'è un modo più affidabile e corretto di Sleep().

Anch'io ho fatto alcuni esperimenti - ho aperto la telecamera, ma non posso chiuderla - finché non uccido il processo.

//+------------------------------------------------------------------+
//|                                                            1.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#import "shell32.dll"
int ShellExecuteW(int hWnd, string lpVerb, string lpFile, string lpParameters, string lpDirectory, int nCmdShow);
#import
#define  SW_SHOW 5
#define  SW_SHOWNORMAL 1
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   ShellExecuteW(NULL,"Open","C:\\Program Files (x86)\\Lenovo\\YouCam\\YouCam.exe","",NULL,SW_SHOW); 
  }
//+------------------------------------------------------------------+
 
Igor Makanu:

Avvolgete il codice che usate in OnInit() in una funzione separata e chiamate questa funzione da OnInit() e, se necessario, dal vostro if()

Capisco cosa intendi. Non c'è qualcosa di più semplice, come ExpertReload..Restart?
 
MakarFX:
Capisco cosa intendi. C'è qualcosa di più facile, come ExpertReload..Restart?

no

In MQL il modello basato sugli eventi, che implica che OnInit, OnTick ... è fatto solo dal terminale

se volete una soluzione complessa ... Beh, passa il TF dall'EA - chiamaOnInit, dubito che tu stessi cercando questo ;)

 
MakarFX:
Capisco cosa intendi. Non c'è niente di più semplice, come ExpertReload..Restart?

rientrante da ontica

 
Igor Makanu:

no

In MQL il modello basato sugli eventi, che implica che OnInit, OnTick ... è fatto solo dal terminale

se volete una soluzione complessa ... Beh, passa il TF dall'EA - chiamaOnInit, dubito che tu stessi cercando questo ;)

Grazie, capisco.