MetaTrader 4 Build 529测试版发布,带有新的编译器 - 页 105

 
Night63:

同事们,编译时弹出了一条警告信息。

可能使用未初始化的变量'PipStep'。

为这样的大块。

所有的变量都被初始化为双数,这有什么问题吗?

你声明了double类型的变量,初始化就是给声明的变量 赋值。

double PipStep=0 ; make

 
我不明白,难道只有我一个人无法测试555构建中的指标演示,还是这对市场首发来说根本不是一个重要问题?
 
Candid:
我不明白,难道只有我一个人无法测试555构建中的指标演示,还是这对市场首发来说根本不是一个重要问题?

他们是在5岁时进行测试吗?
 

ArrayCopyRates() также изменила свое поведение, раньше она производила виртуальное копирование в массив double[][6], теперь же производится виртуальное копирование в массив MqlRates[]. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное.

https://www.mql5.com/ru/forum/148325

汇率:MqlRates

用于存储价格、成交量和价差信息的结构。

https://www.mql5.com/ru/docs/constants/structures/mqlrates

MetaTrader 4中的MqlRates是建立在555个数组还是结构中?

这个来自帮助(MetaTrader 4 build 555)的例子不起作用,因为没有函数 CopyRates

void OnStart()
  {
//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(Symbol(),0,0,100,rates);
   if(copied>0)
     {
      Print("Скопировано баров: "+copied);
      string format="open = %G, high = %G, low = %G, close = %G, volume = %d";
      string out;
      int size=fmin(copied,10);
      for(int i=0;i<size;i++)
        {
         out=i+":"+TimeToString(rates[i].time);
         out=out+" "+StringFormat(format,
                                  rates[i].open,
                                  rates[i].high,
                                  rates[i].low,
                                  rates[i].close,
                                  rates[i].tick_volume);
         Print(out);
        }
     }
   else Print("Не удалось получить исторические данные по символу ",Symbol());
  }
 

//+------------------------------------------------------------------+
//|                                                     my_test1.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property  strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   ArrayCopyRates(rates,"EURUSD",PERIOD_M1);
   //int copied=CopyRates(Symbol(),0,0,100,rates);

   Print(
         " спред ",rates[6].spread               
         );
  }
//+------------------------------------------------------------------+
这也不行,你能在MetaTrader 4 build 555中看到一个使用MqlRates的工作例子吗?
 
ALXIMIKS:

他们会在5分钟内测试吗?

有些人也不在5岁时测试吗?
 
ALXIMIKS:

你声明了double类型的变量,初始化是对声明的变量进行赋值。

double PipStep=0 ; do


它成功了!!!。

活到老,学到老!

非常感谢您!

 
serferrer:

MetaTrader 4中的MqlRates是建立在555个数组还是结构中?

这个来自帮助(MetaTrader 4 build 555)的例子不起作用,因为没有函数 CopyRates

这也不行,我们能在MetaTrader 4 build 555中看到一个使用MqlRates的工作实例吗?


MqlRates- 结构

MqlRates[] - 数组结构

要看一个使用MqlRates结构的例子,请看脚本period_converter_new

ArrayCopyRates操作的一个例子(文档将被更新)。

MqlRates array1[];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("Текущий бар ",array1[0].time,"  цена открытия ", array1[0].open);
 
MetaQuotes:

MQL4中的变化

  • ArrayCopyRates()也改变了它的行为,它曾经虚拟复制到数组double[][6],现在它虚拟复制到数组MqlRates[]。现在向数组double[][6]的复制被执行,但它不是虚拟的,而是真实的。

我有相当数量的专家顾问使用DLLs,它们在很久以前就已经传给了客户。我们使用数组 double[][6] 来向DLL传递参数 ,这些参数在初始化过程中 被ArrayCopyRates()虚拟复制 进去 了。然后当从DLL调用函数时,这些数组和它们的当前大小被作为参数通过引用传递。

事实证明,当终端更新到一个新的版本时,所有这些EA将停止工作。这是很不幸的。

我是否正确地理解,为了在不改变DLL代码的情况下保持它们的工作,我们现在应该在每次调用DLL中的一个函数之前调用ArrayCopyRates()?

 
stringo:
现在 MqlRates 结构中没有点差值(可能还有 交易量 ),以后会不会增加?
 
Patrol:

我有相当数量的使用DLL的EA,这些EA在很久以前就已经移交给了客户。为了向DLL传递参数,我们使用了数组 double[][6],在初始化 ArrayCopyRates() 函数中对 时间序列进行了虚拟复制然后,当从DLL调用函数时,这些数组和它们的当前大小被作为参数通过引用传递。

事实证明,当终端更新到一个新的版本时,所有这些EA将停止工作。这是很不幸的。

我是否正确地理解,为了在不改变DLL代码的情况下保持它们的工作,我们应该在每次从DLL调用一个函数之前调用ArrayCopyRates()?


比这更复杂一点。dll所采取的结构也发生了变化。

所以,你需要将ArrayCopyRates改写成MqlRates 结构数组。另外,在你的dll中,你需要替换相应结构的描述