指标问题 - 页 2 12345678 新评论 Agent86 2011.09.28 04:52 #11 1代表真,0代表假,对吗? 我明天再想一想,看看能不能把这个问题搞清楚。 blackmore 2011.09.28 08:22 #12 Agent86: 1为真,0为假,对吗?<----,这是正确的,但 ,我明天再想一想,看看是否能弄清楚。 英国更多指的是你的MACD 值。 Simon Gniadkowski 2011.09.28 09:23 #13 faster和slower是双数,而不是bool ......从它的初始值开始,通过循环工作,也许会有3次迭代,所以对于Bars、Bars-1、Bars-2的值......更快和更慢的值是什么? Agent86 2011.09.28 22:50 #14 //+------------------------------------------------------------------+ //| //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 White //---- buffers double v1[]; double v2[]; double v3[]; double val1; double val2; double val3; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { //---- IndicatorBuffers(3); SetIndexArrow(0, 111); SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Blue); SetIndexBuffer(0, v1); SetIndexLabel(0,"Resistance"); SetIndexArrow(1, 111); SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Red); SetIndexBuffer(1, v2); SetIndexLabel(1,"Support"); SetIndexArrow(2, 111); SetIndexStyle(2,DRAW_ARROW,STYLE_DOT,1,White); SetIndexBuffer(2, v3); SetIndexLabel(2,"High A"); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i=Bars; double faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL for(i=Bars; i>=0; i--) { val1=iFractals(NULL, 0, MODE_UPPER,i); if (val1 > 0) { v1[i]=High[i]; Print ("v1[", i, "]= ", v1[i], " if"); Print ("i=",i, " faster=", faster); Print ("i=",i, " slower=",slower); } else { //v1[i]=v1[i+1]; //Print ("v1[", i, "]= ", v1[i], " else"); } val2=iFractals(NULL, 0, MODE_LOWER,i); if (val2 > 0) { v2[i]=Low[i]; Print ("v2[", i, "]= ", v2[i], " if"); } else { //v2[i]=v2[i+1]; //Print ("v2[", i, "]= ", v2[i], " else"); } } //---- return(0); } //+------------------------------------------------------------------+ 2011.09.28 16:43:30 sup_res EURUSD,M5: i=411 faster=-0.0005 2011.09.28 16:43:30 sup_res EURUSD,M5: v1[411]=1.3522 如果 2011.09.28 16:43:30 sup_res EURUSD,M5: v2[414]= 1.3495 if 2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 slower=-0.0007 2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 faster=-0.0005 2011.09.28 16:43:30 sup_res EURUSD,M5: v1[414]=1.3527 如果 2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 slower=-0.0007 2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 faster=-0.0005 2011.09.28 16:43:30 sup_res EURUSD,M5: v1[417]= 1.3528 if 2011.09.28 16:43:30 sup_res EURUSD,M5: v2[419]=1.3506 if 2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 slower=-0.0007 2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 faster=-0.0005 2011.09.28 16:43:30 sup_res EURUSD,M5: v1[420]=1.3523 如果 2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 slower=-0.0007 2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 faster=-0.0005 2011.09.28 16:43:30 sup_res EURUSD,M5: v1[426]=1.3522 如果 2011.09.28 16:43:30 sup_res EURUSD,M5: v2[429]=1.3481 if 当运行指示器时,会打印出这个信息 但同样的代码在EA中却没有打印出数组 2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=227 faster=-0.0015 2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[227]=0 if 2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v2[230]=0 if 2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 slower=-0.0013 2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 faster=-0.0015 2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[232]=0 if 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=825 faster=-0.0015 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[825]=0 if 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 slower=-0.0008 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 faster=-0.0015 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[829]=0 if 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 slower=-0.0008 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 faster=-0.0015 2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[832]=0 if 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=240 faster=-0.0011 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[240]=0 if 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[241]=0 if 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[245]=0 if 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 slower=-0.0003 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 faster=-0.0011 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[245]=0 if 2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[249]=0 if 我不知道为什么它又求助于不打印数组,因为它和指标的代码完全一样。 不管怎么说,我现在先在指标上下功夫。 这些数值似乎从4位数的小数到负4位数的小数都有。 如果我把iMACD移位改为i,那么更快和更慢=0,一直如此 Indicator Question Why my stop loss Bug report MT4 rev William Roeder 2011.09.28 23:47 #15 Agent86: 我试着在代码的不同区域插入if(faster > slower),只是为了玩玩这个想法。通常情况下,这些想法在EA中会起作用,但在指标中不会。 IEif(v1 > 0 && faster > slower) 但这导致了指标的消失。 试试这个变化// double faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN // slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL for(i=Bars-1; i>=0; i--) { double faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL Simon Gniadkowski 2011.09.29 00:19 #16 Agent86: 我不知道为什么它又诉诸于不打印数组,因为它和指标的代码完全一样 你不能在EA 中使用 指标 缓冲区......这解释了:https://www.mql5.com/en/articles/1456 在整个循环过程中,快和慢都是相同的值,而 i 的值在不断变化,这是你想要和需要的吗? Agent86 2011.09.29 03:17 #17 RaptorUK: 你不能在EA 中使用 指标 缓冲区......这解释了:https://www.mql5.com/en/articles/1456 在整个循环过程中,快和慢都是相同的值,而 i 的值在不断变化,这是你想要和需要的吗? 好的,谢谢你的链接。我忘了这一点。这对我来说是个很大的信息量。无知的障碍,大笑。 所以无论如何,我试图使高分形只在另一个条件发生时形成,如iMACD交叉,或EMA交叉或其他一些指标交叉。 这样,只有当所有条件都满足时,分形才会显示在指标上。 然后,我也会在类似条件下对低位分形进行处理。 我可能也会尝试添加更复杂的条件,只是为了学习如何去做。我的意思是,它可能不是iFractals,而是其他一些具有各种条件的指标,同时也是其他指标。 设计对我来说是个大问题,因为我没有经验,所以我没有见过许多一般代码中使用的战术或理论。所以我现在只能通过阅读别人的代码来学习,看看他们是如何工作的,并试图理解他们所做的事情,从中学习。 不管怎样,我会继续努力的,谢谢 Agent86 2011.10.02 03:45 #18 WHRoeder: 试试这样的改变 嗯,有意思 所以这个变量也必须在循环中声明。 好了,现在玩起来应该很有趣了,谢谢大家 blackmore 2011.10.02 04:18 #19 我更喜欢只实例化一次,所有循环的vrbs,先在循环之外。 如果你在循环中声明它们,每一次迭代,编译器都会创建新的变量。尽管它们看起来是一样的,但实际上它们不是。 double faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL for(i=Bars-1; i>=0; i--) { faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL William Roeder 2011.10.02 15:41 #20 diostar: 我更喜欢只实例化一次,所有循环的vrbs,先在循环之外。 如果你在循环中声明它们,对于每一次迭代,编译器都会创建新的变量。尽管它们看起来是一样的,但实际上它们不是。 你到底是怎么得出这个结论的,功能上 的区别是什么? 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我明天再想一想,看看能不能把这个问题搞清楚。
1为真,0为假,对吗?<----,这是正确的,但
,我明天再想一想,看看是否能弄清楚。
2011.09.28 16:43:30 sup_res EURUSD,M5: i=411 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[411]=1.3522 如果2011.09.28 16:43:30 sup_res EURUSD,M5: v2[414]= 1.3495 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 slower=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[414]=1.3527 如果
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 slower=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[417]= 1.3528 if
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[419]=1.3506 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 slower=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[420]=1.3523 如果
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 slower=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[426]=1.3522 如果
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[429]=1.3481 if
当运行指示器时,会打印出这个信息
但同样的代码在EA中却没有打印出数组
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=227 faster=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[227]=0 if
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v2[230]=0 if
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 slower=-0.0013
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 faster=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[232]=0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=825 faster=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[825]=0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 slower=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 faster=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[829]=0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 slower=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 faster=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[832]=0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=240 faster=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[240]=0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[241]=0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[245]=0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 slower=-0.0003
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 faster=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[245]=0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[249]=0 if
我不知道为什么它又求助于不打印数组,因为它和指标的代码完全一样。
不管怎么说,我现在先在指标上下功夫。
这些数值似乎从4位数的小数到负4位数的小数都有。
如果我把iMACD移位改为i,那么更快和更慢=0,一直如此
我试着在代码的不同区域插入if(faster > slower),只是为了玩玩这个想法。通常情况下,这些想法在EA中会起作用,但在指标中不会。
IEif(v1 > 0 && faster > slower)
但这导致了指标的消失。
我不知道为什么它又诉诸于不打印数组,因为它和指标的代码完全一样你不能在EA 中使用 指标 缓冲区......这解释了:https://www.mql5.com/en/articles/1456
在整个循环过程中,快和慢都是相同的值,而 i 的值在不断变化,这是你想要和需要的吗?
你不能在EA 中使用 指标 缓冲区......这解释了:https://www.mql5.com/en/articles/1456
在整个循环过程中,快和慢都是相同的值,而 i 的值在不断变化,这是你想要和需要的吗?
好的,谢谢你的链接。我忘了这一点。这对我来说是个很大的信息量。无知的障碍,大笑。
所以无论如何,我试图使高分形只在另一个条件发生时形成,如iMACD交叉,或EMA交叉或其他一些指标交叉。
这样,只有当所有条件都满足时,分形才会显示在指标上。
然后,我也会在类似条件下对低位分形进行处理。
我可能也会尝试添加更复杂的条件,只是为了学习如何去做。我的意思是,它可能不是iFractals,而是其他一些具有各种条件的指标,同时也是其他指标。
设计对我来说是个大问题,因为我没有经验,所以我没有见过许多一般代码中使用的战术或理论。所以我现在只能通过阅读别人的代码来学习,看看他们是如何工作的,并试图理解他们所做的事情,从中学习。
不管怎样,我会继续努力的,谢谢
试试这样的改变
所以这个变量也必须在循环中声明。
好了,现在玩起来应该很有趣了,谢谢大家
我更喜欢只实例化一次,所有循环的vrbs,先在循环之外。 如果你在循环中声明它们,每一次迭代,编译器都会创建新的变量。尽管它们看起来是一样的,但实际上它们不是。
我更喜欢只实例化一次,所有循环的vrbs,先在循环之外。 如果你在循环中声明它们,对于每一次迭代,编译器都会创建新的变量。尽管它们看起来是一样的,但实际上它们不是。