我正在制作自定义指标...
设置为IndexBuffers的Double Arrays在每次创建新柱时自动向右移动。 和常量一样,例如Open [],Close []等。 原因很明显......当图表加载时,可以使用相同的代码,如图表更新时,无需重新计算现有的条形图。
int start()
{
int Counted_bars;
Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;
while(i>=0)
{
IndicatorBuffer[i] = [Some-calculations];
i--;
}
return (1);
}
有没有办法声明一个数组,每当创建一个新的条形图时,该数组也会自动移动?最好使用Existing API。所以喜欢:
enum Range{Low, Mid, high};
Range[] BarRange; //A Range value corresponding to each bar, calculates in the start loop.
如何使其与其他阵列保持同步?
答案 0 :(得分:0)
声明一个新数组并将其指定给SetIndexBuffer(number of array,arrayName, INDICATOR_CALCULATIONS)
,以便在绘制时保持不可见。如果你需要一个结构,它可以使用仅double
类型的数组 - 那么你必须使用其他东西(可能会将struct
更改为class
并填入{{1并检查每个栏以扩展它或添加新元素)
答案 1 :(得分:0)
最初的想法
enum Range{ Low,
Mid,
high
};
Range[] BarRange;
将(编辑2018 / Q1)超出编译器编译此类代码的意愿,
只需稍加修改的方法(使用基于此机制的大量基于阵列的分析和增强交易工具):
#define getLow 0
#define getMid 1
#define getHigh 2
double array_of_almost_structs[][];
// | |
// | +----------+
// | |
// fill data as needed row# ~ bar#, col# ~ { getLow | getMid | getHigh }
因此可以规避语法限制。
CustomIndicator
代码单元接口还有其他要点:鉴于您的代码执行单元应该通过 CustomIndicator
进程到进程接口使用,因此会出现更多问题。
MQL4 / 5代码的 ExpertAdvisor
类型会调用 iCustom()
接口代理。
这些细节阻止了您对MQL4 / 5代码的 CustomIndicator
类型的创新,因为“远程”调用启动器将无法正确“选择”-data-来自任何更智能的“远程”存储的元素,而不是通过“nailed”-down plain double array1D[];
隐式对齐/寻址,“注册”到分布式 CustomIndicator
{{1通过调用 <->
ExpertAdvisor
数据管理机制
对此没什么关系。