设为首页收藏本站

 找回密码
 注册
楼主: skywalker
打印 上一主题 下一主题

一个系统交易的实例:夹板 [复制链接]

Rank: 5Rank: 5

精华
0
UID
1057
积分
824
帖子
158
主题
8
阅读权限
60
注册时间
2008-1-11
最后登录
2021-10-24
9#
发表于 2008-5-24 19:06:33 |只看该作者
得认真学习了
系统交易学徒

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
938
积分
3765
帖子
295
主题
42
阅读权限
80
注册时间
2007-12-18
最后登录
2017-9-3
8#
发表于 2008-5-24 15:01:22 |只看该作者
这种结构值得借鉴,好。

使用道具 举报

Rank: 8Rank: 8

精华
2
UID
2
积分
3308
帖子
342
主题
6
阅读权限
200
注册时间
2007-7-20
最后登录
2013-5-25
7#
发表于 2008-5-24 14:22:44 |只看该作者
  1. if(currentBar == 0)
  2. {
  3.     // 初始化序列变量
  4.     wantStopLong = -1;
  5.     wantStopShort = -1;
  6. }Else
  7. {
  8.     wantStopLong = wantStopLong[1];  
  9.     wantStopShort = wantStopShort[1];  
  10. }
复制代码



上一段代码是使用序列变量时的常见用法,非常重要的用法。

[ 本帖最后由 skywalker 于 2008-5-24 14:25 编辑 ]

使用道具 举报

Rank: 8Rank: 8

精华
2
UID
2
积分
3308
帖子
342
主题
6
阅读权限
200
注册时间
2007-7-20
最后登录
2013-5-25
6#
发表于 2008-5-24 14:18:59 |只看该作者
初学者一定要认真体会OpenCoverFor2Lines函数,为什么需要把开平仓算法包装到函数里。夹板是个半自动的系统,因为上下轨都需要作为参数输入。当你要转换成全自动系统的时候,那么上下轨就需要根据行情动态计算出来。把计算出来的值作为参数输入OpenCoverFor2Lines函数即可,如此程序就可以方便地拓展而不需要大改动。甚至你还可以再做一个函数用于动态计算上下轨。

[ 本帖最后由 skywalker 于 2008-5-24 15:15 编辑 ]

使用道具 举报

Rank: 8Rank: 8

精华
2
UID
2
积分
3308
帖子
342
主题
6
阅读权限
200
注册时间
2007-7-20
最后登录
2013-5-25
5#
发表于 2008-5-24 14:09:23 |只看该作者

夹板的公式导入文件

夹板的公式导入文件:
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 8Rank: 8

精华
2
UID
2
积分
3308
帖子
342
主题
6
阅读权限
200
注册时间
2007-7-20
最后登录
2013-5-25
4#
发表于 2008-5-24 14:02:59 |只看该作者

OpenCoverFor2Lines函数代码

  1. // 返回值: 1:有所动作,0:没有动作
  2. // 返回值为非零时,把当前要建立的头寸大小和方向写入needPosition,把以什么价格去建立该头寸写入needPrice
  3. // 返回值: 1:有所动作,0:没有动作
  4. // 返回值为非零时,把当前要建立的头寸大小和方向写入needPosition,把以什么价格去建立该头寸写入needPrice

  5. Params
  6.         Numeric         currentPosition(0);                // 当前头寸,可正可负
  7.         Numeric        firstLots(0);

  8.         Numeric         wantShort(120);                // 开空仓位置
  9.         Numeric         wantLong(8);                         // 开多仓位置
  10.        
  11.         Numeric        wantStopShort(0);                // 空头止损的位置
  12.         Numeric        wantStopLong(0);                // 多头止损的位置

  13.        
  14.         // 注意:以下两个都是引用变量!!!!
  15.         NumericRef        needPosition;    // 经过计算后的当前头寸,正数:建立多仓,负数:建立空仓,零:平光所有头寸
  16.         NumericRef needPrice;              // 建立needPosition时的价格
  17.        
  18. Vars
  19.         Numeric                         tem;
  20.        
  21. Begin

  22.         // 14:55:00平掉当日所有头寸
  23.         if(time >= 0.1455 && currentPosition != 0)
  24.         {
  25.                 needPosition = 0;
  26.                 needPrice = close ;
  27.                 return 1;
  28.         }
  29.         if(currentPosition == 0)
  30.         {
  31.                 // 无仓,准备侍机开仓
  32.                 if(close <= wantLong)
  33.                 {
  34.                         // 多头
  35.                         needPosition = firstLots;
  36.                         needPrice = wantLong;
  37.                         return 1;
  38.                 }
  39.                 if(close >= wantShort)
  40.                 {
  41.                         // 空头
  42.                         needPosition = -1 * firstLots;
  43.                         needPrice = wantShort;
  44.                         return 1;
  45.                
  46.                 }
  47.                 return 0;
  48.         }
  49.        
  50.         if(currentPosition > 0)
  51.         {
  52.                 // 持多仓,准备止损或反转
  53.                 if(close >= wantShort)
  54.                 {
  55.                         // 反转
  56.                         needPosition = -1 * firstLots;
  57.                         needPrice = wantShort;
  58.                         return 1;
  59.                 }
  60.                
  61.                 if(close <= wantStopLong)
  62.                 {
  63.                         // 止损
  64.                         needPosition = 0;
  65.                         needPrice = wantStopLong;
  66.                         return 1;
  67.                        
  68.                 }
  69.                 return 0;
  70.         }
  71.         if(currentPosition < 0)
  72.         {
  73.                 // 持空仓,准备止损或反转
  74.                 if(close <= wantLong)
  75.                 {
  76.                         // 反转
  77.                         needPosition = firstLots;
  78.                         needPrice = wantLong;
  79.                         return 1;
  80.                 }
  81.                
  82.                 if(close >= wantStopShort)
  83.                 {
  84.                         // 止损
  85.                         needPosition = 0;
  86.                         needPrice = wantStopShort;
  87.                         return 1;
  88.                        
  89.                 }
  90.                 return 0;
  91.         }
  92.           return 0;
  93. End
复制代码
[ 本帖最后由 skywalker 于 2008-5-24 14:05 编辑 ]

使用道具 举报

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

bottom

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

GMT+8, 2024-5-23 07:04

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部