|
目前易盛程序化中暂时没有给数值型数组元素进行自动排序的函数,自己写了一个用户函数sort函数,处理数值型数组的排序问题,支持正序排列和倒序排列。
//--------------------------------------------------------------
// 简称: sort
// 名称: 数组排序
// 类型: 用户函数
// 输出: Numeric
//--------------------------------------------------------------
Params
NumericArray arr; //原始数组
NumericArrayRef arrResult; //排序后数组
Integer order(0); //排序规则,0正序排列,1倒序排序
Vars
Integer i;
Integer j;
Integer temp;
Numeric Num;
Begin
For (i=ArrLength(arr)-1;i>0;i--)
{
for (j=0;j<i;j++)
{
if (arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
if (order==0)
arrResult=arr;
Else
arrResult=ArrRevers(arr);
Return 1;
End
---------------------------------------------------------------
代码中应用:
Params
//参数定义
GlobalVars
//全局变量定义
Vars
//局部变量定义
NumericArray Arr;
NumericArray arr1;
Begin
//策略执行区
arr=HisData(Enum_Data_Close,Enum_Period_Min5,"CF305",5); //取CF305 5分钟线5个周期数据,放到数组中arr中
sort(arr,arr1,1); //利用用户函数sort进行倒序排序,从高到低,将结果存入到数组arr1中 。
Print("五周期内收盘价最高:"+Text(arr1[0])+" 五周期内收盘价次高"+ Text(arr1[1])); //打印结果
End
以上代码抛砖引玉,可继续对算法进行优化和改善,提高排序效率。
|
|