2008-4-16 14:04
hoyoy
有信号没平仓,呵呵
今天豆油0809合约15分钟线,在9:15的BAR上出现了平仓信号,仔细核对了平仓条件,确定是满足的,图中显示的是平7手,仓位正好持有7手,结果一直没有平仓,只好手动平了。
2008-4-16 19:16
nopain
1、先看消息中心[按F7]有没有任何提示。
2、确认是启动了自动交易,并关联了账户。
2008-4-17 11:01
hoyoy
2、是肯定的,每天都检查好几遍。
1、提示没有持仓,我晕
2008-4-17 11:03
hoyoy
还有个问题啊:
我模拟帐户里赚的钱哪里去了?呵呵:Q
每天都用昨天的收盘价给我重新算持仓成本,昨天平了Y0809,7手,每手1万多利润,到现在也没有增加啊;糖也是,但是糖还没有平。
2008-4-17 11:31
nopain
现在模拟帐户的结算有问题,先凑合着用吧。
平仓时提示没有持仓,应该是您的开仓指令没有成功执行
2008-4-17 11:44
hoyoy
[quote]原帖由 [i]nopain[/i] 于 2008-4-17 11:31 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=11355&ptid=2065][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
现在模拟帐户的结算有问题,先凑合着用吧。
[b]平仓时提示没有持仓,应该是您的开仓指令没有成功执行[/b] [/quote]
[b]这个确实是[/b]。但是原因是这样的:当时我的模拟帐户出问题了,一直不停的开仓(版主可能有印象),所以我修改了系统,这时图上最后一个指令上指示开仓7手,我就留了7手,把其他的手动给平了。
这样也不行啊?
这里就存在一个问题了:marketposition==1判断的应该是[color=red]目前持仓[/color],而不是[color=red]是否有过开仓[/color]啊?困惑中。
我已经迫不及待要实战了,看来模拟帐户没用,准备半自动来检验系统,看图操作。全自动好像小问题太多。
2008-4-17 12:00
nopain
全自动交易要求您完全按照系统指示去做,您中途手工平掉了仓位,交易系统本身是不知道的。
MarketPosition反映的是图上的仓位,和账户中的仓位是没有关联的。
模拟帐户只是结算有问题,一直没有找到问题原因,但用来测试系统还是可以的。
2008-4-17 12:26
hoyoy
[quote]原帖由 [i]nopain[/i] 于 2008-4-17 12:00 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=11365&ptid=2065][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
全自动交易要求您完全按照系统指示去做,您中途手工平掉了仓位,交易系统本身是不知道的。
MarketPosition反映的是图上的仓位,和账户中的仓位是没有关联的。
模拟帐户只是结算有问题,一直没有找到问题原因,但用来测试系统 ... [/quote]
是这样的:假设先有个系统1、后有个系统2
系统1指示开仓买入18手,图上有18手对吧?结果出错了,一直开18手开到帐户资金不够为止;
这样呢我就想办法修改啊,于是修改成系统2,系统2上最后一个指令是开仓买入7手,我一看指令相同啊,于是就把帐户里的无数个18手平了,只留了7手。如图。这样,当系统2指示平仓的时候,图上应该是7手,而我的帐户里正好有7手。
而实际上,昨天9:15-9:30的BAR上出了平仓7手的信号,9:18有消息来说“没有持仓”。
所以我困惑啊,难道说前一个系统留下的仓位,下个系统就不认了?
2008-4-17 12:59
tradeblazer
系统不能识别这个,您说得这个情况,属于系统运行过程中出现了异常。只能手工进行同步。
比如,您讲18,7手这样的量做为一个参数。这样就可以在出现意外的情况,手工进行同步仓位
2008-4-17 13:49
hoyoy
让我想想版主的意思啊。有点儿不太懂。
现在的这个7手(参数myUnits)是这样计算出来的:
TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*myMarginRatio);
NthUnits = TotalEquity * RiskRatio / R;//开仓手数=总资金*风险比例/R值
NthUnits = IntPart(NthUnits);//取整
MaxUnits = CurrentCapital() / Close * ContractUnit() * BigPointValue() * myMarginRatio;//最大可开仓单位=可用资金/每手价值
MaxUnits = IntPart(MaxUnits);//取整
If(MaxUnits >=1 && MaxUnits >= NthUnits)
{
If(NthUnits>=1)
{
myUnits = NthUnits;
}Else
{
myUnits = 1;
}
}Else If (MaxUnits >=1 && MaxUnits < NthUnits)
{
myUnits = MaxUnits;
}
代码都帖出来了:) 请帮忙,谢谢
2008-4-17 14:07
hoyoy
版主的意思是不是说这样:
if(marketposition!=0)
{
sell(myUnits,1);
buytocover(myUnits,1);//选择1是将当前BAR走完以后才平
}
2008-4-17 14:50
nopain
不是这个意思,您可以将MyUnits做为一个参数,假定如下。
Params
Numeric MyUnits(0);
在代码里面,您可以判断,如果MyUnits == 0,则使用您上面的代码,计算出一个交易数量,否则,用参数的数量。这个时候你就可以简单设置参数为7达到同步数量。
2008-4-17 15:44
hoyoy
抱歉,没明白。myUnits原来是一个变量啊,怎么又让它成为一个参数呢?定义为参数以后,还能进行变量的计算吗?
if(myUnits==0)是什么意思?是不是指目前无仓?那ESLE又是什么呢?
版主的意思是不是:
Params
Numeric MyUnits(0);
...
if(myUnits==0)
{...}//用自己定义的myunits;
else{...//不定义myunits,根据图中的开仓指令,手动更改参数}
这样的代码只在换系统的时候使用,对吧?
2008-4-17 18:01
nopain
那改一下参数名字吧。大概的代码如下:
[code]
Params
Numeric InitTradeLots(0);
....
Vars
Numeric MyUnits;
Begin
...
If(InitTradeLots==0)
{
MyUnits = ...//计算代码,计算出交易的数量
}
....
Buy(MyUnits,MyPrice);
....
End
[/code]
2008-4-17 18:49
hoyoy
哈哈,这就跟我理解的一样了,主要是版主的==迷惑了我,其实就是=。
总结陈词:让参数A=0,正常情况下A=0,计算变量MYUNITS;如遇到换系统(或者合约换月,一定会有这个问题),先更改A为图中的开仓数量,平仓以后可以再换回来。
我觉得这个问题虽小,但是解决的很有意义,否则在实战中遇上了会吃大亏,还搞不清楚呢。
2008-4-17 18:49
hoyoy
多谢多谢啦!:lol :lol :lol
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.