0

尝试.exe使用. MQL4_ShellExecuteW()

这个命令是否只工作一次,还是不工作?

#import "shell32.dll"   // MQL4-syntax-wrapper-Bo[#import]Container
                        // v-------------- caller-side interface to DLL
        int ShellExecuteW( int    hWnd,
                           int    lpVerb,
                           string lpFile,
                           int    lpParameters,
                           int    lpDirectory,
                           int    nCmdShow
                           );
#import                 // MQL4-syntax-wrapper-Eo[#import]Container

if (  cond == true ){
      ShellExecuteW( 0, "open", "D:\\Execute.exe", "", "", 1 );
   }
4

1 回答 1

0

A:一个简短的版本

可能是,可能不是。

A:再深入一点 [TLDR]

事实: MT4 终端的流程控制/流程管理并无出众之处,但它允许您集成多条控制线来控制 MT4 终端内部(和外部......不仅通过ShellExecuteW(...)......)发生的事情。

MT4 终端支持每个的以下进程(通过内置线程):

  1. { 0 | 1 }称为 MQL4- ExpertAdvisor的单例实例的出现
  2. { 0 | 1 }称为 MQL4- Script的单例实例的出现
  3. { 0 | 1 ... n }出现称为 MQL4- TechnicalIndicator的功能受限实例

这些实例的性质在几个方面有所不同,但是在与您的问题最接近的情况下,每个过程都有一个强制性部分和一组任意部分。

以原文说话MQL4(可能已经注意到,自从 Build 7xx MQL4 语言语法越来越接近 MQL5,因此有时被标记为 MQL4.5 :o))

//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
//
// MQL4 code ----------------------------------------------------------<BoF>------

// MQL4 code compiler directives' section -----------------------<BoS>

#import ...                // MQL4-syntax-wrapper-Bo[#import]Container
        ..
        .
#import                    // MQL4-syntax-wrapper-Eo[#import]Container

// MQL4 code compiler directives' section -----------------------<EoS>

// ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//
// MQL4 code section ---------------------------- init() / start() / deinit()
//

int init(){    // this part is being run just once,
               //                        right upon an instance activation
   }

int start(){   // this part is being run just once, for an MQL4-Script
               //                        right upon an instance activation
               //                    run upon an FX-MarketEvent is being observed
               //                             in an MQL4-ExpertAdvisor
               //                             or
               //                             in an MQL4-TechnicalIndicator


   }
...
..
.
//
// MQL4 code ---------------------------------------------------------<EoF>------
//
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

因此,部署代码的确切位置(重新)使用通用 DLL 服务(#import-ed 用于编译时对齐和动态链接(重新使用)决定了外部进程已经执行了多少次被要求被调用。


诺塔贝内

将 MT4 终端与外部进程或远程进程(云和网格)集成在一起,有很多更智能的方法,而不仅仅是基于 DLL 的另一个盲聋无法管理的<localhost>进程。

通常,需要进程之间的进程控制和双向通信。

不要犹豫,问更多。

MT4(加上一些额外的工具)可以做到。

于 2015-04-21T22:24:26.263 回答