Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1288

 
YanSay:

J'essaie de faire cela avec ShellExecuteW() comme suit :

Regardez ici :

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

Le programme d'exécution et le fichier doivent-ils être spécifiés séparément ?
 
leonerd:


Et cette situation est due à quoi ? Le même indice de barre. Et cela ne semble se produire que lors de la première exécution d'un symbole. Soit plus profondément dans l'histoire. Je pensais que le code ci-dessus vérifiait juste la présence de barres...

Les mêmes valeurs signifient une ligne ou un point vertical.
Le code a été écrit à titre d'exemple pour la démonstration sans prétendre être une version propre .
 
Aleksei Stepanenko:

Jetez un coup d'œil ici :

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

Peut-être devriez-vous spécifier le programme à exécuter et le fichier séparément ?

Super, ça a marché, merci !

Maintenant, il ne reste plus qu'à intégrer un contrôle d'exécution dans le code pour s'assurer que le code ne continue pas jusqu'à ce que le script s'exécute, des conseils sur la façon de mettre en œuvre cela ?

Je suis sûr qu'il existe une méthode plus fiable et plus appropriée que 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
}
 

Pouvez-vous me dire comment faire en sorte que l'EA retourne à OnInit() dans une condition if?

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

Comment faire en sorte que l'EA retourne à OnInit() dans une condition if?

Enveloppez le code que vous utilisez dans OnInit() dans une fonction séparée et appelez cette fonction depuis OnInit() et, si nécessaire, depuis votre if().

 
YanSay:

Super, ça a marché, merci !

Maintenant, tout ce qu'il reste à faire est d'intégrer un contrôle d'exécution dans le code pour s'assurer que le code ne continue pas jusqu'à ce que le script s'exécute, des conseils sur la façon de mettre en œuvre cela ?

Je suis sûr qu'il y a un moyen plus fiable et plus approprié que Sleep().

J'ai aussi fait quelques expériences - j'ai ouvert la caméra, mais je ne peux pas la fermer - jusqu'à ce que je tue le processus.

//+------------------------------------------------------------------+
//|                                                            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:

Enveloppez le code que vous utilisez dans OnInit() dans une fonction distincte et appelez cette fonction depuis OnInit() et, si nécessaire, depuis votre if().

Je vois ce que vous voulez dire. N'y a-t-il pas quelque chose de plus simple, comme ExpertReload..Restart ?
 
MakarFX:
Je vois ce que vous voulez dire. Y a-t-il quelque chose de plus facile, comme ExpertReload..Restart ?

pas de

Dans MQL le modèle basé sur les événements, qui implique que OnInit, OnTick ... ne se fait que par le terminal

si vous voulez une solution complexe ... Eh bien, changez le TF de l'EA - appelezOnInit, je doute que vous cherchiez cela ;)

 
MakarFX:
Je vois ce que vous voulez dire. N'y a-t-il rien de plus simple, comme ExpertReload..Restart ?

retour d'ontique

 
Igor Makanu:

pas de

Dans MQL le modèle basé sur les événements, qui implique que OnInit, OnTick ... ne se fait que par le terminal

si vous voulez une solution complexe ... Eh bien, changez le TF de l'EA - appelezOnInit, je doute que vous cherchiez cela ;)

Merci, je vois.