静态数组 ? - 页 3 123456 新评论 Simon Gniadkowski 2011.09.17 21:18 #21 好的,我看到了一些东西。 while(i>=0) { val1=iFractals(NULL, 0, MODE_UPPER,i); if (val1 > 0) v1[i]=High[i]; else v1[i]=v1[i+1]; val2=iFractals(NULL, 0, MODE_LOWER,i); if (val2 > 0) v2[i]=Low[i]; else v2[i]=v2[i+1]; i--; } 这个循环什么时候结束? 当i不>=0时,即-1 那么接下来的代码是. for(val1=High[i]; v1[i] == 0 ;i++) // or v1[i] == EMPTY_VALUE { Print (v1[i]); } 所以i的起始值是-1......因此你的打印输出。v[-1]实际上=0,所以循环结束。 Agent86 2011.09.18 02:39 #22 当我打印任何东西的时候,它似乎总是等于0 int i=Bars; while(i>=0) { val1=iFractals(NULL, 0, MODE_UPPER,i); if (val1 > 0) v1[i]=High[i]; else v1[i]=v1[i+1]; val2=iFractals(NULL, 0, MODE_LOWER,i); if (val2 > 0) v2[i]=Low[i]; else v2[i]=v2[i+1]; i--; } Print (v1[i+10]); 我已经把i改成了别的东西,还有while语句,甚至创建了一个完全不同的代码,所有这些似乎都=0,我不知道为什么。 但指标却在工作,而且缓冲区似乎能正确容纳v1[i]内的val1,但我却不能引用数组中的任何东西来打印它。 一切总是=0 我再继续读一些。 Agent86 2011.09.18 02:55 #23 for(v1[i]=High[i]; v1[i] !=0; i++) { Print (v1[i]); } This prints nothing so still having -1 issue I guess 但如果它以-1开始,那么它在循环一次后就会结束,因为i++会使它再次归零。 我不知道这个for语句会受到while语句的影响,因为它发生在while语句之外。 Agent86 2011.09.18 03:02 #24 int i=Bars; while(i>=0) { val1=iFractals(NULL, 0, MODE_UPPER,i); if (val1 > 0) { v1[i]=High[i]; Print (v1[i]); } else { v1[i]=v1[i+1]; } val2=iFractals(NULL, 0, MODE_LOWER,i); if (val2 > 0) v2[i]=Low[i]; else v2[i]=v2[i+1]; i--; } 即使在循环内部和之前打印,仍然是0 似乎连最基本的工作都被我忽略了。甚至在文档或书中读到Bars时也没有提到-1这个主题,至少在Bars或预定义变量部分,我认为它应该是这样。 这让我很沮丧。在这个简单的问题上花了1.5周的时间,但我认为这是最简单的任务,可以帮助我朝着正确的方向前进。 多么令人沮丧的事情啊!大笑 我明天会再试一下。 Simon Gniadkowski 2011.09.18 10:07 #25 你没有仔细阅读我的帖子 ...... Bars在任何时候都不等于-1 ......或者与我提到的-1有任何关系。 你在两个循环中使用i 变量 ...... 除非你在两个循环之间将其改为其他值,否则第二个循环的起始值将是第一个循环的结束值。 Agent86 2011.09.18 14:28 #26 我很迷惑 我完全摆脱了我的for循环,并认为我将只是在循环内打印。 我试着重新初始化i=0或i !=0,但没有效果。甚至完全换了一个变量,如val3-iFractals.....a。 而a=0,没有条,然后从那里也往上数,打印还是等于0。 我不明白为什么在循环内打印也不能工作,就像上面发布的代码一样。 谢谢 Simon Gniadkowski 2011.09.18 15:22 #27 也许你可以回答我一个问题 . . 为什么这么多没有编码经验的人似乎对添加打印 语句感到恐惧?为什么你想让自己的生活变得如此艰难 ......也许你喜欢S&M? 你有一个单一的Print语句 .你甚至不知道当时i 的值是多少,你也不知道val1 的值是多少......你知道iFractals是如何工作的吗,我是说它是如何计算的,它给出的值是什么范围? Simon Gniadkowski 2011.09.18 15:51 #28 我复制了你的代码,添加了一些打印语句并运行它......它正在打印......。 2011.09.18 14:42:24 Agent86 EURUSD,H1: v1[29]=1.4727 Agent86 2011.09.21 02:03 #29 RaptorUK:也许你可以回答我一个问题 . . 为什么这么多没有编码经验的人似乎对添加打印语句感到恐惧?为什么你想让自己的生活变得如此艰难 ......也许你喜欢S&M? 你有一个单一的Print语句 .你甚至不知道当时i 的值是多少,你不知道val1 的值是多少......你知道iFractals是如何工作的吗,我是说它是如何计算的,它给出的值的范围是什么? 我并不害怕添加打印 语句,我把它们放在每个变量后面,但不明白它在打印什么,为什么,因为它不是我期望看到的打印。你看到的那个单一的打印语句并不是我放在那里的唯一语句。如果我只试了一个单一的打印语句,我就不会发帖。经过2-3周的时间,我尝试了上百种方法,并阅读和重读了100多个帖子,以及字典、书、文档等,才发帖试图了解这个数组是如何工作的,以及如何打印元素和值 ,我每天工作2-3小时试图了解这个问题,但我没有多少进展,尽管我在试图弄清这个问题的时候学到了很多其他东西。我完全重写了代码,用for循环代替了while循环,并将数组限制为100个元素,以为这样可以简化一些;但仍然无法打印出数值。 我只是不明白。我以为iFractals给出的是一系列5根蜡烛中中间蜡烛的高/低值,前提是左边的2根蜡烛和右边的2根蜡烛比中间蜡烛高或低。标记或记录中间蜡烛的高点或低点。我不知道iFractals的实际计算方法,但我认为这并不重要,因为我正在打印它,如果>0,我认为这意味着真实,而且它被初始化为High[i]。我只是不明白这一点。 Agent86 2011.09.21 02:46 #30 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[0]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[1]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[2]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[3]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[4]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[5]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[6]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[7]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[8]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[9]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[10]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[11]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[12]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[13]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[14]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[15]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[16]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[17]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[18]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[19]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[20]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[21]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[22]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[23]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[24]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[25]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[26]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[27]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[28]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[29]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[30]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[31]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[32]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[33]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[34]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[35]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[36]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[37]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[38]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[39]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[40]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[41]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[42]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[43]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[44]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[45]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[46]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[47]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[48]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[49]=0 2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[50]=0 从这段代码来看,是的,除了val1之外,其他地方都有其他打印语句,在代码的任何地方尝试打印v1[i],结果都是=0 //+------------------------------------------------------------------+ //| Agent86_5min.mq4 | //| Unfinished POS | //| //+------------------------------------------------------------------+ #property copyright "Unfinished POS by Agent86" //---- input parameters extern double TakeProfit=20.0; extern double Lots=0.1; extern double StopLoss=15.0; extern int MagicNumber=123486; double v1[]; double v2[]; double v3[]; double val1; double val2; double val3; //++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.0015 0.00150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if (Digits == 5 || Digits == 3) { // Adjust for five (5) digit brokers. pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { 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(int i=Bars; i >= 0; i--) { val1=iFractals(NULL, 0, MODE_UPPER,i); // Print (val1, (" val1")); //will print some 0's if (val1 > 0) { v1[i]=High[i]; } else { v1[i]=v1[i+1]; } val2=iFractals(NULL, 0, MODE_LOWER,i); if (val2 > 0) { v2[i]=Low[i]; } else v2[i]=v2[i+1]; i--; } for(i=50; i>=0; i--) { Print ("v1[", i, "]= ", v1[i]); } //---- //---- return(0); } //+------------------------------------------------------------------+ static array ? Indicator Question Why don't they take 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
好的,我看到了一些东西。
这个循环什么时候结束? 当i不>=0时,即-1
那么接下来的代码是.
所以i的起始值是-1......因此你的打印输出。v[-1]实际上=0,所以循环结束。
我已经把i改成了别的东西,还有while语句,甚至创建了一个完全不同的代码,所有这些似乎都=0,我不知道为什么。
但指标却在工作,而且缓冲区似乎能正确容纳v1[i]内的val1,但我却不能引用数组中的任何东西来打印它。
一切总是=0
我再继续读一些。
我不知道这个for语句会受到while语句的影响,因为它发生在while语句之外。
似乎连最基本的工作都被我忽略了。甚至在文档或书中读到Bars时也没有提到-1这个主题,至少在Bars或预定义变量部分,我认为它应该是这样。
这让我很沮丧。在这个简单的问题上花了1.5周的时间,但我认为这是最简单的任务,可以帮助我朝着正确的方向前进。
多么令人沮丧的事情啊!大笑
我明天会再试一下。
你没有仔细阅读我的帖子 ......
Bars在任何时候都不等于-1 ......或者与我提到的-1有任何关系。
你在两个循环中使用i 变量 ...... 除非你在两个循环之间将其改为其他值,否则第二个循环的起始值将是第一个循环的结束值。
我完全摆脱了我的for循环,并认为我将只是在循环内打印。
我试着重新初始化i=0或i !=0,但没有效果。甚至完全换了一个变量,如val3-iFractals.....a。
而a=0,没有条,然后从那里也往上数,打印还是等于0。
我不明白为什么在循环内打印也不能工作,就像上面发布的代码一样。
谢谢
也许你可以回答我一个问题 . .
为什么这么多没有编码经验的人似乎对添加打印 语句感到恐惧?为什么你想让自己的生活变得如此艰难 ......也许你喜欢S&M?
你有一个单一的Print语句 .你甚至不知道当时i 的值是多少,你也不知道val1 的值是多少......你知道iFractals是如何工作的吗,我是说它是如何计算的,它给出的值是什么范围?
我复制了你的代码,添加了一些打印语句并运行它......它正在打印......。
2011.09.18 14:42:24 Agent86 EURUSD,H1: v1[29]=1.4727
也许你可以回答我一个问题 . .
为什么这么多没有编码经验的人似乎对添加打印语句感到恐惧?为什么你想让自己的生活变得如此艰难 ......也许你喜欢S&M?
你有一个单一的Print语句 .你甚至不知道当时i 的值是多少,你不知道val1 的值是多少......你知道iFractals是如何工作的吗,我是说它是如何计算的,它给出的值的范围是什么?
我并不害怕添加打印 语句,我把它们放在每个变量后面,但不明白它在打印什么,为什么,因为它不是我期望看到的打印。你看到的那个单一的打印语句并不是我放在那里的唯一语句。如果我只试了一个单一的打印语句,我就不会发帖。经过2-3周的时间,我尝试了上百种方法,并阅读和重读了100多个帖子,以及字典、书、文档等,才发帖试图了解这个数组是如何工作的,以及如何打印元素和值 ,我每天工作2-3小时试图了解这个问题,但我没有多少进展,尽管我在试图弄清这个问题的时候学到了很多其他东西。我完全重写了代码,用for循环代替了while循环,并将数组限制为100个元素,以为这样可以简化一些;但仍然无法打印出数值。
我只是不明白。我以为iFractals给出的是一系列5根蜡烛中中间蜡烛的高/低值,前提是左边的2根蜡烛和右边的2根蜡烛比中间蜡烛高或低。标记或记录中间蜡烛的高点或低点。我不知道iFractals的实际计算方法,但我认为这并不重要,因为我正在打印它,如果>0,我认为这意味着真实,而且它被初始化为High[i]。我只是不明白这一点。
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[1]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[2]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[3]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[4]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[5]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[6]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[7]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[8]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[9]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[10]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[11]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[12]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[13]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[14]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[15]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[16]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[17]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[18]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[19]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[20]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[21]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[22]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[23]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[24]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[25]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[26]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[27]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[28]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[29]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[30]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[31]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[32]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[33]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[34]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[35]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[36]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[37]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[38]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[39]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[40]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[41]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[42]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[43]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[44]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[45]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[46]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[47]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[48]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[49]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[50]=0
从这段代码来看,是的,除了val1之外,其他地方都有其他打印语句,在代码的任何地方尝试打印v1[i],结果都是=0