设为首页收藏本站

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

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

Rank: 8Rank: 8

精华
2
UID
2
积分
3308
帖子
342
主题
6
阅读权限
200
注册时间
2007-7-20
最后登录
2013-5-25
跳转到指定楼层
1#
发表于 2008-5-24 13:52:23 |只看该作者 |正序浏览
夹板在实盘中是一个很常见的运用,用于吃住震荡行情。它有个上轨和一个下轨,行情突破上轨就做空;突破下轨就做多,在上下轨之间来回吃。如图:


代码如下:

  1. /* *******************************************************************************************
  2. 1、行情从UpperLine和LowerLine之间开始进入
  3. 2、大于等于UpperLine开空仓,小于等于LowerLine开多仓
  4. 3、从开仓点继续偏离StopInterval止损(意味着最多亏StopInterval)
  5. 4、止损一次之后不再开仓
  6. 5、下午14:55收盘前平仓
  7. 6、运用在TICK图上
  8. ******************************************************************************************** */
  9. Params
  10.        Numeric   upperLine(100);
  11.        Numeric   lowerLine(100);
  12.        Numeric   StopInterval(150);

  13.        Numeric    firstLots(4);    // 手数(仅为正数)
  14.        Numeric    today(26);     // 日期(5月22日,则填入22)

  15. Vars
  16.        Numeric   tem;

  17.        Numeric   needPosition;   // 当前需要建立的头寸(正数为多头,负数为空头,零为全部平光)
  18.        Numeric   needPrice;    // 建立头寸时下单的价格
  19.        NumericSeries  wantStopLong;   // 多头止损的位置
  20.        NumericSeries  wantStopShort;   // 空头止损的位置

  21. Begin
  22.        if(currentBar == 0)
  23.        {
  24.             // 初始化序列变量
  25.             wantStopLong = -1;
  26.             wantStopShort = -1;
  27.        }Else
  28.        {
  29.             wantStopLong = wantStopLong[1];  
  30.             wantStopShort = wantStopShort[1];  
  31.        }
  32.        if(day != today)
  33.        {
  34.             // 过滤非指定日期的BAR
  35.             return ;
  36.        }

  37.        // 计算多、空头止损的位置
  38.        wantStopLong = lowerLine - stopInterval;  
  39.        wantStopShort = upperLine + stopInterval;


  40.        // 把计算好的值输出来看看(这是调试的重要技巧!!!!!)
  41.        Commentary("wantStopLong:"+Text(wantStopLong));
  42.        Commentary("wantStopShort:"+Text(wantStopShort));
  43.        tem = 0;
  44.        if(NumLosTrades == 0) // 当日从来没有止损过,开始准备计算。开平仓的方法都包装在OpenCoverFor2Lines函数中
  45.        {
  46.             // OpenCoverFor2Lines函数包装了开平仓算法,其用意如下:
  47.             // 1、返回值为零表示不做任何头寸操作,非零表示要操作
  48.             // 2、返回值为非零时,needPosition写入了当前要建立的头寸大小和方向,needPrice写入了以什么价格去建立该头寸
  49.             tem = OpenCoverFor2Lines(MarketPosition(),firstLots,upperLine,lowerLine,wantStopShort,wantStopLong,needPosition,needPrice);
  50.        }

  51.        Commentary("needPosition:"+Text(needPosition));
  52.        Commentary("needPrice:"+Text(needPrice));

  53.        if(tem == 0)
  54.        {
  55.             // 不操作任何东西,返回!
  56.             return ;
  57.        }
  58.        if(MarketPosition == 0)
  59.        {
  60.             if(needPosition > 0)
  61.             {
  62.                  // 当前无仓,开始建立多头
  63.                  buy(abs(needPosition),needPrice);
  64.             }Else
  65.             {
  66.                  // 当前无仓,开始建立空头
  67.                  SellShort(abs(needPosition),needPrice);
  68.             }
  69.             return ;
  70.        }
  71.        if(MarketPosition > 0)
  72.        {
  73.             if(needPosition < 0)
  74.             {
  75.                  // 当前多头,要求反转为空头
  76.                  SellShort(abs(needPosition),needPrice);
  77.             }Else
  78.             {
  79.                  // 当前多头,要求平仓
  80.                  Sell(0,needPrice);
  81.             }
  82.         return ;
  83.        }
  84.        if(MarketPosition < 0)
  85.        {
  86.             if(needPosition > 0)
  87.             {
  88.                  // 当前空头,要求反转为多头
  89.                  buy(abs(needPosition),needPrice);
  90.             }Else
  91.             {
  92.                  // 当前空头,要求平仓
  93.                  BuyToCover(0,needPrice);
  94.             }
  95.        }
  96.        return 0;
  97. End

复制代码
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

精华
0
UID
1140545
积分
4
帖子
4
主题
0
阅读权限
10
注册时间
2021-6-1
最后登录
2022-4-18
88#
发表于 2021-7-24 21:55:04 来自手机 |只看该作者
很好

使用道具 举报

Rank: 1

精华
0
UID
235994
积分
15
帖子
11
主题
4
阅读权限
10
注册时间
2016-6-5
最后登录
2017-4-8
87#
发表于 2017-1-2 15:59:43 |只看该作者
你好,版主,我是个TB初学者,我现在需要你发的这个帖子的程序代码,但是我不会整合,可否把您发的三个程序整合起来,变成一个完整的直接使用的新建公式发我一下,万分感谢!417846491@qq.com

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
121070
积分
133
帖子
88
主题
35
阅读权限
40
注册时间
2013-7-8
最后登录
2023-8-18
86#
发表于 2016-11-17 18:16:06 |只看该作者
个人认为,这可以作为一个通用的交易策略的框架,策略本身,作者没有透露

使用道具 举报

Rank: 1

精华
0
UID
242476
积分
4
帖子
2
主题
0
阅读权限
10
注册时间
2016-10-31
最后登录
2023-7-13
85#
发表于 2016-11-6 07:41:15 来自手机 |只看该作者
看看,学习下

使用道具 举报

Rank: 1

精华
0
UID
164221
积分
1
帖子
1
主题
0
阅读权限
10
注册时间
2013-1-11
最后登录
2016-7-29
84#
发表于 2016-7-26 15:05:42 |只看该作者
编译通不过,“策略函数只能是基本类型”

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
222769
积分
175
帖子
104
主题
41
阅读权限
40
注册时间
2015-11-7
最后登录
2021-2-26
83#
发表于 2016-4-4 14:28:54 |只看该作者
TB客服,能帮忙把这个整成在新版本里面可以用的吗,谢谢

使用道具 举报

Rank: 1

精华
0
UID
208555
积分
1
帖子
1
主题
0
阅读权限
10
注册时间
2015-5-7
最后登录
2020-12-14
82#
发表于 2015-12-22 14:06:39 |只看该作者
我看 OpenCover2lines函数里, 和程序主体里, 都有关于多头空头反转的功能?
为什么这么重复安排呢

使用道具 举报

Rank: 1

精华
0
UID
110202
积分
48
帖子
18
主题
3
阅读权限
10
注册时间
2012-4-26
最后登录
2013-2-28
81#
发表于 2013-2-19 21:21:29 |只看该作者



return 0;这个通不过,什么原因?
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 1

精华
0
UID
114300
积分
3
帖子
2
主题
0
阅读权限
10
注册时间
2012-12-20
最后登录
2013-4-3
80#
发表于 2013-2-18 12:43:05 |只看该作者
这个公式用新版本已经不能编译了,楼主能不能修改一下~~~~~~~~

使用道具 举报

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

bottom

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

GMT+8, 2024-5-4 16:09

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部