新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1288

 
YanSay:

我试图用ShellExecuteW()来做这件事,如下。

在此查看。

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

运行时程序和文件是否应单独指定?
 
leonerd:


而这种情况是由于什么造成的?同样的酒吧指数。而且这似乎只发生在符号的第一次运行上。要么深入到故事中。我以为上面的代码只是在检查是否存在条状物...

相同的数值意味着一条垂直的线或 点。
这段代码是作为示范的例子写的,没有假装是一个干净的版本。
 
Aleksei Stepanenko:

看一下这里。

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

也许你应该分别指定要执行的程序和文件?

很好,成功了,谢谢你!

现在还需要在代码中建立一个执行检查,以确保代码在脚本执行之前不会继续,有什么建议可以实现吗?

我相信有一个比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
}
 

你能告诉我如何使EA在一个if 条件下返回OnInit() 吗?

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

如何使EA在一个if 条件下返回OnInit()?

将你在OnInit()中使用的代码包在一个单独的函数中,并从OnInit()中调用这个函数,如果有必要的话,也可以从你的if()中调用。

 
YanSay:

很好,成功了,谢谢你!

现在剩下的就是在代码中建立一个执行检查,以确保代码在脚本执行之前不会继续下去,对于如何实现这一点有什么建议?

我相信有一个比Sleep()更可靠和正确的方法。

我也做了一些实验--我打开了相机,但不能关闭它--直到我杀死这个进程。

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

将你在OnInit()中使用的代码包在一个单独的函数中,并从OnInit()中调用这个函数,如果有必要,也可以从你的if()中调用。

我明白你的意思。难道就没有更简单的东西吗,比如ExpertReload...Restart?
 
MakarFX:
我明白你的意思。有没有什么更简单的方法,如ExpertReload.Restart?

在MQL中,基于事件的模型,这意味着OnInit, OnTick ...只由终端进行

如果你想要一个复杂的解决方案...好吧,从EA切换TF - 调用OnInit ,我怀疑你在寻找这个;)

 
MakarFX:
我明白你的意思。有没有更简单的方法,如ExpertReload.Restart?

海归人士

 
Igor Makanu:

在MQL中,基于事件的模型,这意味着OnInit, OnTick ...只由终端进行

如果你想要一个复杂的解决方案...好吧,从EA切换TF - 调用OnInit ,我怀疑你在寻找这个;)

谢谢你,我明白了。
原因: