- 精华
- 0
- 在线时间
- 19 小时
- UID
- 291989
- 积分
- 8
- 帖子
- 5
- 阅读权限
- 10
- 注册时间
- 2020-5-16
- 最后登录
- 2021-4-2
- 精华
- 0
- UID
- 291989
- 积分
- 8
- 帖子
- 5
- 主题
- 3
- 阅读权限
- 10
- 注册时间
- 2020-5-16
- 最后登录
- 2021-4-2
|
发表于 2020-5-29 18:44:22
|显示全部楼层
http://www.tb18.net/software/v5037.html?tab=array
案例四】交易标的的强弱排序策略
具体规则:选择三大商品交易所交易比较活跃的主力商品合约作为候选交易标的,以20根BAR的涨跌幅作为强弱比较的标准,再根据强弱排名制定交易策略。 代码如下(交易部分省略…):
Params
Numeric Length(20); // 多少根BAR的涨跌幅
Vars
NumericArray ChangeRate; // 保存涨跌幅的数组
NumericArray Rank; // 保存数据源的数组
Numeric i;
Numeric j;
Numeric temp;
Begin
// 计算图表所有品种Length根BAR以来的涨跌幅
For i = 0 to DataSourceSize - 1
{
// 涨跌幅数据保存到一个数组
ChangeRate = Round((Data.Close / Data.Close[Length] - 1)*100,2);
// 数据源编号保存到另一个数组
Rank = i;
}
// 冒泡排序(降序)
For i = 1 to DataSourceSize - 1
{
For j = 0 to DataSourceSize - 1 - i
{
If(ChangeRate[j] < ChangeRate[j+1])
{
// 涨跌幅数据交换顺序
temp = ChangeRate[j];
ChangeRate[j] = ChangeRate[j+1];
ChangeRate[j+1] = temp;
// 对应的数据源编号交换顺序
temp = Rank[j];
Rank[j] = Rank[j+1];
Rank[j+1] = temp;
}
}
}
// 显示排序后的排名
For i = 0 to DataSourceSize - 1
{
temp = Rank;
Commentary("【Rank"+Text(i+1)+"】: Data"+Text(temp)+" , "+Data[temp].Symbol+" , ChangeRate = "+Text(ChangeRate)+" %");
}
End
在图表中插入23个主力交易品种后运行结果如下:
|
|