Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1288

 
YanSay:

Estoy tratando de hacer esto con ShellExecuteW() de la siguiente manera:

compruébelo aquí:

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

¿deben especificarse por separado el programa y el archivo de ejecución?
 
leonerd:


¿Y a qué se debe esta situación? El mismo índice de barras. Y sólo parece ocurrir en la primera ejecución de un símbolo. O bien profundizar en la historia. Pensaba que arriba en el código sólo se comprobaba la presencia de barras...

Los mismos valores significan una línea vertical o un punto.
El código fue escrito como un ejemplo para demostrar sin pretender ser una versión limpia .
 
Aleksei Stepanenko:

echa un vistazo aquí:

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

¿Tal vez debería especificar el programa a ejecutar y el archivo por separado?

Genial, ha funcionado, ¡gracias!

Ahora todo lo que queda por hacer es construir una comprobación de ejecución en el código para asegurarse de que el código no continúa hasta que el script se ejecuta, ¿algún consejo sobre cómo implementar esto?

Seguro que hay una forma más fiable y adecuada 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
}
 

¿Puedes decirme cómo hacer que el EA regrese a OnInit() en una condición if?

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

¿Cómo puede hacer que el EA regrese a OnInit() en una condición if?

Envuelva el código que utiliza en OnInit() en una función separada y llame a esta función desde OnInit() y si es necesario desde su if()

 
YanSay:

Genial, ha funcionado, ¡gracias!

Ahora todo lo que queda por hacer es construir una comprobación de ejecución en el código para asegurarse de que el código no continúa hasta que el script se ejecuta, ¿algún consejo sobre cómo implementar esto?

Seguro que hay una forma más fiable y adecuada que Sleep().

También he hecho algunos experimentos: abrí la cámara, pero no puedo cerrarla, hasta que mate el proceso.

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

Envuelva el código que utiliza en OnInit() en una función separada y llame a esta función desde OnInit() y, si es necesario, desde su if()

Entiendo lo que quieres decir. ¿No hay nada más sencillo, como ExpertReload..Restart?
 
MakarFX:
Entiendo lo que quieres decir. ¿Hay algo más fácil, como ExpertReload..Restart?

no

En MQL el modelo basado en eventos, que implica que OnInit, OnTick ... sólo lo hace el terminal

si quieres una solución compleja... Bueno, cambiar el TF de la EA - llamarOnInit, Dudo que usted estaba buscando eso ;)

 
MakarFX:
Entiendo lo que quieres decir. ¿No hay nada más sencillo, como ExpertReload..Restart?

retornado de ontic

 
Igor Makanu:

no

En MQL el modelo basado en eventos, que implica que OnInit, OnTick ... sólo lo hace el terminal

si quieres una solución compleja... Bueno, cambiar el TF de la EA - llamarOnInit, Dudo que usted estaba buscando eso ;)

Gracias, ya veo.
Razón de la queja: