如果我有一个生成变量(myIndi
)的指标(Var1
),我该如何从EA访问Var1
?
我已尝试iCustom()
但未获得结果。
答案 0 :(得分:0)
有两种方式:
- 让这个变量成为缓冲区,并通过 iCustom();
来访问缓冲区和位置
- 将此变量写为GlobalVariablesOfClientTerminal并将其读作GV。
也可以在EA中移动指标的逻辑,在这种情况下,您将能够直接访问该参数,但这通常不那么容易。
答案 1 :(得分:0)
iCustom()
是EA与自定义指标之间的主要接口没有理由,为什么调用iCustom()
不会返回值,因为 myIndi
编译成功并且构建的自定义指标主要是正确的内部工作(不要犹豫发布MCVE代码示例来证明或证明这一点)。
下一步:
发布帖子的更新,以包含MCVE代码,以便查看此类调用的实际状态的根本原因:
retVal = iCustom( _Symbol, PERIOD_CURRENT, "myIndi",
<p1>,
<p2>,
...,
<id#>,
<shift>
);
以下方法对于EA端和指标端团队来说都是健壮的,可以平稳安全地分享不断变化的想法,并维护 iCustom()
EA端呼叫接口的所有版本干净,安全,另外创建一个更具可读性的调用接口(#define
- 用于有意义和连贯的行#-identifications的人类可读名称。)
自定义指标开发人员在自定义指标和EA团队的整个生命周期中维护这些部分,只需 #include
这些作为任何版本的自解释模板正在EA中使用。
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! <<_MAINTAINED_SECTION_>>.START
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!! -------------------------------------------||||||||||||||||||||||||||||||||||||||||||| POSITIONAL ORDINAL-NUMBERED CALLING INTERFACE ||||||||||||||||||||| all iCustom() call MUST BE REVISED ____________________________ !!!
//--- indicator parameters -------------------------------------------||||||||||||||||||||||||||||||||||||||||||| POSITIONAL ORDINAL-NUMBERED CALLING INTERFACE ||||||||||||||||||||| all iCustom() call MUST BE REVISED ____________________________ !!!
//!!! -------------------------------------------||||||||||||||||||||||||||||||||||||||||||| POSITIONAL ORDINAL-NUMBERED CALLING INTERFACE ||||||||||||||||||||| all iCustom() call MUST BE REVISED ____________________________ !!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#define XYZ_CUSTOM_INDICATOR_NAME "an_XYZ_<fileName_w/o_.MQ4>" // the Custom Indicator fileName
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//--- input parameters -------------------------------------------------------- iCustom( ) CALL INTERFACE
input int nBARs_period = 18;
extern double MUL_SIGMA = 0;
sinput ENUM_APPLIED_PRICE aPriceTYPE = PRICE_CLOSE;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/* = iCustom( _Symbol, PERIOD_CURRENT, XYZ_CUSTOM_INDICATOR_NAME, // |-> iCustom INDICATOR NAME
XYZ_nBARs_period, // |-> input1 nBARs_period
XYZ_MUL_SIGMA, // |-> input2 MUL_SIGMA
XYZ_PRICE_TYPE, // |-> input3 aPriceTYPE from: ENUM_APPLIED_PRICE
XYZ_<_VALUE_>_BUFFER_ID, // |-> line# --------------------------------------------from: { 0: Val1 == Buffer0[] | 1: Buffer1[] | ... }
aShift // |-> [aShift]-aTimeDOMAIN-offset of a Val1[] to return
); //
*/
#define XYZ_Val1_BUFFER_ID 0 // <---- <Val1>[]
#define XYZ_Val2_BUFFER_ID 1
#define XYZ_Val3_BUFFER_ID 2
#define XYZ_Val4_BUFFER_ID 3
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!! -------------------------------------------||||||||||||||||||||||||||||||||||||||||||| POSITIONAL ORDINAL-NUMBERED CALLING INTERFACE ||||||||||||||||||||| all iCustom() call MUST BE REVISED ____________________________ !!!
//--- indicator parameters -------------------------------------------||||||||||||||||||||||||||||||||||||||||||| POSITIONAL ORDINAL-NUMBERED CALLING INTERFACE ||||||||||||||||||||| all iCustom() call MUST BE REVISED ____________________________ !!!
//!!! -------------------------------------------||||||||||||||||||||||||||||||||||||||||||| POSITIONAL ORDINAL-NUMBERED CALLING INTERFACE ||||||||||||||||||||| all iCustom() call MUST BE REVISED ____________________________ !!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! <<_MAINTAINED_SECTION_>>.END
历史证明,任何其他方法都更加痛苦或风险更大。
对于此问题域,使用 GlobalVariable*
调用不是一个强大的用例,因为预期会出现许多副作用,并且此类代码值集成是在没有EA的情况下容易停止工作 - 能够检测到这种(语义)故障。
使用自定义指标逻辑&#34;内部&#34; EA是可能的,但是以完全重新设计逻辑为代价,因为EA代码执行单元的行为与MetaTrader4终端代码执行环境中的自定义指示器代码执行单元的行为不同。值得注意的是,由于MQL4语言(和终端) - 规则,仅对于HFT级项目或极其延迟敏感的实现来说,在进入这个方向之前仔细决定利弊和专业人员是有意义的。