初学者的问题 MQL4 MT4 MetaTrader 4 - 页 22

 
A1exPit:
我的意思是,当数据被传入数组时,它将按顺序填入,即array1[] = x;如果没有直接指定单元格号,值x将被写入哪个单元格?

如果你想用相同的值填充所有单元格,请使用ArrayInitialize()

如果你想写不同的值,请按顺序使用循环。如果你需要写到一个特定的单元格,指定其地址。

 
Vitalie Postolache:

如果你想用相同的值填充所有单元格,请使用ArrayInitialize()

如果你想写不同的值,请按顺序使用循环。如果你需要写到一个特定的单元格,指定其地址。

谢谢你。

这里还有一个问题:通过ArrayCopy,我是否能够创建一个新的数组,其大小等于前一个数组的填充单元数?还是我应该先创建第二个阵列,然后再进行复制?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
 
A1exPit:

谢谢你。

这里还有一个问题:用ArrayCopy,我可以创建一个新的数组,其大小与前一个数组中的填充单元数相同吗?还是我必须先创建第二个阵列,然后再复制?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
当然,先创造。
 
Vitalie Postolache:
当然,先创造。
谢谢你,再次感谢。
 
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

像这样,我把Spread值写入ExtSpread[],当一分钟的条形图结束后,我把它移到另一个数组中--理论上,它应该存活到下一个条形图。

尺寸ExtSpread[1000]

还有一个问题:如果数组从零开始编号,那么,如果其大小为1000,其最后一个单元格将是999?

那么它是正确的:x++,如果( x > 999 ) x=0。

 
A1exPit:
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

像这样,我把Spread值写入ExtSpread[],当一分钟的条形图结束后,我把它移到另一个数组中--理论上,它应该存活到下一个条形图。

尺寸ExtSpread[1000]

还有一个问题:如果数组从零开始编号,那么,如果其大小为1000,其最后一个单元格将是999?

那么它是正确的:x++,如果( x > 999 ) x=0。

Spread = (int)MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[];ArrayInitialize (Spread2,EMPTY_VALUE); ArrayResize( Spread2,x,0);
ArrayCopy( Spread2,ExtSpread,0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 999) x = 0;
 
下午好!请你告诉我,我在安卓上下载了mt4 636版本,但它没有看到经纪商列表。终端版本是否不再支持?((如果是的话,我在哪里可以下载一个有效的版本?
 

推迟了。

scomoroh, 2016.12.04 18:58

编译过程中弹出一个错误。问题是什么?帮助解决这个问题!
附加的文件:
 
Vladimir Karputov:

推迟了。

scomoroh, 2016.12.04 18:58

在编译过程中会弹出一个错误。问题是什么?帮我解决这个问题!

ArrayInitialize(max,0) =>ArrayInitialize(arr,0)。

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

这是一个非常不理想的代码,终端在启动时挂起几分钟,然后会非常慢,如果你在几个图表上运行它,那么它将完全不工作。

 
Vitalie Postolache:

ArrayInitialize(max,0) =>ArrayInitialize(arr,0)。

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

这是一个非常不理想的代码,终端在启动时挂起几分钟,然后会非常慢,如果你在几个图表上运行它,那么它将完全不工作。

是的,谢谢,修复了一切,没有错误。滞后,是的,非常滞后。你能告诉我在什么方向上进行优化,还是说我必须重写一切?
原因: