新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 696 1...689690691692693694695696697698699700701702703...1953 新评论 Artyom Trishkin 2018.11.19 05:58 #6951 Northwest:1.把所有东西放回去,不要折磨电脑 。对不起,但你不能这样做,指标必须从左到右数。我不去管它,我把它用于它的预期目的。2.使用存储在阵列中的数据计算的iBandsOnArray、iStdDevOnArray是的,它们是用bbMacd[]数组的数据计算出来的,那么接下来呢?3.数组在一个循环中被填充。在一个还是在第一个?你是说,为了填充一个数组,你需要一个个人循环,在这个循环中填充这个数组 阵列被填满,不能进行其他操作?对我来说,重要的是找出指标变慢的原因,以及如何计算那些发生这种情况的地方。我有更多的问题,但没有答案。不幸的是,你没有提供任何线索。如果某样东西是用数组建立的,它应该是用一个已经存在的数组建立的。这是阵列准备的一个周期,也是该阵列绘制指标的第二个周期。这是一个一般的案例。还有一些更特殊的情况,但它们应该单独考虑 - 例如,我们可以创建函数,只从一个计算栏中返回值。 //+------------------------------------------------------------------+ //| BandsOnArray | //+------------------------------------------------------------------+ double BandsOnArray(const int rates_total,const int index,const int period,const double deviation_bb,const double &array[],const int line,const bool as_series=true) { //--- check position bool check_index=(as_series ? index<=rates_total-period-1 : index>=period-1); if(period<1 || !check_index) return 0; //--- calculate StdDev double dev=StdDevOnArray(rates_total,index,period,array); //--- base line double mid=0; for(int i=0; i<period; i++) mid+=array[index+i]; mid/=period; //--- upper line double top=mid+dev*deviation_bb; //--- lower line double btm=mid-dev*deviation_bb; return(line==UPPER_BAND ? top : line==LOWER_BAND ? btm : mid); } //+------------------------------------------------------------------+ //| StdDevOnArray | //+------------------------------------------------------------------+ double StdDevOnArray(const int rates_total,const int index,const int period,const double &array[],const bool as_series=true) { //--- check position bool check_index=(as_series ? index<=rates_total-period-1 : index>=period-1); if(period<1 || !check_index) return 0; //--- calculate value double avg=0; for(int i=0; i<period; i++) avg+=array[index+i]; avg/=period; double sd=0; for(int i=0; i<period; i++) sd+=(avg-array[index+i])*(avg-array[index+i]); return(sqrt(sd/period)); } //+------------------------------------------------------------------+ 但是它们也需要一个已经准备好的数据数组作为输入,因为StdDevOnArray和BandsOnArray使用了简单平滑,对于它来说,需要填充等于周期 平滑值的数据。 psyman 2018.11.19 09:37 #6952 关于交易、自动交易系统和策略测试的论坛 对MQL4新手的任何问题,对算法和代码的帮助和讨论 Artyom Trishkin, 2018.11.18 20:21 PlotIndexSetInteger(0,PLOT_ARROW,140)。 但你需要创建一个与周数相等的缓冲区。而对于每个缓冲区,你必须给出一个从140到149的箭头代码--1、2、3、4、5、6、7、8、9、10--十个星期够不够一年?这只有70天。或者你想怎么做? 是否可以通过案例来覆盖SetIndexArrow? 或者至少在直方图上显示这些数字? 关于交易、自动交易系统和策略测试的论坛 任何关于MQL4初学者的问题,帮助和讨论算法和代码 Artyom Trishkin, 2018.11.18 20:02 缓冲区被填充了一个小时的数值。而如果小时数为零,直方图就不会被画出来。因此,我们必须检查小时数是否等于零(我们在设置中设置为搜索零小时数),如果等于零,我们必须在缓冲区中输入0.1而不是小时数(零)--以显示柱状图栏。这将在数据窗口中显示一个0的值,而不是0.1,因为指标Digits被设置为零。 我现在明白了,谢谢你。 Artyom Trishkin 2018.11.19 09:50 #6953 psyman: SetIndexArrow能否被一个案例所覆盖? 或者至少在柱状图上显示这些数字? 我现在明白了,谢谢你。 它一次性地作用于整个缓冲区。 你需要在发现栏上放一个周数的图标,那里应该是一年的周数。数字箭头在Wingdings中明显丢失。 可以用对象文本转出,用周数的值标记条,但将缓冲区的图标设置为32--一个空字符。该值将出现在条形图上,但不会被显示。然后值可以是一年中的周数,在对象中写上你想要的任何内容,对象就会显示在发现的条形图上。 psyman 2018.11.19 10:31 #6954 关于交易、自动交易系统和策略测试的论坛 关于MQL4的初学者的任何问题,对算法和代码的帮助和讨论 Artyom Trishkin, 2018.11.19 10:50 am 它一次性地作用于整个缓冲区。 你需要在发现栏上放一个周数图标,那里应该有一年的周数。数字箭头在Wingdings中明显丢失。 你可以用对象文字转过来,用周数的数值标记条,但缓冲区的图标要设置32--一个空字符。该值将出现在条形图上,但不会被显示。然后值可以是一年中的周数,在对象中写上你想要的任何内容,对象就会显示在发现的条形图上。我写的是一周中的一天--周一、周二、周三,而不是数字。你只需要在图表上做5个不同的标记。 Artyom Trishkin 2018.11.19 11:19 #6955 psyman:我写的是一周中的一天--周一、周二、周三,而不是数字。你只需要在图表上做五个不同的标记。那么你需要五个缓冲区,并为每个缓冲区分配一个不同的箭头数字--从140到144。 Northwest 2018.11.19 14:05 #6956 Artyom Trishkin:如果某样东西是用数组建立的,那么它应该是用一个已经准备好的数组建立的。而这是阵列准备的一个周期,第二个周期是由这个阵列绘制指标。这是一个一般的案例。还有一些更特殊的情况,但它们应该单独考虑 - 例如,我们可以创建函数,只从一个计算栏中返回值。 但是它们也需要一个已经准备好的数据数组作为输入,因为StdDevOnArray和BandsOnArray使用了简单平滑,对于它来说,需要填充等于周期平滑值的数据。 谢谢你对情况的澄清。 Andrei Sokolov 2018.11.19 16:19 #6957 你好 我如何制作一个带有按钮的弹出窗口,以手动确认/取消交易? Artyom Trishkin 2018.11.19 16:32 #6958 Andrey Sokolov:你好 我如何制作一个带有按钮的弹出窗口,以手动确认/取消交易?讯息框() Andrei Sokolov 2018.11.20 09:08 #6959 Artyom Trishkin:讯息框()谢谢 FEEX 2018.11.20 15:08 #6960 大家好。 我怎样才能获得与测试器中一样的最大缩减百分比? 以下是代码。 double MaxPeak,DD, MaxDD, DD2, MaxDD2; -------------------------------------- -------------------------------------- это вывод: SM("Maximal drawdown : " + DoubleToString(MaxDrawdown_Money(), 2)+ " (" + DoubleToString(MaxDrawdown_Protsent(), 2) +" %)"); ------------------------------------- ------------------------------------- //--------------------Рассчет % относительной просадки---------- double MaxDrawdown_Protsent() { if (AccountEquity() > MaxPeak) { MaxPeak = AccountEquity(); } if (AccountEquity() < MaxPeak) { DD2 = NormalizeDouble((MaxPeak - AccountEquity())/MaxPeak*100,2); } if (MaxDD2< DD2) { MaxDD2 = DD2; } return (MaxDD2); } //---------------------Рассчет суммы максимальной просадки-------- double MaxDrawdown_Money() { if (AccountEquity() > MaxPeak) { MaxPeak = AccountEquity(); } if (AccountEquity() < MaxPeak) { DD = NormalizeDouble(MaxPeak - AccountEquity(),2); } if (MaxDD< DD) { MaxDD = DD; } return (MaxDD); } 最大缩水的数额与测试者相同,相对缩水的百分比也与测试者相同。 我怎样才能获得 与 测试 器中一样的最大缩减百分比? 1...689690691692693694695696697698699700701702703...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.把所有东西放回去,不要折磨电脑 。
对不起,但你不能这样做,指标必须从左到右数。
我不去管它,我把它用于它的预期目的。
2.使用存储在阵列中的数据计算的iBandsOnArray、iStdDevOnArray
是的,它们是用bbMacd[]数组的数据计算出来的,那么接下来呢?
3.数组在一个循环中被填充。
在一个还是在第一个?
你是说,为了填充一个数组,你需要一个个人循环,在这个循环中填充这个数组
阵列被填满,不能进行其他操作?
对我来说,重要的是找出指标变慢的原因,以及如何计算那些发生这种情况的地方。
我有更多的问题,但没有答案。
不幸的是,你没有提供任何线索。
如果某样东西是用数组建立的,它应该是用一个已经存在的数组建立的。这是阵列准备的一个周期,也是该阵列绘制指标的第二个周期。这是一个一般的案例。还有一些更特殊的情况,但它们应该单独考虑 - 例如,我们可以创建函数,只从一个计算栏中返回值。
但是它们也需要一个已经准备好的数据数组作为输入,因为StdDevOnArray和BandsOnArray使用了简单平滑,对于它来说,需要填充等于周期 平滑值的数据。
关于交易、自动交易系统和策略测试的论坛
对MQL4新手的任何问题,对算法和代码的帮助和讨论
Artyom Trishkin, 2018.11.18 20:21
PlotIndexSetInteger(0,PLOT_ARROW,140)。
但你需要创建一个与周数相等的缓冲区。而对于每个缓冲区,你必须给出一个从140到149的箭头代码--1、2、3、4、5、6、7、8、9、10--十个星期够不够一年?这只有70天。或者你想怎么做?
是否可以通过案例来覆盖SetIndexArrow?
或者至少在直方图上显示这些数字?
关于交易、自动交易系统和策略测试的论坛
任何关于MQL4初学者的问题,帮助和讨论算法和代码
Artyom Trishkin, 2018.11.18 20:02
缓冲区被填充了一个小时的数值。而如果小时数为零,直方图就不会被画出来。因此,我们必须检查小时数是否等于零(我们在设置中设置为搜索零小时数),如果等于零,我们必须在缓冲区中输入0.1而不是小时数(零)--以显示柱状图栏。这将在数据窗口中显示一个0的值,而不是0.1,因为指标Digits被设置为零。
我现在明白了,谢谢你。
SetIndexArrow能否被一个案例所覆盖?
或者至少在柱状图上显示这些数字?
我现在明白了,谢谢你。
它一次性地作用于整个缓冲区。
你需要在发现栏上放一个周数的图标,那里应该是一年的周数。数字箭头在Wingdings中明显丢失。
可以用对象文本转出,用周数的值标记条,但将缓冲区的图标设置为32--一个空字符。该值将出现在条形图上,但不会被显示。然后值可以是一年中的周数,在对象中写上你想要的任何内容,对象就会显示在发现的条形图上。
关于交易、自动交易系统和策略测试的论坛
关于MQL4的初学者的任何问题,对算法和代码的帮助和讨论
Artyom Trishkin, 2018.11.19 10:50 am
它一次性地作用于整个缓冲区。
你需要在发现栏上放一个周数图标,那里应该有一年的周数。数字箭头在Wingdings中明显丢失。
你可以用对象文字转过来,用周数的数值标记条,但缓冲区的图标要设置32--一个空字符。该值将出现在条形图上,但不会被显示。然后值可以是一年中的周数,在对象中写上你想要的任何内容,对象就会显示在发现的条形图上。
我写的是一周中的一天--周一、周二、周三,而不是数字。你只需要在图表上做5个不同的标记。
我写的是一周中的一天--周一、周二、周三,而不是数字。你只需要在图表上做五个不同的标记。
那么你需要五个缓冲区,并为每个缓冲区分配一个不同的箭头数字--从140到144。
如果某样东西是用数组建立的,那么它应该是用一个已经准备好的数组建立的。而这是阵列准备的一个周期,第二个周期是由这个阵列绘制指标。这是一个一般的案例。还有一些更特殊的情况,但它们应该单独考虑 - 例如,我们可以创建函数,只从一个计算栏中返回值。
但是它们也需要一个已经准备好的数据数组作为输入,因为StdDevOnArray和BandsOnArray使用了简单平滑,对于它来说,需要填充等于周期平滑值的数据。
你好
我如何制作一个带有按钮的弹出窗口,以手动确认/取消交易?
你好
我如何制作一个带有按钮的弹出窗口,以手动确认/取消交易?
讯息框()
谢谢
大家好。
我怎样才能获得与测试器中一样的最大缩减百分比?
以下是代码。
最大缩水的数额与测试者相同,相对缩水的百分比也与测试者相同。
我怎样才能获得 与 测试 器中一样的最大缩减百分比?