Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1288

 
YanSay:

Ich versuche, dies mit ShellExecuteW() wie folgt zu tun:

sehen Sie es sich hier an:

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

Sollten das Laufzeitprogramm und die Datei getrennt angegeben werden?
 
leonerd:


Und worauf ist diese Situation zurückzuführen? Der gleiche Balkenindex. Und es scheint nur beim ersten Durchlauf eines Symbols zu passieren. Entweder tiefer in die Geschichte einsteigen. Ich dachte, dass oben im Code nur auf das Vorhandensein von Balken geprüft wurde...

Die gleichen Werte bedeuten eine vertikale Linie oder einen Punkt.
Der Code wurde als Beispiel geschrieben, um zu demonstrieren, ohne vorzugeben, eine saubere Version zu sein.
 
Aleksei Stepanenko:

Schauen Sie hier nach:

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

Vielleicht sollten Sie das auszuführende Programm und die Datei getrennt angeben?

Großartig, es hat funktioniert, vielen Dank!

Jetzt bleibt noch, eine Ausführungsprüfung in den Code einzubauen, um sicherzustellen, dass der Code nicht fortgesetzt wird, bis das Skript ausgeführt wird, irgendwelche Ratschläge, wie dies zu implementieren?

Ich bin sicher, dass es eine zuverlässigere und angemessenere Methode als Sleep() gibt.

#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
}
 

Können Sie mir sagen, wie man den EA zurück zu OnInit() in einer Wenn-Bedingung?

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

Wie kann man den EA in einer Wenn-Bedingung zu OnInit() zurückkehren lassen?

Verpacken Sie den Code, den Sie in OnInit() verwenden, in eine separate Funktion und rufen Sie diese Funktion von OnInit() und ggf. von Ihrer if() aus auf

 
YanSay:

Großartig, es hat funktioniert, vielen Dank!

Jetzt bleibt nur noch, eine Ausführungsprüfung in den Code einzubauen, die sicherstellt, dass der Code nicht fortgesetzt wird, bis das Skript ausgeführt wird, irgendwelche Ratschläge, wie man das implementiert?

Ich bin sicher, dass es eine zuverlässigere und angemessenere Methode als Sleep() gibt.

Ich habe auch einige Experimente gemacht - ich habe die Kamera geöffnet, kann sie aber nicht schließen - bis ich den Prozess beende.

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

Verpacken Sie den Code, den Sie in OnInit() verwenden, in eine separate Funktion und rufen Sie diese Funktion von OnInit() und, falls erforderlich, von Ihrer if() auf

Ich verstehe, was Sie meinen. Gibt es nicht etwas Einfacheres, wie ExpertReload..Restart?
 
MakarFX:
Ich verstehe, was Sie meinen. Gibt es etwas Einfacheres, wie ExpertReload..Restart?

keine

In MQL das ereignisbasierte Modell, was bedeutet, dass OnInit, OnTick ... wird nur vom Terminal vorgenommen

wenn Sie eine komplexe Lösung wünschen ... Nun, schalten Sie die TF aus dem EA - AufrufOnInit, ich bezweifle, dass Sie auf der Suche nach, dass;)

 
MakarFX:
Ich verstehe, was Sie meinen. Gibt es nichts Einfacheres, wie ExpertReload..Restart?

Rückkehrer von ontic

 
Igor Makanu:

keine

In MQL das ereignisbasierte Modell, was bedeutet, dass OnInit, OnTick ... wird nur vom Terminal vorgenommen

wenn Sie eine komplexe Lösung wünschen ... Nun, schalten Sie die TF aus dem EA - AufrufOnInit, ich bezweifle, dass Sie auf der Suche nach, dass;)

Vielen Dank, ich verstehe.
Grund der Beschwerde: