程序库: TradeTransactions - 页 5

 
fxsaber:

程序库源码包含Convert.mqh,它可以快速将 一种类型的数组转换成另一种类型的数组。

// 快速数组转换。
#include <fxsaber\TradeTransactions\Convert.mqh> //https://www.mql5.com/zh/code/22166

void OnStart()
{
  MqlTick Ticks[];

  MqlRates Rates[];  
  CopyRates(_Symbol, PERIOD_CURRENT, 0, 10, Rates); // 得到了报价。
  CONVERT::ArrayToArray(Rates, Ticks);              // Casting MqlRates[] -> MqlTick[]。

  MqlRates Rates2[];    
  CONVERT::ArrayToArray(Ticks, Rates2);             // 转换 MqlTick[] -> MqlRates[]。
  ArrayPrint(Rates2);                               // 确保一切正确无误。
}
 
fxsaber :

您可以通过资源交换任何东西。


您声称下载了 Container2,但却没有使用它。从逻辑上讲,应该是这样的:

  // 获取原始数据
  string Str2[];
  Container2[0].Get(Str2);                // 得到数组
  ArrayPrint(Str2);

  PRINT(Container2[1].Get<double>())      // 我们得到了一个数字
  PRINT(Container2[2].Get<MqlTick>().bid) // 我们得到了结构   
当然,在你的例子中,结果是一样的。

更重要的是,使用上述代码作为脚本,并从以下地址下载库

我得到了 :

2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = string[2]
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = double
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() =MqlTick
2019.03.26 18:11:51.656 R-277866Original (EURUSD,M1) Stack overflow in '...\MQL5\Scripts\forum\R-277866Original.ex5'.

?
 
Alain Verleyen:

你声称加载了 Container2,但却没有使用它。从逻辑上讲,应该是这样的:

是的,示例中有一个错字。


当然,在你的示例中,结果是一样的。

经过您的编辑,结果也是一样的。


更重要的是,使用上述代码作为脚本,并

我得到了 :

2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = string[2]
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() = double
2019.03.26 18:11:51.624 R-277866Original (EURUSD,M1) Container[i].GetType() =MqlTick
2019.03.26 18:11:51.656 R-277866Original (EURUSD,M1) Stack overflow in '...\MQL5\Scripts\forum\R-277866Original.ex5'.

?

没有源代码我什么也说不了。

 
fxsaber :
...

没有源代码,我什么也说不出来。

源代码正是你的代码。构建 2009。

附加的文件:
 
Alain Verleyen:

您的代码才是源代码。构建 2009。

执行无误。

 

下午好

我只是宣布

RESOURCEDATA<uchar> Res;

就出现了这样的错误

'Data' - struct undefined       Convert.mqh     75      49
in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     60      14
'Data' - struct undefined       Convert.mqh     43      38
in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     29      14

以前没有,我想是在更新了终端(build 2085)之后出现的。还是我哪里出错了?)

 
Oleksii Chepurnyi:

之前并不存在,我认为是在终端更新(构建 2085)后出现的。

本地化了这个编译器错误

template <typename T>
struct A { T a; };

void f1()
{
  struct B { int Data; };
  A<B> Tmp;
}

void f2()
{
  struct B { int Data; };
  A<B> Tmp;
  
  Tmp.a.Data = 0; // '数据' - 结构未定义
}
 
我认为在更新终端 后,

是的,2037 中没有这样的错误。

 
Oleksii Chepurnyi:

是的,2037 年没有这样的错误。

绕过这个错误,把Include\fxsaber\TradeTransactions\Convert.mqh 替换为附件中的那个。

附加的文件:
Convert.mqh  4 kb
 
fxsaber:

绕过该错误,将Include\fxsaber\TradeTransactions\Convert.mqh 替换为附件中的版本。

有效 )谢谢!