ICustom函数 - 页 15

 

有什么例子可以说明使用icustom函数来获得两个相同的时间框架的缓冲区?

由于两个时间段的缓冲区有相同的名称,我如何能够确定不同的时间段?

当前时间 框架

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

更高的时间框架

double trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

 
试着这样做。
double trend1minute = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0); double trend5minute = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

然后根据你的需要使用这两个变量(例如:如果(trend1minute == ... && trend5minute == ... )做一些事情)。

mtuppers:
有什么例子可以说明使用icustom函数来获得两个相同时间段的缓冲区?

由于2个缓冲区的名称相同,我怎样才能确定不同的时间框架?

当前时间框架

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

更高的时间框架

double trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);
 

在EA中使用iCustom,单一实例

大家好。

我正在编写一个使用自定义指标 的EA,当我回测时,我注意到每次调用iCustom函数时似乎都要加载一个新的指标实例。有谁知道有什么方法可以一次性加载自定义指标,并在每次调用时将其引用回来?

void OnBar()

{

RSIPL = iCustom(NULL,0,"NCH_DI",0,4,BarIndex);

TSL = iCustom(NULL,0,"NCH_DI",0,5,BarIndex);

HAOpen = iCustom(NULL,0,"HeikenAshi",0,2,BarIndex);

HAClose = iCustom(NULL,0,"HeikenAshi",0,3,BarIndex);

PACHigh = iMA(NULL,0,5,0,MODE_SMMA,PRICE_HIGH,BarIndex);

PACLow = iMA(NULL,0,5,0,MODE_SMMA,PRICE_LOW,BarIndex);

// DO MY OTHER STUFF HERE

}

上述代码在每次调用........,都会加载一个新的NCH_DI实例。

谢谢

 

不能做

这就是MT4的工作方式。最好的解决办法是尽量减少代码中iCustom()的调用次数。通常只有在形成新条形的时候才需要调用HA。每一次 调用都不是最佳选择。

 
CodeMeister:
这就是MT4的工作方式。最好的解决方案是尽量减少代码中iCustom()的调用次数。通常只有在形成新条形的时候才需要调用HA。每一次调用都不是最佳选择。

我确实把所有的调用都放在一个新的条形结构上。不幸的是,NCH_DI是一个相对密集内存的代码。你有什么建议可以让我抛弃旧的实例吗?

 

试试这个

策略测试器 并不是这个EA的最终目标。在图表上实时运行它才是。我相信只要你有足够的内存,iCustom()的加载就会在图表上发生一次,所以我不会花很多时间去做一些适合Strategy Tester的特殊性的工作。除了iCustom()之外,唯一的选择是在EA中直接编码指标。

 

我想过把它重新编码到EA....。我决定在这种情况下这是不实际的。我发现,如果我在指标中注释掉#属性 indicator_separate_window,它将在调用完成后加载和卸载,我将完成主要编码并演示一周左右,监测我的内存使用情况。谢谢大家,我会让你们知道进展如何。

 

关于iCustom Indicator 的问题

你好。

我的EA在使用自己的iCustom指标。

当一个新的蜡烛打开时,该指标被iCustom调用。

现在我意识到,iCustom[1]的值不等于前一栏的iCustom[0]。

这个值是相似的,但不完全是它应该是的,也是我为RSI验证的。

知道问题出在哪里吗?

谢谢你的每一个提示。

卡米洛

 

这取决于自定义指标 所使用的价格。如果你的自定义指标使用的是收盘价、最高价、最低价或任何其他在当前蜡烛发展过程中发生变化的价格,那么[0]指数的值将被改变。

例如,如果你调用使用自定义价格的指标,并比较[0]的值,在酒吧关闭后,你将与[1]的结果进行比较,几乎可以肯定,因为鸡蛋是鸡蛋,其值将是不同的。但是,如果你将自定义指标设置为使用开盘价而不是收盘价,那么数值将是相等的(这只是因为开盘价在蜡烛发展过程中没有变化)。

 

谢谢你的快速回答,Kalenzo。

检查了[2]的值,发现[1]->[2]的值看起来都很好。

这里有一个我的指标值的例子

.... [0]..........[1].........[2]

t4 31,8711 42,6700 52,1915

t3 44,6881 52,1915 60,3014

t2 53,0572 60,3014 67,6553

t1 59,8860 67,6553 74,5797

因此,看起来问题出在对开杠的识别上。

我只是用之前的检查方法。

if(Volume[0]>1)返回。

这样不是很好吗?