新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1448

 
Alexey Viktorov:

嗯,谢谢你......至少我看到了六年前的自己......我就像你现在这样。我没有考虑以错误的方式提供建议。

至于模板:如果模板有一个指标,但没有EA,那么模板将在没有EA的情况下被加载......如果模板有一个EA呢?你确定在模板上加载的EA不会应用模板,从而会修复并挂起终端?

它没有--一切都很正常!

 
SanAlex:

我没有任何挂念--一切都很正常!"。

不要像我一样懒惰。把这种操作拍成视频:-)))

 
Vitaly Muzichenko:

现在我来到了调试mt4中的 "SmoothedMAOnBuffer() "结构。

怎么了,我一点都不明白。

我已经写了一百遍了--把函数从循环中删除。

而不是这种废话

ArrayResize(buff, counter);
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);
   for(i = 0; i < counter - a; i++) {
     // buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i); // Так индикатор работает
      SmoothedMAOnBuffer(counter, prev_calculated, i, period, Array_1, buff); Совсем не работает, но и ошибок в журнале нет
      buf_3[i] = buff[0]; ???
   }
   for(i = counter - a; i > 0; i--) {
      Array_2[i] = Array_2[i + 1];

像这样写

ArrayResize(buff, counter);
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);

if(SmoothedMAOnBuffer(counter, prev_calculated, i, period, Array_1, buff)==0)
   return 0;

for(i = counter - a; i > 0; i--) {
   Array_2[i] = Array_2[i + 1];

我告诉你--这个函数的调用是Array中平滑数据的一个完整循环。这个数组的平滑数据将在buff数组中--只要进一步从中提取你需要的平滑数据。

 
Alexey Viktorov:

不要像我一样懒惰。把这种操作拍成视频:-)))

这里有一个遗憾--我以前没有访问过你的资料。你那里有这么好的代码。我真的很喜欢这个。https://www.mql5.com/ru/code/16396

EURGBPH1

TralingLine
TralingLine
  • www.mql5.com
Виртуальный Stop Loss или Trailing Stop.
 
Artyom Trishkin:

我已经告诉过你一百次了--把这个函数从循环中删除。

而不是这种废话

这样写 吧。

我告诉你--调用这个函数是在Array中平滑数据的一个完整周期。这个数组的平滑数据将在buff数组中--只要进一步从中提取你需要的平滑数据。

谢谢你!,它的作用。

SmoothedMAOnBuffer(rates_total, prev_calculated, count, period, Array_1, buf_3);

我不明白它是如何工作的,我现在试着弄清楚。

 
Artyom Trishkin:

我已经告诉过你一百次了--把这个函数从循环中删除。

而不是这种废话

这样写 吧。

我告诉你--调用这个函数是在Array中平滑数据的一个完整周期。这个数组的平滑数据将在buff数组中--只要再进一步,从中提取你需要的平滑数据。

我无论如何也没能把它全部应用,我花了4个多小时。

刚开始时显示正确,然后没有刷新--它冻结了,而标准的则工作正常。

   double Array_1[];
   double Array_2[];
   int i=0;
   int period = (int)MathFloor(MathSqrt(a));
   int val = (int)MathFloor(a / 1.9);
   int bars=rates_total;
   int counter = bars - prev_calculated + a + 1;
   if(counter > bars)
      counter = bars;
   ArrayResize(Array_1, counter);
    ArraySetAsSeries(Array_1, true);
   ArrayResize(Array_2, counter);
    ArraySetAsSeries(Array_2, true);

   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val) - ma_1(i, a);
  //  for(i = 0; i < counter - a; i++)
  //  buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i);
   SmoothedMAOnBuffer(rates_total, prev_calculated, prev_calculated, period, Array_1, buf_3); // Где-то здесь не правильно вписаны параметры

---

我必须要参加什么活动?

在MT5中,它根本不显示任何东西。

附加的文件:
test.mq4  13 kb
 
