设为首页收藏本站

 找回密码
 注册
楼主: nopain
打印 上一主题 下一主题

关于回溯测试和自动交易同步的处理 [复制链接]

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
1#
发表于 2007-12-21 16:55:06 |显示全部楼层

提问题

有两个问题:
1、当前最后一个bar历史回溯中开仓条件满足,执行真实帐户的开仓操作,图上应该还没出现交易指令产生的买入标志,当新的bar出现时,刚才的bar是否还会重画历史回溯测试产生的开仓标志?如果重画,是不是程序按每tick都会从currentbar==0起再执行一次,如果是这样,一切都可以理解了。
2、A_SellPosition是一个正数还是负数?
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
2#
发表于 2007-12-21 20:22:46 |显示全部楼层
  1. if(根据图表产生开仓条件)
  2. {
  3.    If(AccountDataExist and barstatus==2 and A_TotalPosition==0)
  4.      {
  5.         oneMargin = Q_Last*ContractUnit()*BigPointValue()*MarginRatio();
  6.         TotalEquity=A_FreeMargin;
  7.          lots = IntPart((TotalEquity*EntryRatio)/oneMargin);
  8.          myEntryprice=Q_AskPrice;
  9.          buy(lots,myEntryprice);
  10.     }Else
  11.     {       
  12.          oneMargin = low*ContractUnit()*BigPointValue()*MarginRatio();
  13.         TotalEquity = CurrentCapital()+ Abs(CurrentContracts())*oneMargin;
  14.          lots = IntPart((TotalEquity*EntryRatio)/oneMargin);
  15.          buy(lots,low);
  16.          setglobalvar(0,low);
  17.          commentary("此次开仓价为:"+text(low));
  18.    }
  19. }
复制代码

帮看一下上面的代码是否达到了同步的目的?开仓标志是否可以比实际帐户发出委托并成交后稍迟一点也出现在最后一根bar上?
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
3#
发表于 2007-12-22 09:26:55 |显示全部楼层
  1. if(根据图表产生开仓条件)
  2. {
  3.    If(barstatus==2)
  4.      {
  5.         oneMargin = Q_Last*ContractUnit()*BigPointValue()*MarginRatio();
  6.         TotalEquity=A_FreeMargin;
  7.          lots = IntPart((TotalEquity*EntryRatio)/oneMargin);
  8.          myEntryprice=Q_AskPrice;
  9.          buy(lots,myEntryprice);
  10.     }Else
  11.     {        
  12.          oneMargin = low*ContractUnit()*BigPointValue()*MarginRatio();
  13.         TotalEquity = CurrentCapital()+ Abs(CurrentContracts())*oneMargin;
  14.          lots = IntPart((TotalEquity*EntryRatio)/oneMargin);
  15.          buy(lots,low);
  16.          setglobalvar(0,low);
  17.          commentary("此次开仓价为:"+text(low));
  18.    }
  19. }
复制代码

根据nopain前面的实例,这段程序只要删掉一些条件内容就和实例差不多了,如上,应该可以了吧.
根据tradeblazer的描述,原来是当真实帐户产生交易时,在最后一个bar会产生开仓讯号并且开仓数量和真实帐户所开仓数一致,当开仓的bar变为倒数第二根bar时,倒数第二根bar会执行一次分枝条件,重新计算测试帐户的价格和开仓数量,并且重画开仓讯号,就是这样理解了.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
4#
发表于 2007-12-24 10:29:40 |显示全部楼层
现在是达到了测试和实盘同步了,只是首次开仓讯号的开仓数量与真实帐户并不同,变为倒数第二根后,才调整回正常的数值,不过已不伤大雅了.正在偷笑中
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
5#
发表于 2008-1-24 09:45:22 |显示全部楼层

请教问题

在交易函数中AvgEntryPrice()对应帐户函数的A_buyavgprice和A_sellavgprice,请问exitprice对应帐户函数的什么函数,如果没有这一函数,应如何达到类似目的,获取帐户的最后平仓价?
我曾试过如下处理,但依然未达到效果:
  1.                                                         if(barstatus==2)
  2.                                                         {       
  3.                                                                
  4.                                                                 lots=A_BuyPosition;
  5.                                                                 myExitprice=Q_BidPrice;
  6.                                                                 SetGlobalVar(1,lots);
  7.                                                                 sell(lots,myExitprice);
  8.                                                                 if(j<1)
  9.                                                                 {
  10.                                                                 setglobalvar(0,myExitprice);
  11.                                                                 }
  12.                                                                 j=j+1;
  13.                                                         }Else{回测平仓代码...}
复制代码
TradeBlazer交流群33647992。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-19 03:49

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部