历史回测不能下单 [开拓者 TB]
-
咨询内容:
本帖最后由 wblsjhmxuhongbo 于 2018-11-20 17:27 编辑
1分钟图上,根据信号下单和平仓。
为确保1个bar只执行1次。我将所有代码都放在如下的判断语句中:
If(T()<>GetGlobalVar(99))
{
SetGlobalVar(99,T());
代码根据信号下单:
if(v_orient==1)
{
Buy(1,0);
XHBLog("buy","",v_programName,Date(),Time());
}
Else if(v_orient==-1)
{
SellShort(1,0);
XHBLog("sell","",v_programName,Date(),Time());
}
Else if(v_orient==0)
{
Sell();
BuyToCover();
XHBLog("kill","",v_programName,Date(),Time());
}
日志显示几乎每分钟都有交易:
2018-11-20 09:01:00 TestOrder :sell
2018-11-20 09:02:00 TestOrder :sell
2018-11-20 09:03:00 TestOrder :sell
2018-11-20 09:04:00 TestOrder :sell
2018-11-20 09:05:00 TestOrder :sell
2018-11-20 09:06:00 TestOrder :sell
2018-11-20 09:07:00 TestOrder :sell
2018-11-20 09:08:00 TestOrder :sell
2018-11-20 09:09:00 TestOrder :sell
2018-11-20 09:10:00 TestOrder :sell
2018-11-20 09:11:00 TestOrder :sell
2018-11-20 09:12:00 TestOrder :sell
2018-11-20 09:13:00 TestOrder :sell
2018-11-20 09:14:00 TestOrder :sell
2018-11-20 09:15:00 TestOrder :sell
2018-11-20 09:16:00 TestOrder :sell
2018-11-20 09:17:00 TestOrder :sell
2018-11-20 09:18:00 TestOrder :sell
2018-11-20 09:19:00 TestOrder :sell
2018-11-20 09:20:00 TestOrder :sell
2018-11-20 09:21:00 TestOrder :sell
2018-11-20 09:22:00 TestOrder :sell
2018-11-20 09:23:00 TestOrder :sell
2018-11-20 09:24:00 TestOrder :sell
2018-11-20 09:25:00 TestOrder :sell
2018-11-20 09:26:00 TestOrder :sell
2018-11-20 09:27:00 TestOrder :sell
2018-11-20 09:28:00 TestOrder :sell
2018-11-20 09:29:00 TestOrder :sell
2018-11-20 09:30:00 TestOrder :sell
2018-11-20 09:31:00 TestOrder :sell
2018-11-20 09:32:00 TestOrder :sell
2018-11-20 09:33:00 TestOrder :sell
可是回测记录全天却只有4条:
# 公式应用 类型 商品 建仓时间 建仓价格 平仓时间 平仓价格 数量 交易成本
1 TestOrder 空头 m1903 2018/11/20 9:01 3055 2018/11/20 10:07 3064 1 6
2 TestOrder 多头 m1903 2018/11/20 10:07 3064 2018/11/20 10:08 3060 1 6
3 TestOrder 多头 m1903 2018/11/20 10:14 3060 2018/11/20 10:50 3070 1 6
4 TestOrder 空头 m1903 2018/11/20 10:50 3070 2018/11/20 14:59 3080 1 6
也就是说,其中大部分下单信号都没有执行。请高手指点,这到底是为什么?我理解历史回测不是应该都能成交吗?来源:CXH99.COM
-
TB技术人员:
本帖最后由 wblsjhmxuhongbo 于 2018-11-21 11:43 编辑
我把源码贴出来,请高手帮忙看下,这是什么原因。先不用管程序逻辑(大概逻辑是以同品种不同期合约价差(m1903-m1901)均线为参考依据,收盘价超过上限卖,低于下限买,否则平仓),我主要目的是用来了解下单函数的。现在的现象是,在信号变化的地方会下单,比如第一次出现buy信号时下单,其后连续的buy信号都不下单:
//------------------------------------------------------------------------
// 简称: TestOrder
// 名称: 测试下单函数
// 类别: 公式应用
// 类型: 用户应用
//------------------------------------------------------------------------
Params
Numeric MALength(100);
Numeric FirstStep(50);//警戒线
Numeric pBuyLots(1);
numeric pStartDate(20181110);
Vars
string v_programName;
NumericSeries ma;
NumericSeries maQuick;
NumericSeries CloseDif;
numeric v_orient;
numeric lv_lot;
Numeric ShiftUnit(10);
Begin
if(Date()<pStartDate){return;}
If(T()<>GetGlobalVar(99))
{
//利用全局变量,确保每个bar只执行一次
SetGlobalVar(99,T());
if (CurrentBar <MALength)
{
return ;
}
v_programName="TestOrder";
CloseDif=Data0.Close-Data1.Close;
ma=Average( CloseDif, MALength );
If(CloseDif>(ma+FirstStep))
{
//超过均线上限则卖出
v_orient=-1;
}
else If(CloseDif<(ma-FirstStep))
{
//超过均线下限则买入
v_orient=1;
}
Else
{
//平仓
v_orient=0;
}
PlotNumeric("orient",v_orient);
if(v_orient==1)
{
Buy(1,0);
//XHBLog("buy","",v_programName,Date(),Time());
FileAppend("C:\\temp\\log.txt",DateToString(Date)+" "+TimeToString(Time)+" "+"buy");
}
Else if(v_orient==-1)
{
SellShort(1,0);
//XHBLog("sell","",v_programName,Date(),Time());
FileAppend("C:\\temp\\log.txt",DateToString(Date)+" "+TimeToString(Time)+" "+"sell");
}
Else if(v_orient==0)
{
Sell();
BuyToCover();
//XHBLog("kill","",v_programName,Date(),Time());
FileAppend("C:\\temp\\log.txt",DateToString(Date)+" "+TimeToString(Time)+" "+"kill");
}
}
End
//------------------------------------------------------------------------
// 编译版本 GS2015.12.25
// 用户版本 2018/10/22 12:16:33
// 版权所有
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------ -
TB客服:
wblsjhmxuhongbo 发表于 2018-11-21 11:39
我把源码贴出来,请高手帮忙看下,这是什么原因。先不用管程序逻辑(大概逻辑是以同品种不同期合约价差(m1 ...
同一个公式里面,系统默认是不能连续建仓的吧(我也不知道tb为什么要这样设定)。在全局交易设置里面允许连续建仓试试? -
网友回复:
colin10g 发表于 2018-11-21 13:01
同一个公式里面,系统默认是不能连续建仓的吧(我也不知道tb为什么要这样设定)。在全局交易设置里面允许 ...
谢谢,正是这个原因!问题已解决!
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 或微信:cxhjy888 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容