Vitaly Muzichenko:

无论如何也不能全部应用,花了4个多小时。

第一次启动时显示正确,然后没有更新 - 冻结,在标准状态下工作正常。

---

我必须要参加什么活动?

我不知道MT5中发生了什么。

你能解释一下你想得到的结果是什么吗?

你的指标是按照你需要的方式建立的,你需要告诉人们如何不这样做:)

绘制的和计算的缓冲区都是混在一起的。计算出来的应该是最后一个--不幸的是,你不能随意混合它们。

它对5不适用,因为5中的ma_1()函数将返回一个句柄,而不是一个MA值。

在SmoothedMAOnBuffer()函数中,你传递了prev_calculated 而不是数组中有意义的数据的开头-- 为什么?你需要在这里传递最小值0,和最大值--一个取决于Array_1中存储的MA数据的计算周期的计算值--好吧,至少是周期

在选择绘制哪种颜色的区块中,你有一个逻辑错误--你覆盖了缓冲区--只要在括号外放一个空白值即可。你检查条件,但在真理的情况下应该做什么被放出括号。也就是说,它总是被执行。这是括号排列习惯的结果--当它们的位置不明显时。

Array_1和Array_2 - 为什么它们不是计算的缓冲区?

总而言之--有很多问题。

a 变量的值被严格设定。为什么要在每个刻度 上计算变量val 的值

为两个变量做两个计算缓冲区,在OnInit()中用周期a和val计算。从这些缓冲区和取值--那么它将在两个平台上工作。

 
Artyom Trishkin:

你能用语言表达出你想要的结局吗?

你的指标是按照你需要的方式建立的,你需要告诉人们如何不这样做:)

绘图和计算缓冲区都混在一起。计算过的应该是最后一个--不幸的是,你不能随意地混合它们。

它对5不适用,因为5中的ma_1()函数将返回一个句柄,而不是一个MA值。

在SmoothedMAOnBuffer()函数中,你传递了prev_calculated 而不是数组中有意义的数据的开始-- 为什么?你需要在那里传递最小值0,和最大值--一个取决于Array_1中存储的MA数据的计算周期的计算值--好吧,至少是周期

在选择绘制哪种颜色的区块中,你有一个逻辑错误--你覆盖了缓冲区--只要在括号外放一个空白值即可。你有一个条件,在真理的情况下,应该做什么被放出了括号。也就是说,它总是被执行。这是括号排列习惯的结果--当它们的位置不明显的时候。

Array_1和Array_2 - 为什么它们不是计算的缓冲区?

总而言之--有很多问题。

a 变量的值被严格设定。为什么要在每个刻度 上计算变量val 的值

为两个变量做两个计算缓冲区,在OnInit()中用周期a和val计算。从这些缓冲区和取值--那么它将在两个平台上工作。

如果我知道解决方案,我就不会写了

这个指标不是我的,我甚至没有看过iMAOnArray()下面的内容,整个任务只是用一些东西来替换iMAOnArray()。

能否给我一个工作实例,说明应该怎样做?

谢谢!

P.S. 对于mt5的手柄是好的
附加的文件:
max.mq5  14 kb
 
Vitaly Muzichenko:

能否给我一个工作实例,说明应该怎样做?

一个什么的工作实例?一个来自四区的指标在五区发挥作用?然后给我一个完全工作的指标,从四开始。

或者一个如何使用SmoothedMAOnBuffer()函数的例子?

 
Artyom Trishkin:

一个什么的工作实例?一个来自四区的指标在五区发挥作用?然后给我一个完全工作的指标,从四开始。

或者一个如何使用SmoothedMAOnBuffer()函数的例子?

一个来自mt4的工作例子,标准的iMAOnArray正在更新,但SmoothedMAOnBuffer在第一次运行时是好的,然后没有更新。

我需要一个使用SmoothedMAOnBuffer()工作的例子

附加的文件:
test.mq4  17 kb