设为首页收藏本站

 找回密码
 注册
查看: 6919|回复: 10
打印 上一主题 下一主题

请教nopain等各位高手,自动筛选主力合约的设想 [复制链接]

Rank: 4

精华
1
UID
714
积分
581
帖子
126
主题
23
阅读权限
50
注册时间
2007-11-10
最后登录
2015-12-1
跳转到指定楼层
1#
发表于 2008-8-11 16:57:17 |只看该作者 |倒序浏览
现在已知在叠加商品的时候可以访问Data0-Data49个数据源的Bar数据,那么有没有办法来实现叠加这些品种的成交量或者持仓量呢?如果可以这样的话,是不是就可以自动筛选出不同时期的主力合约了?


在nopain的鼎力支持下,顺利实现
唉,感慨啊,大学应该多修一个计算机学位就好了……

下面是效果图,准备还要继续加入一些修饰,以方便找出何时换的月,方便测试时的数据截取工作:)

完整指标如下:
  1. Vars
  2.     Numeric Major(0);
  3.     Numeric CON0;
  4.     Numeric CON1;
  5.     Numeric CON2;
  6.     Numeric CON3;
  7.     Numeric CON4;
  8.     Numeric CON5;
  9.     Numeric CON6;
  10.     Numeric CON7;
  11.     Numeric CON8;
  12.     Numeric CON9;
  13.     Numeric CON10;
  14.     Numeric MyOpen;
  15.     Numeric MyHigh;
  16.     Numeric MyLow;
  17.     Numeric MyClose;
  18. Begin
  19.     CON0=AverageFC(DATA0.OPENINT(),5);
  20.     CON1=AVERAGEFC(DATA1.OPENINT(),5);
  21.     CON2=AVERAGEFC(DATA2.OPENINT(),5);
  22.     CON3=AVERAGEFC(DATA3.OPENINT(),5);
  23.     CON4=AVERAGEFC(DATA4.OPENINT(),5);
  24.     CON5=AVERAGEFC(DATA5.OPENINT(),5);
  25.     CON6=AVERAGEFC(DATA6.OPENINT(),5);
  26.     CON7=AVERAGEFC(DATA7.OPENINT(),5);
  27.     CON8=AVERAGEFC(DATA8.OPENINT(),5);
  28.     CON9=AVERAGEFC(DATA9.OPENINT(),5);
  29.     CON10=AVERAGEFC(DATA10.OPENINT(),5);

  30.     If(Con0 > Major)
  31.     {
  32.         Major = Con0;
  33.         MyOpen = Data0.Open;
  34.         MyHigh = Data0.High;
  35.         MyLow = Data0.Low;
  36.         MyClose = Data0.Close;
  37.     }

  38.     If(Con1 > Major)
  39.     {
  40.         Major = Con1;
  41.         MyOpen = Data1.Open;
  42.         MyHigh = Data1.High;
  43.         MyLow = Data1.Low;
  44.         MyClose = Data1.Close;
  45.     }

  46.     If(Con2 > Major)
  47.     {
  48.         Major = Con2;
  49.         MyOpen = Data2.Open;
  50.         MyHigh = Data2.High;
  51.         MyLow = Data2.Low;
  52.         MyClose = Data2.Close;
  53.     }

  54.     If(Con3 > Major)
  55.     {
  56.         Major = Con3;
  57.         MyOpen = Data3.Open;
  58.         MyHigh = Data3.High;
  59.         MyLow = Data3.Low;
  60.         MyClose = Data3.Close;
  61.     }

  62.     If(Con4 > Major)
  63.     {
  64.         Major = Con4;
  65.         MyOpen = Data4.Open;
  66.         MyHigh = Data4.High;
  67.         MyLow = Data4.Low;
  68.         MyClose = Data4.Close;
  69.     }

  70.     If(Con5 > Major)
  71.     {
  72.         Major = Con5;
  73.         MyOpen = Data5.Open;
  74.         MyHigh = Data5.High;
  75.         MyLow = Data5.Low;
  76.         MyClose = Data5.Close;
  77.     }

  78.     If(Con6 > Major)
  79.     {
  80.         Major = Con6;
  81.         MyOpen = Data6.Open;
  82.         MyHigh = Data6.High;
  83.         MyLow = Data6.Low;
  84.         MyClose = Data6.Close;
  85.     }

  86.     If(Con7 > Major)
  87.     {
  88.         Major = Con7;
  89.         MyOpen = Data7.Open;
  90.         MyHigh = Data7.High;
  91.         MyLow = Data7.Low;
  92.         MyClose = Data7.Close;
  93.     }

  94.     If(Con8 > Major)
  95.     {
  96.         Major = Con8;
  97.         MyOpen = Data8.Open;
  98.         MyHigh = Data8.High;
  99.         MyLow = Data8.Low;
  100.         MyClose = Data8.Close;
  101.     }

  102.     If(Con9 > Major)
  103.     {
  104.         Major = Con9;
  105.         MyOpen = Data9.Open;
  106.         MyHigh = Data9.High;
  107.         MyLow = Data9.Low;
  108.         MyClose = Data9.Close;
  109.     }

  110.     If(Con10 > Major)
  111.     {
  112.         Major = Con10;
  113.         MyOpen = Data10.Open;
  114.         MyHigh = Data10.High;
  115.         MyLow = Data10.Low;
  116.         MyClose = Data10.Close;
  117.     }

  118.     PlotNumeric("High",MyHigh);
  119.     PlotNumeric("Open",MyOpen);
  120.     PlotNumeric("Low",MyLow);
  121.     PlotNumeric("Close",MyClose);
  122. End
