新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1730 1...172317241725172617271728172917301731173217331734173517361737...1953 新评论 Nikolay Ivanov 2021.11.09 07:42 #17291 anrei2002 #:不相关的箭头立即消失了!!!。 我不指望你能理解,我有一个客户有类似的问题,我一年都没能向他解释清楚,有一个不同的指标,但也有一个窥视。他似乎是个聪明人,但显然他对利益的渴求真的关闭了他的逻辑和思维。当他掏出很多钱的时候,他最终意识到了一切。我不知道该怎么办......如果你重置它,指标就会停止工作。如果你重新设置,只有右边的箭头保留,但在历史上...我已经看到了很多这样的指标 asdkika1 2021.11.09 07:45 #17292 MakarFX #: 展示你已经做了什么。 #属性描述 "随机振荡器" #属性严格 #属性 indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_buffers 2 #property indicator_color1 LightSeaGreen #property indicator_color2 Red #property indicator_level1 20.0 #property indicator_level2 80.0 #property indicator_levelcolor clrSilver #property indicator_levelstyle STYLE_DOT //----输入参数 输入 int InpKPeriod=5; // 输入K周期 输入 int InpDPeriod=3; // 输入 D Period 输入 int InpSlowing=3; // Slowing 输入字符串 PARA_Ref = "$USDX"; //input string PARA_Ref = "ETHUSD"; //--- 缓冲区 双倍ExtMainBuffer[]。 双重ExtSignalBuffer[]。 双重ExtHighesBuffer[]。 双重ExtLowesBuffer[]。 双重cl[]。 double hi[]; 双倍lo[]。 //--- int draw_begin1=0。 int draw_begin2=0。 //+------------------------------------------------------------------+ //|自定义指标初始化功能 //+------------------------------------------------------------------+ int OnInit(void) { string short_name; //---- 2个额外的缓冲区用于计数。 IndicatorBuffers(4)。 SetIndexBuffer(2, ExtHighesBuffer)。 SetIndexBuffer(3,ExtLowesBuffer)。 //----指标线 SetIndexStyle(0,DRAW_LINE)。 SetIndexBuffer(0,ExtMainBuffer)。 SetIndexStyle(1,DRAW_LINE)。 SetIndexBuffer(1,ExtSignalBuffer)。 //----数据窗口和指标子窗口标签的名称 short_name="Stochastic_Mult_1("+IntegerToString(InpKPeriod)+", "+IntegerToString(InpDPeriod)+", "+IntegerToString(InpSlowing)+")" 。 IndicatorShortName(short_name)。 SetIndexLabel(0,short_name)。 SetIndexLabel(1,"信号")。 //--- draw_begin1=InpKPeriod+InpSlowing。 draw_begin2=draw_begin1+InpDPeriod。 SetIndexDrawBegin(0,draw_begin1)。 SetIndexDrawBegin(1,draw_begin2)。 //----初始化完成 return(INIT_SUCCEED)。 } //+------------------------------------------------------------------+ //| 随机震荡器 | | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[]。 const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[]。 const int &spread[]) { int i,k,pos,n; //--------------------检查条数 if(rate_total<=InpKPeriod+InpDPeriod+InpSlowing) return(0); ArraySetAsSeries(ExtMainBuffer,false)。 ArraySetAsSeries(ExtSignalBuffer,false)。 ArraySetAsSeries(ExtHighesBuffer,false)。 ArraySetAsSeries(ExtLowesBuffer,false)。 ArraySetAsSeries(low,false)。 ArraySetAsSeries(high,false)。 ArraySetAsSeries(close,false)。 //--- pos=InpKPeriod-1。 如果(pos+1<prev_calculated) pos=prev_calculated-2。 否则 { for(i=0; i<pos; i++) { ExtLowesBuffer[i]=0.0。 ExtHighesBuffer[i]=0.0。 } } //---计算HighesBuffer[]和ExtHighesBuffer[]。 for(i=pos; i<rates_total && !IsStopped(); i++) { double dmin=1000000.0。 double dmax=1000000.0。 for(k=i-InpKPeriod+1; k<=i; k++) { n = i-k。 if(dmin>iLow(PARA,0,n)* iLow(PARA_Ref,0,n)) // 原文: if(dmin>low[k]) dmin=iLow(PARA,0,n)* iLow(PARA_Ref,0,n); // 原文:dmin=low[k]。 if(dmax<iHigh(PARA,0,n)* iHigh(PARA_Ref,0,n)) // 原文: if(dmax<high[k]) dmax=iHigh(PARA,0,n)* iHigh(PARA_Ref,0,n); // 原文:dmax=high[k]。 } ExtLowesBuffer[i]=dmin。 ExtHighesBuffer[i]=dmax。 } //---- %K线 pos=InpKPeriod-1+InpSlowing-1。 如果(pos+1<prev_calculated) pos=prev_calculated-2。 否则 { for(i=0; i<pos; i++) ExtMainBuffer[i]=0.0。 } //---- 主循环 for(i=pos; i<rates_total && !IsStopped(); i++) { double sumlow=0.0。 double sumhigh=0.0。 for(k=(i-InpSlowing+1); k<=i; k++) { n = i-k。 sumlow +=((iClose(PARA,0,n) * iClose(PARA_Ref,0,n))-ExtLowesBuffer[k]); // 原文: sumlow +=(close[k]-ExtLowesBuffer[k]) 。 sumhigh+=(ExtHighesBuffer[k]-ExtLowesBuffer[k])。 } 如果(sumhigh==0.0) ExtMainBuffer[i]=100.0; 否则 ExtMainBuffer[i]=sumlow/sumhigh*100.0。 } //---信号 pos=InpDPeriod-1。 如果(pos+1<prev_calculated) pos=prev_calculated-2。 否则 { for(i=0; i<pos; i++) ExtSignalBuffer[i]=0.0。 } for(i=pos; i<rates_total && !IsStopped(); i++) { double sum=0.0。 for(k=0; k<InpDPeriod; k++) sum+=ExtMainBuffer[i-k]; ExtSignalBuffer[i]=sum/InpDPeriod。 } //----OnCalculate完成。返回新的prev_calculated。 return(rate_total)。 } //+------------------------------------------------------------------+ 求高手编写mt5的三线kdj指标,非常感谢~ Any questions from newcomers 超级信号指标 Nikolay Ivanov 2021.11.09 07:45 #17293 它可以在不失去逻辑的情况下被修复,但它会在第8小节,甚至第9小节上画出箭头(但没有重画,也没有左信号)。你将需要这样,即新的和最新鲜的箭头将在第9条上。而且开放的延迟也将是9条。 anrei2002 2021.11.09 07:55 #17294 Nikolay Ivanov #:我不指望你能理解,我有一个客户有类似的问题,我一年都没能向他解释清楚,有一个不同的指标,但也有一个窥视装置。他似乎是个聪明人,但显然他对利益的渴求真的关闭了他的逻辑和思维。当他清空了大量的钱后,他最终意识到了一切。我不知道该怎么办......如果你重置它,指标就会停止工作。如果你重新设置,只有右边的箭头保留,但在历史上...我已经看到了很多这样的指标。 我不是程序员,但我还是不明白为什么箭头不能随着新蜡烛的出现而被纠正。 世界上有很多指标都有重新交叉,而它对所有的指标都能正常工作!箭头随着设定的交叉点移动,没有震荡。 他们都有相同的代码... 附加的文件: 02.png 15 kb Tretyakov Rostyslav 2021.11.09 07:58 #17295 asdkika1 #: 最好把你想做的事写下来......一点一点地写。 Nikolay Ivanov 2021.11.09 08:01 #17296 anrei2002 #:我不是程序员,但我还是不明白,为什么箭头不能随着新蜡烛的出现而被纠正?世界上有很多指标都有重新交叉,而它对所有的指标都很好用!箭头随着设定的交叉点移动,没有震荡。他们都有相同的代码。 正常的重排是指信号栏(箭头所在的位置)参与了信号的计算,并可能有0的索引...就是说,目前的酒吧...它每隔一段时间就会重新绘制,而且,信号也可以分别重新绘制... 但除了第0条,你还用了-1 -2 -3 -4 -5 -6 -7......第8条的负数从哪里来?使用第0条也是不好的......而带有负数指数的条形图是根本无法接受的...... 我在上面写了如何修复它...如果你等待信号到8条的右边,那么它就能正常工作,不认为箭头会一直晚9条,你想这样吗? asdkika1 2021.11.09 08:07 #17297 MakarFX #:最好把你想做的事写下来......一点一点地写。 从两对的乘法中计算随机性。 只是把标准的随机指数指标,改为 输入数据(标记的行)。 我从来没有使用过OnCalculate--显然这就是狗被埋葬的地方。 不起作用--搞不清楚原因。 我希望我不需要 我希望我不需要自己重新设计它。 anrei2002 2021.11.09 08:29 #17298 Nikolay Ivanov #:正常的超标是指信号条本身(箭头所在的位置)参与了信号外观的计算,可以有0的指数...这就是当前的酒吧...每一个刻度都会被重新绘制,因此,信号也可能被重新绘制...但除了第0条,你还用了-1 -2 -3 -4 -5 -6 -7......第8条的负数从哪里来?使用第0条也是不好的......而带有负数指数的条形图是根本无法接受的......我在上面写了如何修复它...如果你等待信号到8条的右边,那么一切都会正常工作,不认为箭头会一直晚9条,你想这样吗? 这里是另一个此类指标的例子! 他除了图表上的箭头外,在地下室的线条交汇处还有圆圈。 而圆圈,与箭头相反,是严格意义上的线的交汇点后面!没有多余的圆圈。 为什么没有箭头? 附加的文件: 03.png 98 kb EATA__Alert.mq4 20 kb Nikolay Ivanov 2021.11.09 08:34 #17299 anrei2002 #:下面是其中另一个指标的例子!除了图表上的箭头外,它在地下室的线条交汇处还有圆圈。而圆圈,与箭头不同的是,严格意义上讲,是在线条的交汇点后面的!这也是为什么我们要把圆圈作为我们的目标。没有多余的圆圈。为什么箭头有问题呢? 在测试器中运行该指标,观察加速时可视化的线条和圆圈...如果在这之后仍然没有意义,我不知道还能如何简单解释...... Tretyakov Rostyslav 2021.11.09 08:36 #17300 asdkika1 #:从两对的乘法中 随机计算。 只是把标准的随机指数指标,改为 输入数据(标记的行)。 我从未使用过OnCalculate - 我想这就是问题所在。 不起作用--搞不清楚原因。 我希望我不需要 我希望我不必自己重做。 这应该是非常简单的。 倍增什么?开?关闭?斯托奇? 1...172317241725172617271728172917301731173217331734173517361737...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
不相关的箭头立即消失了!!!。
我不指望你能理解,我有一个客户有类似的问题,我一年都没能向他解释清楚,有一个不同的指标,但也有一个窥视。他似乎是个聪明人,但显然他对利益的渴求真的关闭了他的逻辑和思维。当他掏出很多钱的时候,他最终意识到了一切。我不知道该怎么办......如果你重置它,指标就会停止工作。如果你重新设置,只有右边的箭头保留,但在历史上...我已经看到了很多这样的指标
展示你已经做了什么。
我不指望你能理解,我有一个客户有类似的问题,我一年都没能向他解释清楚,有一个不同的指标,但也有一个窥视装置。他似乎是个聪明人,但显然他对利益的渴求真的关闭了他的逻辑和思维。当他清空了大量的钱后,他最终意识到了一切。我不知道该怎么办......如果你重置它,指标就会停止工作。如果你重新设置,只有右边的箭头保留,但在历史上...我已经看到了很多这样的指标。
我不是程序员,但我还是不明白为什么箭头不能随着新蜡烛的出现而被纠正。
世界上有很多指标都有重新交叉,而它对所有的指标都能正常工作!箭头随着设定的交叉点移动,没有震荡。
他们都有相同的代码...
最好把你想做的事写下来......一点一点地写。
我不是程序员,但我还是不明白,为什么箭头不能随着新蜡烛的出现而被纠正?
世界上有很多指标都有重新交叉,而它对所有的指标都很好用!箭头随着设定的交叉点移动,没有震荡。
他们都有相同的代码。
正常的重排是指信号栏(箭头所在的位置)参与了信号的计算,并可能有0的索引...就是说,目前的酒吧...它每隔一段时间就会重新绘制,而且,信号也可以分别重新绘制...
但除了第0条,你还用了-1 -2 -3 -4 -5 -6 -7......第8条的负数从哪里来?使用第0条也是不好的......而带有负数指数的条形图是根本无法接受的......
我在上面写了如何修复它...如果你等待信号到8条的右边,那么它就能正常工作,不认为箭头会一直晚9条,你想这样吗?
最好把你想做的事写下来......一点一点地写。
正常的超标是指信号条本身(箭头所在的位置)参与了信号外观的计算,可以有0的指数...这就是当前的酒吧...每一个刻度都会被重新绘制,因此,信号也可能被重新绘制...
但除了第0条,你还用了-1 -2 -3 -4 -5 -6 -7......第8条的负数从哪里来?使用第0条也是不好的......而带有负数指数的条形图是根本无法接受的......
我在上面写了如何修复它...如果你等待信号到8条的右边,那么一切都会正常工作,不认为箭头会一直晚9条,你想这样吗?
这里是另一个此类指标的例子!
他除了图表上的箭头外,在地下室的线条交汇处还有圆圈。
而圆圈,与箭头相反,是严格意义上的线的交汇点后面!没有多余的圆圈。
为什么没有箭头?
下面是其中另一个指标的例子!
除了图表上的箭头外,它在地下室的线条交汇处还有圆圈。
而圆圈,与箭头不同的是,严格意义上讲,是在线条的交汇点后面的!这也是为什么我们要把圆圈作为我们的目标。没有多余的圆圈。
为什么箭头有问题呢?
在测试器中运行该指标,观察加速时可视化的线条和圆圈...如果在这之后仍然没有意义,我不知道还能如何简单解释......
倍增什么?开?关闭?斯托奇?