- 精华
- 0
- 在线时间
- 58 小时
- UID
- 19288
- 积分
- 115
- 帖子
- 18
- 阅读权限
- 30
- 注册时间
- 2010-11-9
- 最后登录
- 2015-4-9
- 精华
- 0
- UID
- 19288
- 积分
- 115
- 帖子
- 18
- 主题
- 5
- 阅读权限
- 30
- 注册时间
- 2010-11-9
- 最后登录
- 2015-4-9
|
是关于marketposition的
我想要实现的功能就是固定点数止损,固定点数止盈,想测试一下最优的一个比例,例如说做多,10点止损,30点止盈
代码如下
condbuy = xxxx条件
condstoploss = EntryPrice - low[1]>=stoploss*minpoint; //最低点与进场点超过止损点
condtakeprofit = h[1]-EntryPrice>=takeprofit*minpoint; //最高价与进场点超过止盈目标
If(MarketPosition == 0 and condbuy)
{
Buy(1,open);
}
If(marketposition == 1)
{
If(condstoploss)
{
Sell(1,open);
FileAppend("c:/blade.log","stoplossed:");
}
If(condtakeprofit)
Sell(1,open);
}
用这段代码执行完之后,发现都是在同一个bar上开仓了之后,立刻有在这个同一个bar上平仓了
开始编其他代码还真没认真想过这个关于marketposition的问题
我现在的理解是marketposition==0的时候并且开仓条件满足,则进场做多
这个时候程序继续顺序向下执行
而由于已经有了多头头寸,在当前开仓的bar上,立刻进入到了
marketposition==1的控制语句中去了
不知道我的理解对不对
进入到marketposition==1的语句中时,由于之前还是没有仓位的情况下计算的condstoploss和condtakeprofit
所以entryprice为0,所以condstoploss为false,而condtakeprofit为true,因为一般最高价一定是大于这个目标利润的值了
则在一个bar上的程序执行的过程中,满足了condtakeprofit的条件分支,直接就给平了
不知道是不是这样进行的啊
我的问题是
程序是每根bar,执行计算一次
还是每传入一个tick的数据,就在当前bar执行计算一次
或者是说,在测试历史数据的时候,是每个bar执行一次
而在实盘的走势中,是一个bar上,每来一个tick执行一次,实盘一个bar执行N个tick就计算n次,对么?
那一个5分钟的bar,例如说是开仓的那个bar,在继续传入tick数据后,会又被重新计算了n次是么
那交易所一分钟之内,会传送多少个tick呢?
上面的代码和我的思想,都已经搞定了
就是想请高手帮我确认一下我对于tb机制的理解是否正确吧,我自己理解的我的疑问合理么
1个bar自上而下执行一次,还是1个bar,根据每个tick,执行n次
那么如果是执行了n次,开仓bar上的条件,是引用的前一个bar的数据,一定是满足成立的
那么是否会每来一个tick数据,并且这个数据中包含了开盘价的价格,就计算条件成功一次,就开一个单呢?
我知道v4控制了v3当中用close重复发单的问题,我想问的是这种机制是不是我所理解的那样呢?
多谢 |
|