系统交易论坛 - 开拓者期货自动交易平台 » TradeBlazer公式 » 一个简单交易系统的自动交易测试


2007-7-21 20:13 nopain
一个简单交易系统的自动交易测试

该交易系统很简单,主要是为了测试自动交易的真实效果。
基本交易规则如下:
[b]开仓条件:[/b]
1、当前无持仓;
2、当前Bar的收盘价>上一个Bar收盘价,即开多仓,反之,则开空仓。

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

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

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

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

[code]
Params
        Numeric lots(1);
        Numeric WinDots(5);
        Numeric LossDots(3);
Vars
        Numeric MinMovePrice;
        Numeric preMP;
        Numeric curMP;
Begin
        MinMovePrice = MinMove * PriceScale;
        preMP = MarketPosition;
        If(Time > 0.145930 && Time < 0.150030 ) // 收盘平仓
        {
                If(preMP == 1)
                {
                        Sell;
                        return;
                }else if(preMP == -1)
                {
                        BuyToCover;
                        return;
                }
                  return;
        }       
       
        If(preMP == 0)
        {
                If(Close > Close[1])
                {
                        Buy(lots,high,true);
                }Else If(Close < Close[1])
                {
                        SellShort(lots,low,true);
                }
        }Else If(preMP == 1) // long
        {
                If (Close > AvgEntryPrice() + MinMovePrice *WinDots ) // 获利反转
                {
                        SellShort(lots,low,true);
                }
        }else If(preMP == -1) // short
        {
                If (Close < AvgEntryPrice() - MinMovePrice *WinDots ) // 获利反转
                {
                        Buy(lots,high,true);
                }
        }
       
        SetStopLoss(1, ContractUnit *BigPointValue *LossDots*MinMovePrice, true); // 止损平仓
        CurMP = MarketPosition;
        If (preMP == 1 && curMP == 0) // 止损之后反转,多反空
        {
                SellShort(lots,low);
        }else if(preMP==-1 && curMP==0) // 止损之后反转,空反多
        {
                Buy(lots,high);       
        }
End
[/code]

[[i] 本帖最后由 nopain 于 2007-10-18 20:28 编辑 [/i]]

2007-7-21 20:32 ATL
好。

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

2007-7-21 23:34 skywalker
[quote]原帖由 [i]ATL[/i] 于 2007-7-21 20:32 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=73&ptid=29][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
好。

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

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

2007-7-30 17:09 大一
上面的例子中:
preMP = MarketPosition;

CurMP = MarketPosition;

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

2007-7-30 18:14 nopain
[quote]原帖由 [i]大一[/i] 于 2007-7-30 17:09 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=393&ptid=29][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
上面的例子中:
preMP = MarketPosition;

CurMP = MarketPosition;

这两个变量怎么定义同样的内容 ? [/quote]

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

2007-7-30 20:31 大一
能否讲解一下下面函数的含义 ?

假设以橡胶为例子:

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

2007-7-30 21:06 nopain
[quote]原帖由 [i]大一[/i] 于 2007-7-30 20:31 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=397&ptid=29][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
能否讲解一下下面函数的含义 ?

假设以橡胶为例子:

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

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

2007-7-30 22:27 大一
非常感谢,你解释的非常清楚!:handshake

2007-8-12 11:34 stevehans
有意思,我的模拟账户还不能用啊。真想试一下。

2007-8-12 14:53 stevehans
我把上面的源码复制到指标里了。又点了插入交易指令,是不是明天开盘,就能够自动交易了。还有能不能对以前的数据作一个收益测试,怎么操作阿。

2007-8-12 16:43 nopain
[quote]原帖由 [i]stevehans[/i] 于 2007-8-12 14:53 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=623&ptid=29][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
我把上面的源码复制到指标里了。又点了插入交易指令,是不是明天开盘,就能够自动交易了。还有能不能对以前的数据作一个收益测试,怎么操作阿。 ... [/quote]

您应该新建一个交易指令,把上面的代码copy过去,编译保存,然后插入图表中,并在交易指令设置界面中选中模拟账户并启动自动交易。

关于测试交易指令,请查看帮助文件!

2007-8-24 20:14 zscad
斑竹期货高手

我下载交易软件,向你学习

2007-8-27 17:06 guidaon
MinMovePrice = MinMove * PriceScale;
        preMP = MarketPosition;
        If(Time > 0.145930 && Time < 0.150030 && preMP!=0) // 收盘平仓
        {
                If(preMP == 1)
                {
                        Sell;
                }else if(preMP == -1)
                {
                        BuyToCover;
                }
        }     


学习

2007-8-28 08:33 mht88
请教楼主,当交易数量改为10手的时候Numeric lots(10),相同测试期间,1手交易了39次,而10手却交易了500多次,不知是什么原因,请楼主指教,谢谢!

2007-8-28 14:37 nopain
[quote]原帖由 [i]mht88[/i] 于 2007-8-28 08:33 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=1525&ptid=29][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
请教楼主,当交易数量改为10手的时候Numeric lots(10),相同测试期间,1手交易了39次,而10手却交易了500多次,不知是什么原因,请楼主指教,谢谢! [/quote]

请问您说的交易39次和500次是测试报表里面还是真实交易,能不能把其他设置信息(商品,周期,时间范围等)都列出来,方便进行测试及跟踪。

2007-8-28 16:08 mht88
只是测试报表里交易次数是不同的,用模拟帐户交易,不能自动成交,信号出现后总是提示"持仓不足,该交易操作被取消".
如果手动交易一次,有持仓了,下面的操作才会进行下去.

2007-8-28 16:12 mht88
[quote]原帖由 [i]nopain[/i] 于 2007-8-28 14:37 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=1533&ptid=29][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]


请问您说的交易39次和500次是测试报表里面还是真实交易,能不能把其他设置信息(商品,周期,时间范围等)都列出来,方便进行测试及跟踪。 [/quote]

我只设置了一个品种,ru0711,测试没有其他品种的成交,全是一个品种的,但为什么一手和十手的交易次数却不一样.

2007-8-28 16:23 mht88
模拟账户是五十万的,所以我想一次做十手,就改成Numeric lots(10),没想到出现这样的情况.

2007-8-28 16:36 mht88
楼主在"一个文华交易系统的移植例子"里的系统, 我试了一下,将交易数量改为十手,没出现问题.

2007-8-28 16:41 nopain
检查了一下,发现是SetStopLoss函数处理平仓的时候有个Bug!谢谢您的测试~:)
已经修改好了,您先暂时用着吧!等几天就升级了

页: [1] 2 3 4 5


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.