- 精华
- 20
- 在线时间
- 2981 小时
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
- 精华
- 20
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 主题
- 64
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
|
开仓的处理
开仓情况下,以多头买入为例:
在回溯测试中产生开仓买入的指令,然后将该指令应用到交易账户中,可能出现2种情况:
1、交易账户的资金和回溯测试的资金不匹配,此时我们应该按照交易帐户的资金量来进行开仓。
2、交易账户的持仓和回溯测试的持仓不匹配,此时我们应该考虑是进行仓位同步,还是忽略该买入操作。
大致的处理代码如下:
- If(BuyCondition) // 买入开仓条件满足
- {
- lots = ...; // 回溯测试计算出的交易数量
- entryPrice = ...; // 回溯测试计算出的交易价格
-
- If(BarStatus == 2) // 当前Bar为最后的一个Bar
- {
- lots = (A_FreeMargin*0.2)/(Q_AskPrice*ContractsUnit*BigPointValue*MarginRatio); // 假定按照可用资金的20%开仓
- lots = IntPart(lots); // 取整
- entryPrice = Q_AskPrice; // 按当时的叫卖价买入
-
- If(CurrentContracts()!=A_TotalPosition()) // 回溯测试的仓位和真实仓位不一致
- {
- // 根据您的需要进行处理,A_TotalPosition是合计的仓位,可通过A_BuyPosition,A_SellPosition取出买卖持仓.
- }
- Buy(lots,entryPrice);
- }else
- {
- Buy(lots,entryPrice); // 回溯测试的其他Bar直接买入
- }
- }
复制代码
[ 本帖最后由 nopain 于 2007-9-14 10:36 编辑 ] |
|