开拓者期货期权程序化系统交易论坛

标题: TB交易测试买卖点的问题 [打印本页]

作者: greentree7073    时间: 2012-6-20 22:46:51     标题: TB交易测试买卖点的问题

本帖最后由 greentree7073 于 2012-6-20 22:55 编辑

一个简单的双均线交叉买卖策略,如下:
Params
Numeric Length1(5);
Numeric Length2(10);
Vars
Numeric short1;
Numeric long1;
Bool Condition1;
Bool Condition2;
Begin
PlotNumeric("MA1",AverageFC(Close,Length1));
PlotNumeric("MA2",AverageFC(Close,Length2));
short1=AverageFC(Close,Length1);
long1=AverageFC(Close,Length2);
Condition1 = CrossOver(short1,long1) ;
Condition2 = CrossOver(long1,short1) ;
if (Condition1)
{
  Buy(1,Open);
}
if (Condition2)
{
  SellShort(1,Open);
}
End
发现优化后的参数拿到文华去测试结果完全不一样,仔细看过交易记录,发现TB测试运算的开仓点和平仓点有问题:比如以上代码是5天均线上穿10天线买入,看交易记录上面的买入点在上穿那根K线开盘处,但实际上没有收盘并不知道5天线是否最终会上穿10天线,如果真的上穿那当天收盘价格已经高于开盘价格(测试中交易记录的买入点在开盘点优势比收盘买大很多,文华的就是在收盘价格+滑点买入),这样测算出的结果逻辑上有问题,实际是开盘就预先知道是否会上穿,不知道这个问题何解?我是新手,请大家帮助!
作者: greentree7073    时间: 2012-6-22 17:54:53

这个奇怪的论坛,简单的问题都无人答复,自己回答自己
问题出在
short1=AverageFC(Close,Length1);
long1=AverageFC(Close,Length2);
改成
short1=AverageFC(Close[1],Length1);
long1=AverageFC(Close[1],Length2);
就符合预想的方案
但Buy(1,Open);
  SellShort(1,Open);这两个语句又奇怪了,按帮助文件,这两个只能产生开仓动作,没有平仓,测试后看交易记录是有平仓的,又奇怪了!!



作者: walker2020    时间: 2012-6-27 01:15:18

平仓用 BuyToCover(); 和 Sell();




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2