: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

MultiCharts编程-PowerLanguage-Dynamic Array动态数组

MultiCharts编程-PowerLanguage-Dynamic Array动态数组

10 Dynamic Array动态数组


在第9章中说明了一般指定长度的数组定义,有时需要用到动态数组来存计算出的数据值。本章则为动态数组的定义、比较、设定数值范围、排序、求和等给出详细介绍。

  Array_Compare  
  

说明

  
  

比较源数组和目标数组中的指定起始位置及指定数量的元素是否相同

  

源数组和目标数组可以是相同或不同的一维数组。

  

若比较的数组为数值数组,会比较每组元素的数值大小。

  

若比较的数组为字符串数组,会比较每组元素的ASCII值的大小。

  

若比较的数组为布林数组,会比较每组元素的布林值是否相同,若不相同时,真(true)大于假(false)。

  
  

语法

  
  

Array_Compare(源数组,源索引,目标数组,目标索引,元素个数)

  
  

参数

  
  

源数组——要比较的第一个数组

  

源索引——数值表达式,指定数组1的开始索引值

  

目标数组——要比较的第二个数组

  

目标索引——数值表达式,指定数组2的开始索引值

  

元素个数——数值表达式,要比较的元素个数

  

索引从0开始计数

  
  

返回

  
  

0——比较的每组元素完全相同;

  

1——源数组的元素大于目标数组;

  

-1——源数组的元素小于目标数组。

  
  

范例

  
  

比较数组元素Array1[3]Array2[2]的大小,以及 Array1[4]Array2[3]的大小:

  

Array:Array1[4](0),Array2[6](0);

  

for
Value1=0
to
4
begin Array1[Value1]=Value1*2; end;

  

for
value2=0
to
6
begin
Array2[value2]=value2*3; end;

  

Value3=Array_Compare(Array1,3,Array2,2,2);

  

由上可知Array1[3]= Array2[2]Array1[4]< Array2[3],则Value3=-1

  

Array1{false, false, false, false, false, false, true, false}Array2{false, false, false, false, false, false, true, false},则Value3=0

  

Array1{a,b,c,d,e,f,g,h}Array2{a,b,c,d,e,f,g,h},则Value3=1

  


  Array_Copy  
  

说明

  
  

复制源数组中的指定起始位置及数量的元素至目标数组指定的起始位置。

  

源数组和目标数组可以是相同或不同的一维数组。

  
  

语法

  
  

Array_Copy(源数组,来源索引,目标数组,目标索引,元素个数)

  
  

参数

  
  

源数组——要复制的源数组

  

源索引——数值表达式,指定源数组的索引值

  

目标数组——要复制的目标数组

  

目标索引——数值表达式,指定目标数组的索引值

  

元素个数——数值表达式,要比较的元素个数

  
  

范例

  
  

复制Array1索引4开始的2个元素至Array2索引6开始的2个元素位置:

  

Array_Copy(Array1,4,Array2,6,2);

  

复制Array1索引4开始的2个元素至索引6开始的2个元素位置:

  

Array_Copy(Array1,4,Array1,6,2);

  


  Array_GetMaxIndex  
  

说明

  
  

取得数组的最大索引值。

  

数组的索引值从0开始,数组的元素个数为最大索引值加1

  
  

语法

  
  

Array_GetMaxIndex(数组名称)

  
  

参数

  
  

数组名称——要查询的数组名称

  
  

范例

  
  

Array1的最大索引值存入变量Value1,若索引有10个元素,则Value1=9:

  

Value1=Array_GetMaxIndex(Array1);

  


  Array_GetType  
  

说明

  
  

取得数组的类型。

  
  

语法

  
  

Array_GetType(数组名称)

  
  

参数

  
  

数组名称——要查询的数组名称

  
  

返回值

  
  

2——布林型数组

  

3——字符串型数组

  

7——数值型数组

  
  

范例

  
  

查询Array1的类型,并将结果存入变量Value1

  

Array: Array1[10](false);

  

Value1=Array_GetType(Array1);

  

Value1=2

  

Array: Array1[10](“”);

  

Value1=Array_GetType(Array1)

  

Value1=3

  

Array: Array1[10](0);

  

Value1=Array_GetType(Array1)

  

Value1=7

  


  Array_SetMaxIndex  
  

说明

  
  

重设定义为动态数组的大小;返回true代表重设成功。

  

数值可以重设为更大或更小;当数组变大时,增加的元素会设定成定义数组时的预设值。

  
  

语法

  
  

Array_SetMaxIndex(数组名称,最大索引值)

  
  

参数

  
  

数值名称——要设定的数组名称

  

最大索引值——数值表达式,数组要设定的最大索引值

  
  

返回值

  
  

True——设定成功

  

False——设定失败

  
  

范例

  
  

重新设定动态数组Array1的大小为10个元素(最大索引值为9),并把结果赋给变量ResizeReport:

  

Var: ResizeReport(false);

  

Array: Array1[](0);

  

ResizeReport = Array_SetMaxIndex(Array1,9);

  

如果设定成功,则ResizeReport返回True;否则为False

  


  Array_SetValRange  
  

说明

  
  

同时为数组指定范围的元素赋值

  
  

语法

  
  

Array_SetValRange(数组名称, 起始索引,结束索引,数值)

  
  

参数

  
  

数组名称——要赋值的数组名称

  

起始索引——数值表达式,指定数组赋值范围的开始索引值

  

结束索引——数值表达式,指定数组赋值范围的结束索引值

  

数值——数值表达式、字符串表达式或布林表达式,数组元素要设定的值。数值的类型要和数组定义类型一致。

  
  

范例

  
  

重新赋值Array1索引4至索引6的元素:

  

Array_SetValRange(Array1,4,6,0);

  

若数组为{1,2,3,4,5,6,7,8},则赋值后数组为{1,2,3,4,0,0,0,8}

  

Array_SetValRange(Array1,4,6,True);

  

若数组为{false, false, false, false, false, false, true,  false},则赋值后数组为{false, false, false, false, true, true,  true, false}

  

Array_SetValRange(Array1,4,6,”a”);

  

若数组为{a,b,c,d,e,f,g,h},则赋值后数组为{a,b,c,d,a,a,a,h}

  


  Array_Sort  
  

说明

  
  

重新排序数组中的指定范围数值。

  

若为数值数组,依数值大小排序。

  

若为布林数组,依true=1false=0的大小排序。

  

若为字符串数组,依字符串的ASCII值大小排序。

  
  

语法

  
  

Array_Sort(数组名称, 起始索引, 结束索引, 排序方式)

  
  

参数

  
  

数组名称——要排序的数组名称

  

起始索引——数值表达式,指定数组排序范围的开始索引值

  

结束索引——数值表达式,指定数组排序范围的结束索引值

  

排序方式——布林表达式,指定数组的排序方式,True为递增,False为递减

  
  

范例

  
  

重新排序Array1索引4至索引6的元素:

  

Array_Sort(Array1,4,6,false)

  

若数组为{1,2,3,4,5,6,7,8},则赋值后数组为{1,2,3,4,7,6,5,8}

  

若数组为{false, false, false, false, false, false, true, false},则赋值后数组为{false, false, false, false, true,  false, false, false}

  

若数组为{a,b,c,d,e,f,g,h},则赋值后数组为{a,b,c,d,g,f,e,h}

  


  Array_Sum  
  

说明

  
  

返回数值数组中指定范围的数值总和。

  
  

语法

  
  

Array_Sum(数组名称,起始索引,结束索引)

  
  

参数

  
  

数组名称——要加总的数组名称

  

起始索引——数值表达式,指定数组加总范围的开始索引值

  

结束索引——数值表达式,指定数组加总范围的结束索引值

  
  

范例

  
  

加总Array1索引4至索引6的元素,并将结果存入变数Value1:

  

Value1=Array_Sum(Array1,4,6);

  

若数组为{1,2,3,4,5,6,7,8},则Value1=18

  


  Fill_Array  
  

说明

  
  

将数组中的元素设定成指定的值。

  
  

语法

  
  

Fill_Array(数组名称,数值)

  
  

参数

  
  

数组名称——要设定值的数组名称

  

数值——数值表达式、字符串表达式或布林表达式,要指派给数组元素的值。数值的类型要和数组定义类型一致。

  
  

范例

  
  

Array1中的每个元素设定为True

  

Array: Array1[10](False);

  

Fill_Array(Array1,True);

  

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表