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

 
Mihail Matkovskij:

但在这个代码能够用于实际交易之前,还需要进行大量的调整...

是的,我明白。它根本不太可能实现完全的自动交易。你需要在很长一段时间内用大量的交易来彻底测试你的交易理念。

没有测试者,就不可能从质量上检查一个想法,这是不幸的。战略参数的优化也是不幸的。该测试器使这一过程非常容易。

 
Alexey Viktorov:

我从未想过我要引用你的文件...

......订单的关闭时间为0...

谢谢,我也没有想到。我没有经常这样做,但我不得不抽出一张票,而且从未遇到过问题,显然是因为我在市场上循环使用那些票。

 
Igor Makanu:
阿列克谢-维克多罗夫

谢谢你!

 

你好。试图找到指标中的计算错误。通过Alert输出一个Close[0]值(下面使用)。输出一个有4位小数的数字,经纪人有5位

Alert(Close[0]);

我做错了什么?谢谢你。

 
Oleg Bondarev:

你好。试图找到指标中的计算错误。通过Alert输出一个Close[0]值(下面使用)。输出一个有4位小数的数字,经纪人有5位。

我做错了什么?谢谢你。

那你从哪里得到Close[0]?看一下源代码会很有趣,因为你不是在一个通灵论坛上...:)

 

你好,请帮我找一条出路--问题!

#define           Pmax 1200   //размер массива по периоду
double           ExtBuffer[];

//+------------------------------------------------------------------+
//| Структура для хранения данных Фибо                               |
//+------------------------------------------------------------------+
struct PosFib
  {
   double            period[Pmax]; 
  };

int OnCalculate(const int rates_total,....)
{
   PosFib BP[Pmax];
   
   for(int p=2; p<Pmax; p++) // отбор по периодам
      for(int b=prev_calculated>Pmax?prev_calculated:Pmax; b<rates_total; b++)
        {
         BP[b].period[p]=sm.d[p-1].m[b];
        }

   return(rates_total);
}

在编译的时候,它给出了一个警告--局部变量的大小太大(超过512kb)。

这个警告有多关键?


 
Top2n:

你好,请帮我找一条出路--问题!

在编译的时候,它给出了一个警告--局部变量的大小太大(超过512kb)。

请告知如何绕过这种情况!?

int OnCalculate(const int rates_total,....)
{
   PosFib BP[];
   ArrayResize(BP, Pmax);
....

SZY: 使用指标缓冲区 进行计算很方便(INDICATOR_CALCULATIONS),如果你有问题,可以用它们代替

 
Igor Makanu:

谢谢你

 

祝大家今天愉快

关于MQL-4的问题。
有一个函数ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); 。它搜索一个预先排序的数组的一个元素。如果数组是二维的,那么这个函数只在第一维中搜索一个元素。

问:哪个函数或语言结构可以用来寻找数组 第二维中的所需元素?我有一个有两行的二维数组

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
我怎样才能在底层行而不是顶层行找到我想要的数值的数组元素?因为ArrayBsearch( )只在顶行搜索。
谢谢你的帮助。

 
ANDREY:

祝大家今天愉快

关于MQL-4的问题。
有一个函数ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); 。它搜索一个预先排序的数组的一个元素。如果数组是二维的,那么这个函数只在第一维中搜索一个元素。

问:哪个函数或语言结构可以用来寻找数组 第二维中的所需元素?我有一个有两行的二维数组

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
我怎样才能在下面一行找到我想要的值的数组元素,而不是上面一行?因为ArrayBsearch( )只在顶行搜索。
谢谢你的帮助。

在MQL4中,我只有这种方式。

//+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version   "1.00"
#property strict

#property script_show_inputs

#define  size1 2 
#define  size2 10

input double value1 = 3;
input double value2 = 8;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  double array[size1][size2] = {
    {10,9,8,7,6,5,4,3,2,1}, 
    {10,3,8,9,2,1,1,8,8,6}
  };
  
  double bufer[size2];
  
  int i;
  
  int index;
  
  string str;
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[0, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value1, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[0, i] = bufer[i];
    str += (string)array[0, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[0]: {" + str + "}");
  
  Print("value1 array[0]["+(string)index+"]: ", array[0][index]);
  
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[1, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value2, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[1, i] = bufer[i];
    str += (string)array[1, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[1]: {" + str + "}");
  
  Print("value2 array[1]["+(string)index+"]: ", array[1][index]);
}
//+------------------------------------------------------------------+

结果。

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: value2 array[1][6]: 8.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: array[1]:{1, 1, 2, 3, 6, 8, 8, 8, 9, 10}

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: value1 array[0][2]: 3.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: array[0]:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


附加的文件:
原因: