初学者的问题 MQL4 MT4 MetaTrader 4 - 页 227 1...220221222223224225226227228229230231232233234...261 新评论 Aleksei Stepanenko 2020.12.11 19:47 #2261 你好,问题可能不是过零,而是从一个缓冲区到另一个缓冲区的跨越。在一个柱状图上,信号结束了,而在下一个柱状图上,信号已经进入另一个缓冲区,你希望在相邻的两个柱状图之间看到什么颜色?这一点并不清楚。 如果你想用黄线做第三个缓冲区,并把它放在这两个缓冲区的下面,那就太美了! Grigori.S.B 2020.12.11 20:02 #2262 Aleksei Stepanenko:你好,问题可能不是过零,而是从一个缓冲区到另一个缓冲区的跨越。在一个柱状图上,信号结束了,而在下一个柱状图上,信号已经进入另一个缓冲区,你希望在相邻的两个柱状图之间看到什么颜色?这一点并不清楚。 如果你愿意,用黄线做第三个缓冲区,放在这两个缓冲区下面,就会很美。 阿列克谢,谢谢你的帮助。 我不需要三种颜色,两种就很足够了。我希望空的地方能用前一个颜色的线来画。我不明白你说的"在一个柱子上,信号已经结束,而在下一个柱子上,信号在不同的缓冲区 " 是什么意思。在每个条形图中,都有一个缓冲区的数值,所以它也应该显示在图表上,还是我错过了什么? Aleksei Stepanenko 2020.12.11 20:12 #2263 好吧,看,时间在图表上是离散的,最小单位是1巴。也就是说,小节之间不存在部分时间,就像它一样。如果你用柱状图代替渲染,你就有两个柱子--两个不同颜色的柱子。但他们之间没有任何关系。而线的画法是这样的(这样的属性是做出来的),它连接着相同的缓冲区的值,但不是不同的值。这就是为什么有漏洞。 如果你想让它美观,那么你可以尝试在两个缓冲区上给出重叠的结束值。你向新的缓冲区发出信号,但仍向旧的缓冲区发出信号吧。 但是,如果你把这种指标 的信号带到专家顾问中,它将是不准确的。 或直方图是一个不错的选择,没有任何额外的麻烦。我投票支持柱状图。 Iurii Tokman 2020.12.11 20:29 #2264 Grigori.S.B:阿列克谢,谢谢你的帮助。我不需要三种颜色,两种就很足够了。我希望空的地方能用前一个颜色的线来画。我不明白你说的"在一个小节上,信号结束了,而在下一个小节上,信号已经在另一个缓冲区了 " 是什么意思。在每个条形图中,有一个缓冲区中的数值,这意味着它应该显示在图表上,还是我错过了什么? 留下一个没有条件的缓冲区,在第一个缓冲区上叠加第二个有条件的缓冲区。 #property strict #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 clrGreen #property indicator_color2 clrRed //---- input parameters extern int FastEMA=12; extern int SlowEMA=26; extern int Signal=9; //---- buffers double DiffBuffer_up[]; double DiffBuffer_dn[]; // double MainBuffer[]; double SignalBuffer[]; ENUM_TIMEFRAMES TimeFrame; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { int draw_begin=MathMax(FastEMA,SlowEMA); string short_name="MACD Stephen"; //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,DiffBuffer_up); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,DiffBuffer_dn); short_name=StringConcatenate(short_name," ("+(string)FastEMA+","+(string)SlowEMA+","+(string)Signal+")"); IndicatorShortName(short_name); SetIndexDrawBegin(0,draw_begin); SetIndexDrawBegin(1,draw_begin); SetIndexLabel(0,"Up"); SetIndexLabel(1,"Down"); IndicatorDigits(6); SetLevelValue(0,0); TimeFrame=GetTF(); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit, iChart, iTF, delta=0; datetime TimeArray[]; //if(TimeFrame>Period()) delta=(int)MathCeil(TimeFrame/Period()); int counted_bars=IndicatorCounted(); //---- check for possible errors if(counted_bars<0) return(-1); //---- the last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars+delta; ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); ArraySetAsSeries(MainBuffer,true); ArraySetAsSeries(SignalBuffer,true); ArrayResize(MainBuffer, 100000); ArrayResize(SignalBuffer,100000); iTF=0; for(iChart=0; iChart<limit; iChart++) { while(Time[iChart]<TimeArray[iTF]) iTF++; MainBuffer[iChart]=EMPTY_VALUE; SignalBuffer[iChart]=EMPTY_VALUE; MainBuffer[iChart] =iMACD(Symbol(),TimeFrame,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_MAIN,iTF); SignalBuffer[iChart]=iMACD(Symbol(),TimeFrame,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_SIGNAL,iTF); double diff=MainBuffer[iChart]-SignalBuffer[iChart]; DiffBuffer_up[iChart]=diff; if (diff>0) //{ DiffBuffer_dn[iChart]=diff; //DiffBuffer_dn[iChart]=EMPTY_VALUE; //} //else { //DiffBuffer_up[iChart]=EMPTY_VALUE; //} } return(0); } Grigori.S.B 2020.12.11 21:05 #2265 Aleksei Stepanenko:好吧,看,时间在图表上是离散的,最小单位是1巴。也就是说,小节之间不存在部分时间,就像它一样。如果你用柱状图代替渲染,你就有两个柱子--两个不同颜色的柱子。但他们之间没有任何关系。而线的画法是这样的(这样的属性是做出来的),它连接着相同的缓冲区的值,但不是不同的值。这就是为什么有漏洞。如果你想让它美观,那么你可以尝试在两个缓冲区上给出重叠的结束值。你向新的缓冲区发出信号,但仍向旧的缓冲区发出信号吧。但是,如果你把这种指标 的信号带到专家顾问中,它将是不准确的。或直方图是一个不错的选择,没有任何额外的麻烦。我投票支持柱状图。 非常感谢你,阿列克谢。 现在连我的脑子都整理好了。我可以自己做,但没有尤里后来的建议那么简短和优雅。 Grigori.S.B 2020.12.11 21:06 #2266 Iurii Tokman:留下一个无条件的缓冲区,第二个缓冲区在第一个缓冲区上附加条件。 向你致敬,尤里。 这样一个优雅而简洁的解决方案是我无法想象的。 Iurii Tokman 2020.12.11 21:15 #2267 Grigori.S.B:向你致敬,尤里。我无法想象这样一个优雅而简洁的解决方案。 这不是我的主意,在论坛上,就像你发现的那样,,代码库中有很多解决方案,而且不仅如此 Aleksei Stepanenko 2020.12.11 21:44 #2268 Grigori.S.B: 谢谢你的感谢! darirunu1 2020.12.13 10:59 #2269 为什么我的问题一直被忽视? Iurii Tokman 2020.12.13 12:28 #2270 darirunu1: 为什么我的问题一直被忽视? 取决于问题... 1...220221222223224225226227228229230231232233234...261 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好,问题可能不是过零,而是从一个缓冲区到另一个缓冲区的跨越。在一个柱状图上,信号结束了,而在下一个柱状图上,信号已经进入另一个缓冲区,你希望在相邻的两个柱状图之间看到什么颜色?这一点并不清楚。
如果你想用黄线做第三个缓冲区,并把它放在这两个缓冲区的下面,那就太美了!
你好,问题可能不是过零,而是从一个缓冲区到另一个缓冲区的跨越。在一个柱状图上,信号结束了,而在下一个柱状图上,信号已经进入另一个缓冲区,你希望在相邻的两个柱状图之间看到什么颜色?这一点并不清楚。
如果你愿意,用黄线做第三个缓冲区,放在这两个缓冲区下面,就会很美。
阿列克谢,谢谢你的帮助。
我不需要三种颜色,两种就很足够了。我希望空的地方能用前一个颜色的线来画。我不明白你说的"在一个柱子上,信号已经结束,而在下一个柱子上,信号在不同的缓冲区 " 是什么意思。在每个条形图中,都有一个缓冲区的数值,所以它也应该显示在图表上,还是我错过了什么?
好吧,看,时间在图表上是离散的,最小单位是1巴。也就是说,小节之间不存在部分时间,就像它一样。如果你用柱状图代替渲染,你就有两个柱子--两个不同颜色的柱子。但他们之间没有任何关系。而线的画法是这样的(这样的属性是做出来的),它连接着相同的缓冲区的值,但不是不同的值。这就是为什么有漏洞。
如果你想让它美观,那么你可以尝试在两个缓冲区上给出重叠的结束值。你向新的缓冲区发出信号,但仍向旧的缓冲区发出信号吧。
但是,如果你把这种指标 的信号带到专家顾问中,它将是不准确的。
或直方图是一个不错的选择,没有任何额外的麻烦。我投票支持柱状图。
阿列克谢,谢谢你的帮助。
我不需要三种颜色,两种就很足够了。我希望空的地方能用前一个颜色的线来画。我不明白你说的"在一个小节上,信号结束了,而在下一个小节上,信号已经在另一个缓冲区了 " 是什么意思。在每个条形图中,有一个缓冲区中的数值,这意味着它应该显示在图表上,还是我错过了什么?
留下一个没有条件的缓冲区,在第一个缓冲区上叠加第二个有条件的缓冲区。
好吧,看,时间在图表上是离散的,最小单位是1巴。也就是说,小节之间不存在部分时间,就像它一样。如果你用柱状图代替渲染,你就有两个柱子--两个不同颜色的柱子。但他们之间没有任何关系。而线的画法是这样的(这样的属性是做出来的),它连接着相同的缓冲区的值,但不是不同的值。这就是为什么有漏洞。
如果你想让它美观,那么你可以尝试在两个缓冲区上给出重叠的结束值。你向新的缓冲区发出信号,但仍向旧的缓冲区发出信号吧。
但是,如果你把这种指标 的信号带到专家顾问中,它将是不准确的。
或直方图是一个不错的选择,没有任何额外的麻烦。我投票支持柱状图。
非常感谢你,阿列克谢。
现在连我的脑子都整理好了。我可以自己做,但没有尤里后来的建议那么简短和优雅。
留下一个无条件的缓冲区,第二个缓冲区在第一个缓冲区上附加条件。
向你致敬,尤里。
这样一个优雅而简洁的解决方案是我无法想象的。
向你致敬,尤里。
我无法想象这样一个优雅而简洁的解决方案。
这不是我的主意,在论坛上,就像你发现的那样,
,代码库中有很多解决方案,而且不仅如此
谢谢你的感谢!
为什么我的问题一直被忽视?
取决于问题...