A:一个简短的版本
可能是,可能不是。
A:再深入一点 [TLDR]
事实:
MT4 终端的流程控制/流程管理并无出众之处,但它允许您集成多条控制线来控制 MT4 终端内部(和外部......不仅通过ShellExecuteW(...)
......)发生的事情。
MT4 终端支持每个图的以下进程(通过内置线程):
{ 0 | 1 }
称为 MQL4- ExpertAdvisor的单例实例的出现
{ 0 | 1 }
称为 MQL4- Script的单例实例的出现
{ 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(加上一些额外的工具)可以做到。