shanyang 2008-7-22 15:27
请问在主图表的指示箭头如何用icustom读取?
有一个指标,就是在出现买卖点的时候,在主图表出现朝上或者朝下的箭头表明买卖点
我想编制一个EA,调用icustom(),在当主图表出现箭头的时候自动买卖
假设该指标名字叫做“_3 MA Cross w_Alert v2"
那么icustom用法应该是icustom(0,0,"_3 MA Cross w_Alert v2",...aaa的输入参数......,0,0);
但是读取出来的icustom值没有任何变化
不知道什么缘故
最后两个参数没设置错误啊,分别是代表指标的数值buffer和shift
请教问题所在
xfxyldj 2008-7-22 15:59
_3 MA Cross w_Alert v2.mq4 ,没有细读。
只到看
fasterMAnow = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i+1);
fasterMAprevious = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i+2);
fasterMAafter = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i-1);
这三行,他用了i-1这个量。因此箭头不会出现在当前K线。你把icustom的最后一个参数改成1应该就有数据了
shanyang 2008-7-23 09:31
[quote]原帖由 [i]xfxyldj[/i] 于 2008-7-22 15:59 发表 [url=http://www.onefx.net/bbs/redirect.php?goto=findpost&pid=272441&ptid=48534][img]http://www.onefx.net/bbs/images/common/back.gif[/img][/url]
_3 MA Cross w_Alert v2.mq4 ,没有细读。
只到看
fasterMAnow = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i+1);
fasterMAprevious = iMA(NULL, 0, FasterMA, FasterShift, FasterM ... [/quote]
把最后的i换成1,确实数据有变化了,但不是我我想要的那种,理论上这个指标应该是在没有情况的时候,返回值为一个负值,在出现箭头的地方,返回值为>0
还有一个问题是,在backtest的时候,理论上应该每个tick改变的时候,都应该print出一个值,但我测试的时候,用的是1小时图表,理论上至少在每个小时蜡烛线都print出一个icustom的返回值,但现在的情况是,有时候要隔几天才会print出一个返回值,不知道这是什么缘故
附件里,“有问题EA”是我自己编写的那个测试EA。用来print icustom返回值的,“3MAcrossEA”是那个原版的可以用的,调用3MAcross alert指标的EA
请大师帮我看一下问题在哪里
[[i] 本帖最后由 shanyang 于 2008-7-23 10:10 编辑 [/i]]
xfxyldj 2008-7-23 12:24
对于第一个问题,指标中箭头指标数组没有赋初值。因此没有箭头的时候返回的是一个空值(NULL)。我说了这个指标用了i-1因此箭头不会出现在最后一条K线上(可以理解成一个小未来函数)因此要想取到值必须把icustom的最后一个参数改成1。
对于第二个问题,是你没弄清楚指标数组的实现过程。去吧那个指标的每一行代码产生的作用搞明白再来研究这个问题。