复制代码

[ 本帖最后由 hedgehog 于 2008-8-22 15:10 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
森林中最不缺的是猎物,对猎人来说最珍贵的是子弹
[fly]人生没有彩排,每一场都是现场直播[/fly]

Rank: 4

精华
0
UID
1950
积分
251
帖子
45
主题
14
阅读权限
50
注册时间
2008-7-21
最后登录
2008-9-4
2#
发表于 2008-8-13 15:06:38 |只看该作者
如果一定要这样用的话,可以用持仓量和成交量来解决如果更细致点可以再计算一下最后交易时间什么的。。。

交易开拓者交流
QQ-1群:38529330(已满)
QQ-2群:24771838
让我们一起学习,一起提高,一起赚钱吧。。。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2008-8-13 16:26:21 |只看该作者
当然可以这么做,但是筛选主力合约需要这么复杂的操作么?

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
404
积分
1434
帖子
236
主题
74
阅读权限
60
注册时间
2007-9-23
最后登录
2014-7-25
4#
发表于 2008-8-14 10:40:13 |只看该作者
最简单就是TB公司手工给主力合约做个标记,然后用户只要读取即可

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
644
积分
3332
帖子
284
主题
28
阅读权限
80
注册时间
2007-10-30
最后登录
2021-10-16
5#
发表于 2008-8-14 20:13:26 |只看该作者
不错      

使用道具 举报

Rank: 4

精华
1
UID
714
积分
581
帖子
126
主题
23
阅读权限
50
注册时间
2007-11-10
最后登录
2015-12-1
6#
发表于 2008-8-20 15:48:11 |只看该作者
原帖由 nopain 于 2008-8-13 16:26 发表
当然可以这么做,但是筛选主力合约需要这么复杂的操作么?


那么请问,怎么样来通过TB找出历史阶段的主力合约?
森林中最不缺的是猎物,对猎人来说最珍贵的是子弹
[fly]人生没有彩排,每一场都是现场直播[/fly]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
7#
发表于 2008-8-20 15:55:05 |只看该作者
仔细看了您的需求,看来用一个指标来实现是可行的。
指标比较各个合约的成交量和持仓量,选取当时的主力合约的高开低收等数据输出。

使用道具 举报

Rank: 4

精华
1
UID
714
积分
581
帖子
126
主题
23
阅读权限
50
注册时间
2007-11-10
最后登录
2015-12-1
8#
发表于 2008-8-21 17:03:10 |只看该作者
原帖由 nopain 于 2008-8-20 15:55 发表
仔细看了您的需求,看来用一个指标来实现是可行的。
指标比较各个合约的成交量和持仓量,选取当时的主力合约的高开低收等数据输出。


试了一下,没有头绪,请问nopain具体该如何写?
我的初步设想是比较持仓量的5天平均,最大的那个作为主力合约
下面是准备用在RU上的面的指标:但是没有编译通过:(
  1. Vars
  2.         Numeric        MAJOR(0);
  3.         Numeric         N(0);
  4.         NumericSeries CON0;
  5.         NumericSeries CON1;
  6.         NumericSeries CON2;
  7.         NumericSeries CON3;
  8.         NumericSeries CON4;
  9.         NumericSeries CON5;
  10.         NumericSeries CON6;
  11.         NumericSeries CON7;
  12.         NumericSeries CON8;
  13.         NumericSeries CON9;
  14.         NumericSeries CON10;
  15. BEGIN
  16.          CON0=AverageFC(DATA0.OPENINT(),5);
  17.          CON1=AVERAGEFC(DATA1.OPENINT(),5);
  18.          CON2=AVERAGEFC(DATA2.OPENINT(),5);
  19.          CON3=AVERAGEFC(DATA3.OPENINT(),5);
  20.          CON4=AVERAGEFC(DATA4.OPENINT(),5);
  21.          CON5=AVERAGEFC(DATA5.OPENINT(),5);
  22.          CON6=AVERAGEFC(DATA6.OPENINT(),5);
  23.          CON7=AVERAGEFC(DATA7.OPENINT(),5);
  24.          CON8=AVERAGEFC(DATA8.OPENINT(),5);
  25.          CON9=AVERAGEFC(DATA9.OPENINT(),5);
  26.          CON10=AVERAGEFC(DATA10.OPENINT(),5);
  27.         FOR N=0 TO 10 -1;
  28.         MAJOR=MAX("CON"+"N","CON"+"N+1");
  29.         RETURN;
  30.        
  31. IF (MAJOR==CON0)
  32. {
  33.         PLOTNUMERIC("High",DATA0.High());
  34.         PlotNumeric("Open",DATA0.Open());
  35.         PlotNumeric("Low",DATA0.Low());
  36.         PlotNumeric("Close",DATA0.Close());
  37. }ELSE IF (MAJOR==CON1)
  38. {        PLOTNUMERIC("High",DATA1.High());
  39.         PlotNumeric("Open",DATA1.Open());
  40.         PlotNumeric("Low",DATA1.Low());
  41.         PlotNumeric("Close",DATA1.Close());
  42. }
  43. ELSE IF (MAJOR==CON2)
  44. {        PLOTNUMERIC("High",DATA2.High());
  45.         PlotNumeric("Open",DATA2.Open());
  46.         PlotNumeric("Low",DATA2.Low());
  47.         PlotNumeric("Close",DATA2.Close());
  48. }
  49. ELSE IF (MAJOR==CON3)
  50. {        PLOTNUMERIC("High",DATA3.High());
  51.         PlotNumeric("Open",DATA3.Open());
  52.         PlotNumeric("Low",DATA3.Low());
  53.         PlotNumeric("Close",DATA3.Close());
  54. }
  55. ELSE IF (MAJOR==CON4)
  56. {        PLOTNUMERIC("High",DATA4.High());
  57.         PlotNumeric("Open",DATA4.Open());
  58.         PlotNumeric("Low",DATA4.Low());
  59.         PlotNumeric("Close",DATA4.Close());
  60. }
  61. ELSE IF (MAJOR==CON5)
  62. {        PLOTNUMERIC("High",DATA5.High());
  63.         PlotNumeric("Open",DATA5.Open());
  64.         PlotNumeric("Low",DATA5.Low());
  65.         PlotNumeric("Close",DATA5.Close());
  66. }
  67. ELSE IF (MAJOR==CON6)
  68. {        PLOTNUMERIC("High",DATA6.High());
  69.         PlotNumeric("Open",DATA6.Open());
  70.         PlotNumeric("Low",DATA6.Low());
  71.         PlotNumeric("Close",DATA6.Close());
  72. }
  73. ELSE IF (MAJOR==CON7)
  74. {        PLOTNUMERIC("High",DATA7.High());
  75.         PlotNumeric("Open",DATA7.Open());
  76.         PlotNumeric("Low",DATA7.Low());
  77.         PlotNumeric("Close",DATA7.Close());
  78. }
  79. ELSE IF (MAJOR==CON8)
  80. {        PLOTNUMERIC("High",DATA8.High());
  81.         PlotNumeric("Open",DATA8.Open());
  82.         PlotNumeric("Low",DATA8.Low());
  83.         PlotNumeric("Close",DATA8.Close());
  84. }
  85. ELSE IF (MAJOR==CON9)
  86. {        PLOTNUMERIC("High",DATA9.High());
  87.         PlotNumeric("Open",DATA9.Open());
  88.         PlotNumeric("Low",DATA9.Low());
  89.         PlotNumeric("Close",DATA9.Close());
  90. }
  91. ELSE IF (MAJOR==CON10)
  92. {        PLOTNUMERIC("High",DATA10.High());
  93.         PlotNumeric("Open",DATA10.Open());
  94.         PlotNumeric("Low",DATA10.Low());
  95.         PlotNumeric("Close",DATA10.Close());       
  96. }
  97. END
复制代码

主要是这里不大清楚怎么处理……
  1.         FOR N=0 TO 10 -1;
  2.         MAJOR=MAX("CON"+"N","CON"+"N+1");
  3.         RETURN;
复制代码
森林中最不缺的是猎物,对猎人来说最珍贵的是子弹
[fly]人生没有彩排,每一场都是现场直播[/fly]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2008-8-21 17:37:26 |只看该作者
循环语句用得不对,输出也有问题

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
10#
发表于 2008-8-21 17:38:12 |只看该作者
修改了一下,大致代码如下
  1. Vars
  2.     Numeric Major(0);
  3.     NumericSeries CON0;
  4.     NumericSeries CON1;
  5.     NumericSeries CON2;
  6.     NumericSeries CON3;
  7.     NumericSeries CON4;
  8.     NumericSeries CON5;
  9.     NumericSeries CON6;
  10.     NumericSeries CON7;
  11.     NumericSeries CON8;
  12.     NumericSeries CON9;
  13.     NumericSeries CON10;
  14.     Numeric MyOpen;
  15.     Numeric MyHigh;
  16.     Numeric MyLow;
  17.     Numeric MyClose;
  18. Begin
  19.     CON0=AverageFC(DATA0.OPENINT(),5);
  20.     CON1=AVERAGEFC(DATA1.OPENINT(),5);
  21.     CON2=AVERAGEFC(DATA2.OPENINT(),5);
  22.     CON3=AVERAGEFC(DATA3.OPENINT(),5);
  23.     CON4=AVERAGEFC(DATA4.OPENINT(),5);
  24.     CON5=AVERAGEFC(DATA5.OPENINT(),5);
  25.     CON6=AVERAGEFC(DATA6.OPENINT(),5);
  26.     CON7=AVERAGEFC(DATA7.OPENINT(),5);
  27.     CON8=AVERAGEFC(DATA8.OPENINT(),5);
  28.     CON9=AVERAGEFC(DATA9.OPENINT(),5);
  29.     CON10=AVERAGEFC(DATA10.OPENINT(),5);

  30.     If(Con0 > Major)
  31.     {
  32.         Major = Con0;
  33.         MyOpen = Data0.Open;
  34.         MyHigh = Data0.High;
  35.         MyLow = Data0.Low;
  36.         MyClose = Data0.Close;
  37.     }

  38.     If(Con1 > Major)
  39.     {
  40.         Major = Con1;
  41.         MyOpen = Data1.Open;
  42.         MyHigh = Data1.High;
  43.         MyLow = Data1.Low;
  44.         MyClose = Data1.Close;
  45.     }

  46.     // 以下类似
  47.     ....

  48.     PlotNumeric("High",MyHigh);
  49.     PlotNumeric("Open",MyOpen);
  50.     PlotNumeric("Low",MyLow);
  51.     PlotNumeric("Close",MyClose);
  52. End
复制代码

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 14:30

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部