设为首页收藏本站

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

一个简单交易系统的自动交易测试 [复制链接]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
跳转到指定楼层
1#
发表于 2007-7-21 20:13:59 |只看该作者 |倒序浏览
该交易系统很简单,主要是为了测试自动交易的真实效果。
基本交易规则如下:
开仓条件:
1、当前无持仓;
2、当前Bar的收盘价>上一个Bar收盘价,即开多仓,反之,则开空仓。

反转条件:
1、盈利达到设定的点数即平仓,并马上反转。

止损条件:
1、亏损大于设定的点数即平仓,止损平仓之后并马上反转。

平仓条件:
1、到收市前,即全部平仓。

本交易系统有三个参数,lots为交易数量,WinDots为获利的点数,LossDots为止损的点数。所谓1个点是指应用商品的最小变动单位,本次测试的ru0709最小变动单位为5。
本次测试所选取的参数为(1,5,3),根据公式里的写法,以买入举例:当价格>25(5*5)时即反转,考虑到最小变动为5,即卖出条件为价格等于买入价格+30。条件建仓时,选择了延迟1个Tick发送,因此会到下一个Tick才以上一Tick的Close价发送委托,如Close价和开盘价不相同,以开盘价发送。当价格<=15时,即止损(即时发送,无延迟),并反转建仓。

  1. Params
  2.         Numeric lots(1);
  3.         Numeric WinDots(5);
  4.         Numeric LossDots(3);
  5. Vars
  6.         Numeric MinMovePrice;
  7.         Numeric preMP;
  8.         Numeric curMP;
  9. Begin
  10.         MinMovePrice = MinMove * PriceScale;
  11.         preMP = MarketPosition;
  12.         If(Time > 0.145930 && Time < 0.150030 ) // 收盘平仓
  13.         {
  14.                 If(preMP == 1)
  15.                 {
  16.                         Sell;
  17.                         return;
  18.                 }else if(preMP == -1)
  19.                 {
  20.                         BuyToCover;
  21.                         return;
  22.                 }
  23.                   return;
  24.         }       
  25.        
  26.         If(preMP == 0)
  27.         {
  28.                 If(Close > Close[1])
  29.                 {
  30.                         Buy(lots,high,true);
  31.                 }Else If(Close < Close[1])
  32.                 {
  33.                         SellShort(lots,low,true);
  34.                 }
  35.         }Else If(preMP == 1) // long
  36.         {
  37.                 If (Close > AvgEntryPrice() + MinMovePrice *WinDots ) // 获利反转
  38.                 {
  39.                         SellShort(lots,low,true);
  40.                 }
  41.         }else If(preMP == -1) // short
  42.         {
  43.                 If (Close < AvgEntryPrice() - MinMovePrice *WinDots ) // 获利反转
  44.                 {
  45.                         Buy(lots,high,true);
  46.                 }
  47.         }
  48.        
  49.         SetStopLoss(1, ContractUnit *BigPointValue *LossDots*MinMovePrice, true); // 止损平仓
  50.         CurMP = MarketPosition;
  51.         If (preMP == 1 && curMP == 0) // 止损之后反转,多反空
  52.         {
  53.                 SellShort(lots,low);
  54.         }else if(preMP==-1 && curMP==0) // 止损之后反转,空反多
  55.         {
  56.                 Buy(lots,high);       
  57.         }
  58. End
复制代码

[ 本帖最后由 nopain 于 2007-10-18 20:28 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

中级操盘手

Auto Trading Learner

Rank: 9Rank: 9Rank: 9

精华
1
UID
7
积分
15417
帖子
216
主题
26
阅读权限
150
注册时间
2007-7-21
最后登录
2007-11-22
2#
发表于 2007-7-21 20:32:12 |只看该作者
好。

TBL中{ and  } 这两个玩意没有就好了。

使用道具 举报

Rank: 8Rank: 8

精华
2
UID
2
积分
3308
帖子
342
主题
6
阅读权限
200
注册时间
2007-7-20
最后登录
2013-5-25
3#
发表于 2007-7-21 23:34:11 |只看该作者
原帖由 ATL 于 2007-7-21 20:32 发表
好。

TBL中{ and  } 这两个玩意没有就好了。


没有{},你就写不出复合语句;没有复合语句,你就无法实现大型、复杂的策略了。

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
4#
发表于 2007-7-30 17:09:50 |只看该作者
上面的例子中:
preMP = MarketPosition;

CurMP = MarketPosition;

这两个变量怎么定义同样的内容 ?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2007-7-30 18:14:16 |只看该作者
原帖由 大一 于 2007-7-30 17:09 发表
上面的例子中:
preMP = MarketPosition;

CurMP = MarketPosition;

这两个变量怎么定义同样的内容 ?


一个是执行交易操作前的持仓状态,一个是执行交易后。
就相当于,一个是早上开盘前的持仓状态,一个是收盘后的。。。

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
6#
发表于 2007-7-30 20:31:11 |只看该作者
能否讲解一下下面函数的含义 ?

假设以橡胶为例子:

MinMove   当前公式应用商品的最小变动量  (这个是不是 5  ?)
PriceScale  当前公式应用商品的计数单位    (这个不知道是什么意思)
ContractUnit   当前公式应用商品的每张合约包含的基本单位数量  (这个是不是也是5?)
BigPointValue  当前公式应用商品数据的一个整数点的价值          (这个是5还是25 ?)

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
7#
发表于 2007-7-30 21:06:12 |只看该作者
原帖由 大一 于 2007-7-30 20:31 发表
能否讲解一下下面函数的含义 ?

假设以橡胶为例子:

MinMove   当前公式应用商品的最小变动量  (这个是不是 5  ?)
PriceScale  当前公式应用商品的计数单位    (这个不知道是什么意思)
ContractUnit   当前公式应用商品的每 ...


MinMove = 5;             橡胶最小变动值为5个整数点。
PriceScale = 1;           橡胶的计数单位为1,没有小数,沪深300股指期货的PriceScale为0.01。
ContractUnit = 5;       橡胶的合约单位为5,即5吨每手,沪深300股指期货的ContractUnit为1;
BigPointValue = 1;      橡胶的每点价值为1,即每个整数点价值1元。沪深300股指期货的BigPointValue 为300;

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
8#
发表于 2007-7-30 22:27:01 |只看该作者
非常感谢,你解释的非常清楚!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
97
积分
165
帖子
52
主题
9
阅读权限
40
注册时间
2007-8-12
最后登录
2009-3-21
9#
发表于 2007-8-12 11:34:22 |只看该作者
有意思,我的模拟账户还不能用啊。真想试一下。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
97
积分
165
帖子
52
主题
9
阅读权限
40
注册时间
2007-8-12
最后登录
2009-3-21
10#
发表于 2007-8-12 14:53:23 |只看该作者
我把上面的源码复制到指标里了。又点了插入交易指令,是不是明天开盘,就能够自动交易了。还有能不能对以前的数据作一个收益测试,怎么操作阿。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-19 20:52

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部