Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1288

 
YanSay:

Estou tentando fazer isso com a ShellExecuteW() da seguinte forma:

confira aqui:

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

o programa de tempo de execução e o arquivo devem ser especificados separadamente?
 
leonerd:


E esta situação se deve a quê? O mesmo índice de barras. E parece que isso só acontece na primeira corrida com um símbolo. Ou mais profundamente na história. Pensei acima, no código, que estava apenas verificando a presença de barras.

Os mesmos valores significam uma linha ou ponto vertical.
O código foi escrito como um exemplo para demonstrar sem fingir ser uma versão limpa .
 
Aleksei Stepanenko:

dê uma olhada aqui:

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

Talvez você deva especificar o programa a ser executado e o arquivo separadamente?

Ótimo, funcionou, obrigado!

Agora só falta construir uma verificação de execução no código para garantir que o código não continue até que o script seja executado, algum conselho sobre como implementar isso?

Tenho certeza que existe uma maneira mais confiável e adequada do que Dormir().

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

Você pode me dizer como fazer a EA retornar ao OnInit() em uma condição de "se"?

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

Como você pode fazer a EA retornar ao OnInit() em uma condição de if?

Embrulhe o código que você usa no OnInit() em uma função separada e chame esta função do OnInit() e, se necessário, do seu if()

 
YanSay:

Ótimo, funcionou, obrigado!

Agora só falta construir uma verificação de execução no código para garantir que o código não continue até que o script seja executado, algum conselho sobre como implementar isso?

Tenho certeza de que há uma maneira mais confiável e adequada do que Dormir().

Eu também fiz algumas experiências - abri a câmera, mas não posso fechá-la - até matar o 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:

Embrulhe o código que você usa no OnInit() em uma função separada e chame esta função do OnInit() e, se necessário, do seu if()

Estou entendendo o que você quer dizer. Não há nada mais simples, como o ExpertReload...Restart?
 
MakarFX:
Estou entendendo o que você quer dizer. Há algo mais fácil, como o ExpertReload...Restart?

não

Na MQL o modelo baseado em eventos, o que implica que o OnInit, OnTick ... é feito apenas pelo terminal

se você quer uma solução complexa ... Bem, troque o TF da EA - callOnInit, duvido que você estivesse procurando por isso ;)

 
MakarFX:
Estou entendendo o que você quer dizer. Não há nada mais simples, como o ExpertReload...Restart?

retornado do ontic

 
Igor Makanu:

não

Na MQL o modelo baseado em eventos, o que implica que o OnInit, OnTick ... é feito apenas pelo terminal

se você quer uma solução complexa ... Bem, troque o TF da EA - callOnInit, duvido que você estivesse procurando por isso ;)

Obrigado, estou vendo.