标准指标超标? - 页 2 1234567 新评论 Forex Trader 2006.10.31 20:34 #11 罗氏()是对的。我只是想写一写,但他比我先写了(和往常一样)。但是。我的指标与此无关,它有另一个问题。它在不同的货币对上以不同的方式实时绘制(数据总是取自美元兑瑞郎,并且总是在条形图的开头,即00分钟)。酒吧号码总是1。所以,有一个错误。是的,有。而在它被修复之前,你不能毫无风险地测试和使用这种东西。 事实上,我的指标还可以进一步简化。我们只需在一个单独的窗口中为USDCHF创建Open[0],并将该指标与EURUSD和AUDUSD连接起来。一段时间后(在小时图上--几个小时),分歧将开始出现。 Forex Trader 2006.10.31 20:38 #12 罗氏()是对的。我只是想写一写,但他比我先写了(和往常一样)。但是。我的指标与此无关,它有另一个问题。它在不同的货币对上以不同的方式实时绘制(数据总是取自美元兑瑞郎,并且总是在条形图的开头,即00分钟)。酒吧号码总是1。所以,有一个错误。是的,有。而在它被修复之前,我们不能毫无风险地测试和使用这种东西。<br / translate="no">。 事实上,我的指标还可以进一步简化。我们只需在一个单独的窗口中为USDCHF创建Open[0],并将该指标与EURUSD和AUDUSD连接起来。一段时间后(在小时图上--几个小时),分歧将开始出现。 只是在看你的创作 :)你的风格没有改变,你写得很清楚...为自己:) Forex Trader 2006.10.31 20:55 #13 夸克的版本,经过重新加工。 //+------------------------------------------------------------------+ //| QuarkBug.mq4 | //| Quark | //| http://www.metaquotes.ru/forum/7790/ | //+------------------------------------------------------------------+ #property copyright "Quark" #property link "http://www.metaquotes.ru/forum/7790/" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Aqua #property indicator_color3 Red // indicator parameters extern int nPeriod = 6; double arrOpen[]; double arrMa[]; double arrMyMa[]; int nExtCountedBars = 0; double dUsdChf, dUsdChfPrev; //////////////////////// //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators string strIndicatorShortName = "Test(" + Symbol() + " " + nPeriod + ")"; IndicatorShortName(strIndicatorShortName); // drawing settings SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0,arrOpen); SetIndexLabel(0,"arrOpen"); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1,arrMa); SetIndexLabel(1,"arrMa"); SetIndexStyle(2, DRAW_LINE); SetIndexBuffer(2,arrMyMa); SetIndexLabel(2, "arrMyMa"); IndicatorDigits(MarketInfo("USDCHF",MODE_DIGITS)); // indicator buffers mapping //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- if(Bars <= nPeriod) return(0); nExtCountedBars = IndicatorCounted(); if(nExtCountedBars < 0) return(-1); int nPos = Bars - nExtCountedBars - 1; double dPr = 2.0 / (nPeriod + 1.0); while(nPos > 0) { dUsdChf = iMA("USDCHF", 0, nPeriod, 0, MODE_EMA, PRICE_OPEN, nPos - 1); dUsdChfPrev = iMA("USDCHF", 0, nPeriod, 0, MODE_EMA, PRICE_OPEN, nPos); arrOpen[nPos - 1] = iOpen("USDCHF", 0, nPos - 1); arrMa[nPos - 1] = dUsdChf; arrMyMa[nPos - 1] = arrOpen[nPos - 1] * dPr + arrMyMa[nPos] * (1 - dPr); nPos--; if (nPos<2) Print("nPos=",nPos); } //---- return(0); } //+------------------------------------------------------------------+ Forex Trader 2006.10.31 21:01 #14 还有一点要注意的是 :) 我有两个货币对 - GBPUSD M5 和 GBPJPY M5。然后我意识到--Quark作为一个有经验的用户,把错误隐藏得更深了:) 我检查了指数移动平均线的方程式--它是正确的。但是... 该代码假设,如果GBPJPY上有一个新的条形图 打开(指标在那里徘徊),那么USDCHF上也会有一个新的条形图打开(Open[]是从那里读取的)。 真的是这样吗? 这就是为什么错误会在几天内逐渐出现,因为差异需要时间来积累。我想我已经清楚地解释了一切? Forex Trader 2006.10.31 21:17 #15 下面是视觉上的结果 Forex Trader 2006.10.31 21:37 #16 有三个图形的版本更加清晰 Forex Trader 2006.11.01 07:55 #17 Rosh,我向你致敬。而且,正如承诺的那样,我向大家道歉。特别是对开发商而言。 俗话说:"我生气了,我错了,我把它全部收回来"。;о) 真的要责怪故事中的 "漏洞"。有趣的是,在你的例子中,我只有一个 "洞"--2001年12月25日,但2005年3月14日,所有条形都存在。 我还在猜测,为什么8个小时的报价消失了,但这是另一个故事。 无论如何,非常感谢您的帮助。:о) Forex Trader 2006.11.01 09:42 #18 这里的问题有点不同:)<br / translate="no">我有两个货币对 - GBPUSD M5 和 GBPJPY M5。然后我意识到--Quark作为一个有经验的用户,把错误隐藏得更深了:) 我检查了指数移动平均线的方程式 - 它是正确的。但是... 该代码假设,如果GBPJPY上有一个新的条形图打开(指标在那里徘徊),那么USDCHF上也会有一个新的条形图打开(Open[]是从那里读取的)。 真的是这样吗? 这就是为什么错误会在几天内逐渐出现,因为差异需要时间来积累。我想我已经清楚地解释了一切? 我的风格是...我不知道。我想做得更好。它有什么问题?接受批评。有建设性的 :) 这里有一个新的变体,完全没有MA。它绘制了iOpen(USDCHF)和iClose。 现在说说由于不同的酒吧开放时间 而导致的错误积累。从形式上看,Open[0]无论如何都是一样的(它是在hh:00形成的)。但在实践中,如果我们的图表上的一个柱子已经到了(第一个刻度,也就是),而USDCHF(指标货币)还没有到,怎么办?嗯...人们认为正确的代码会询问服务器,但如果没有这样做,那么是的,将使用前一个(一小时前)开放的值(非常错误!!!)或最后一个刻度值(这也不是很好)。因此,也许罗氏是对的。 然而,这样做不会有任何错误积累(我们又不是在建立MA,我们只是在画开盘价)。 为了调查这个问题,我在两个图表上放了一个新的指标,也画了iClose。 请允许我指出,即使在这种情况下,也可能存在分歧。例如,如果其中一种货币的最后一个刻度是非常延迟的,而图表上的开盘比指标货币的收盘早。 为了研究这个问题,我在指标中加入了第三个缓冲区,画出了前一个条形的开盘。我想大家都同意,这些数据将永远在手表上同步。很难想象,一种货币有Open[0],而另一种还没有Open[1]。 #property copyright "Copyright Quark" #property link "" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Red #property indicator_color3 Aqua // indicator parameters extern int nPeriod = 6; double arrOpen[]; double arrClose1[]; double arrOpen1[]; int nExtCountedBars = 0; //////////////////////// int init() { string strIndicatorShortName = "Test(" + Symbol() + " " + nPeriod + ")"; IndicatorShortName(strIndicatorShortName); // drawing settings SetIndexStyle(0, DRAW_LINE); SetIndexShift(0, 0); SetIndexStyle(1, DRAW_LINE); SetIndexShift(1, 0); SetIndexStyle(2, DRAW_LINE); SetIndexShift(2, 0); IndicatorDigits(4); // indicator buffers mapping SetIndexBuffer(0, arrOpen); SetIndexBuffer(1, arrClose1); SetIndexBuffer(2, arrOpen1); return(0); } /////////////////////////// int start() { if(Bars <= nPeriod) return(0); nExtCountedBars = IndicatorCounted(); if(nExtCountedBars < 0) return(-1); int nPos = Bars - nExtCountedBars - 1; while(nPos > 0) { arrOpen[nPos - 1] = iOpen("USDCHF", 0, nPos - 1); arrClose1[nPos - 1] = iClose("USDCHF", 0, nPos); arrOpen1[nPos - 1] = iOpen("USDCHF", 0, nPos); nPos--; } return(0); } 如果上面的推理是正确的,那么事实证明,在使用另一种货币的数据时,我们应该非常小心。如果开发者能写出(在帮助程序中,或在任何地方)某种建议,那就太好了。 我将在大约12小时后公布测试结果。 Forex Trader 2006.11.01 09:45 #19 夸克,你没有听到我的话。 Forex Trader 2006.11.01 10:42 #20 <br / translate="no"> 夸克,你没有听到我的话。 我不明白,请解释。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
事实上,我的指标还可以进一步简化。我们只需在一个单独的窗口中为USDCHF创建Open[0],并将该指标与EURUSD和AUDUSD连接起来。一段时间后(在小时图上--几个小时),分歧将开始出现。
事实上,我的指标还可以进一步简化。我们只需在一个单独的窗口中为USDCHF创建Open[0],并将该指标与EURUSD和AUDUSD连接起来。一段时间后(在小时图上--几个小时),分歧将开始出现。
只是在看你的创作 :)你的风格没有改变,你写得很清楚...为自己:)
我有两个货币对 - GBPUSD M5 和 GBPJPY M5。然后我意识到--Quark作为一个有经验的用户,把错误隐藏得更深了:) 我检查了指数移动平均线的方程式--它是正确的。但是... 该代码假设,如果GBPJPY上有一个新的条形图 打开(指标在那里徘徊),那么USDCHF上也会有一个新的条形图打开(Open[]是从那里读取的)。
真的是这样吗? 这就是为什么错误会在几天内逐渐出现,因为差异需要时间来积累。我想我已经清楚地解释了一切?
俗话说:"我生气了,我错了,我把它全部收回来"。;о)
真的要责怪故事中的 "漏洞"。有趣的是,在你的例子中,我只有一个 "洞"--2001年12月25日,但2005年3月14日,所有条形都存在。
我还在猜测,为什么8个小时的报价消失了,但这是另一个故事。
无论如何,非常感谢您的帮助。:о)
真的是这样吗? 这就是为什么错误会在几天内逐渐出现,因为差异需要时间来积累。我想我已经清楚地解释了一切?
我的风格是...我不知道。我想做得更好。它有什么问题?接受批评。有建设性的 :)
这里有一个新的变体,完全没有MA。它绘制了iOpen(USDCHF)和iClose。
现在说说由于不同的酒吧开放时间 而导致的错误积累。从形式上看,Open[0]无论如何都是一样的(它是在hh:00形成的)。但在实践中,如果我们的图表上的一个柱子已经到了(第一个刻度,也就是),而USDCHF(指标货币)还没有到,怎么办?嗯...人们认为正确的代码会询问服务器,但如果没有这样做,那么是的,将使用前一个(一小时前)开放的值(非常错误!!!)或最后一个刻度值(这也不是很好)。因此,也许罗氏是对的。
然而,这样做不会有任何错误积累(我们又不是在建立MA,我们只是在画开盘价)。
为了调查这个问题,我在两个图表上放了一个新的指标,也画了iClose。
请允许我指出,即使在这种情况下,也可能存在分歧。例如,如果其中一种货币的最后一个刻度是非常延迟的,而图表上的开盘比指标货币的收盘早。
为了研究这个问题,我在指标中加入了第三个缓冲区,画出了前一个条形的开盘。我想大家都同意,这些数据将永远在手表上同步。很难想象,一种货币有Open[0],而另一种还没有Open[1]。
如果上面的推理是正确的,那么事实证明,在使用另一种货币的数据时,我们应该非常小心。如果开发者能写出(在帮助程序中,或在任何地方)某种建议,那就太好了。
我将在大约12小时后公布测试结果。
我不明白,请解释。