开拓者期货期权程序化系统交易论坛
标题:
为了计算当天的结算单
[打印本页]
作者:
zyxsir
时间:
2013-4-26 14:10:59
标题:
为了计算当天的结算单
Vars
Numeric nCount0;
Numeric i0;
Numeric nEntryFlag0;
Numeric nbuyFlag0;
Numeric nbuyexitlot0;
Numeric mycapital0;
Numeric yingkuiprice;
Numeric todaycapitalnun;
Begin
If(BarStatus==2)
{
nCount0 = Data0.A_GetOrderCount();
If(nCount0>=1)
{
For i0 = 0 To nCount0
{
nEntryFlag0 = A_OrderEntryOrExit(i0);
nbuyFlag0 = A_OrderBuyOrSell(i0);
If(nEntryFlag0 == Enum_Exit() && nbuyFlag0 == Enum_Buy)
{
nbuyexitlot0 = A_OrderFilledLot;
if(Data0.A_BuyPosition>Data0.A_SellPosition) mycapital0=(Data0.Q_PreSettlePrice-Data0.A_OrderFilledPrice)*Data0.ContractUnit*nbuyexitlot0+(Data0.Q_AvgPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*(Data0.A_BuyPosition-Data0.A_SellPosition-nbuyexitlot0);
If(Data0.A_SellPosition>=Data0.A_BuyPosition) mycapital0=(Data0.Q_PreSettlePrice-Data0.A_OrderFilledPrice)*Data0.ContractUnit*nbuyexitlot0+(Data0.Q_PreSettlePrice-Data0.Q_AvgPrice)*Data0.ContractUnit*(Data0.A_SellPosition-Data0.A_BuyPosition-nbuyexitlot0);
}Else If(nEntryFlag0 == Enum_Exit() && nbuyFlag0 == Enum_sell)
{
nbuyexitlot0 = A_OrderFilledLot;
if(Data0.A_BuyPosition>Data0.A_SellPosition) mycapital0=(Data0.A_OrderFilledPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*nbuyexitlot0+(Data0.Q_AvgPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*(Data0.A_BuyPosition-Data0.A_SellPosition-nbuyexitlot0);
If(Data0.A_SellPosition>=Data0.A_BuyPosition) mycapital0=(Data0.A_OrderFilledPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*nbuyexitlot0+(Data0.Q_PreSettlePrice-Data0.Q_AvgPrice)*Data0.ContractUnit*(Data0.A_SellPosition-Data0.A_BuyPosition-nbuyexitlot0);
}
}
If(Data0.A_TodayBuyPosition>0 Or Data0. A_TodaySellPosition>0)
{
if(Data0.A_BuyPosition>Data0.A_SellPosition) mycapital0=(Data0.Q_AvgPrice-Data0.A_OrderFilledPrice)*Data0.ContractUnit*Data0.A_todayBuyPosition+(Data0.Q_AvgPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*(Data0.A_BuyPosition-Data0.A_SellPosition-Data0.A_todayBuyPosition);
If(Data0.A_SellPosition>Data0.A_BuyPosition) mycapital0=(Data0.A_OrderFilledPrice-Data0.Q_AvgPrice)*Data0.ContractUnit*Data0.A_todaySellPosition+(Data0.Q_PreSettlePrice-Data0.Q_AvgPrice)*Data0.ContractUnit*(Data0.A_SellPosition-Data0.A_BuyPosition-Data0.A_todaySellPosition);
}
}Else If(Data0.A_BuyPosition>0 Or Data0.A_SellPosition>0)
{
if(Data0.A_BuyPosition>Data0.A_SellPosition) mycapital0=(Data0.Q_AvgPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*(Data0.A_BuyPosition-Data0.A_SellPosition);
If(Data0.A_SellPosition>Data0.A_BuyPosition) mycapital0=(Data0.Q_PreSettlePrice-Data0.Q_AvgPrice)*Data0.ContractUnit*(Data0.A_SellPosition-Data0.A_BuyPosition);
}
yingkuiprice=mycapital0;
todaycapitalnun=A_PreviousEquity+A_TodayDeposit-A_TodayDrawing+yingkuiprice;
FileDelete("E:\\兴业日结单核对文档.txt");
FileAppend("E:\\兴业日结单核对文档.txt", "商品名称"+" "+"当日盈亏"+" "+"今开仓价"+" "+"今天结算价"+" "+"昨天结算价"+" "+"合约单位"+" "+"多仓"+" "+"空仓"+" "+"昨日结存"+" "+"当日入金"+" "+"当日出金"+" "+"当日盈亏"+" "+"当日结存"+" "+"总计");
FileAppend("E:\\兴业日结单核对文档.txt", Data0.SymbolName+" "+Text(mycapital0)+" "+Text(Data0.A_OrderFilledPrice)+" "+Text(Data0.Q_AvgPrice)+" "+Text(Data0.Q_PreSettlePrice)+" "+Text(Data0.ContractUnit)+" "+Text(Data0.A_Buyposition)+" "+Text(Data0.A_sellposition)+" "+Text(A_PreviousEquity)+" "+Text(A_TodayDeposit)+" "+Text(A_TodayDrawing)+" "+Text(yingkuiprice)+" "+Text(todaycapitalnun));
}
End
为了计算当天的结算单
为何编译能通过,但不能输出文档
请管理员或高手帮忙修改一下!谢谢
作者:
小米
时间:
2013-4-26 15:57:54
我复制公式在自己的机器上运行,就一直是无响应。貌似是一个死循环跳不出来。
作者:
Transcend
时间:
2013-4-26 16:03:32
应该是有逻辑错误
作者:
zyxsir
时间:
2013-4-27 06:22:12
nCount0 = Data0.A_GetOrderCount();
If(nCount0>=1)
{
For i0 = 0 To nCount0
{
nEntryFlag0 = A_OrderEntryOrExit(i0);
nbuyFlag0 = A_OrderBuyOrSell(i0);
If(nEntryFlag0 == Enum_Exit() && nbuyFlag0 == Enum_Buy)
{
nbuyexitlot0 = A_OrderFilledLot;
错误应该在这些语句,就是不知这样修改?请大家一起想想办法,如果成功,以后就不用每天去花大量时间核对结算单了。
作者:
zyxsir
时间:
2013-4-27 06:28:23
if(Data0.A_BuyPosition>Data0.A_SellPosition) mycapital0=(Data0.A_OrderFilledPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*nbuyexitlot0+(Data0.Q_AvgPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*(Data0.A_BuyPosition-Data0.A_SellPosition-nbuyexitlot0);
If(Data0.A_SellPosition>=Data0.A_BuyPosition) mycapital0=(Data0.A_OrderFilledPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*nbuyexitlot0+(Data0.Q_PreSettlePrice-Data0.Q_AvgPrice)*Data0.ContractUnit*(Data0.A_SellPosition-Data0.A_BuyPosition-nbuyexitlot0);
}
}
If(Data0.A_TodayBuyPosition>0 Or Data0. A_TodaySellPosition>0)
{
if(Data0.A_BuyPosition>Data0.A_SellPosition) mycapital0=(Data0.Q_AvgPrice-Data0.A_OrderFilledPrice)*Data0.ContractUnit*Data0.A_todayBuyPosition+(Data0.Q_AvgPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*(Data0.A_BuyPosition-Data0.A_SellPosition-Data0.A_todayBuyPosition);
If(Data0.A_SellPosition>Data0.A_BuyPosition) mycapital0=(Data0.A_OrderFilledPrice-Data0.Q_AvgPrice)*Data0.ContractUnit*Data0.A_todaySellPosition+(Data0.Q_PreSettlePrice-Data0.Q_AvgPrice)*Data0.ContractUnit*(Data0.A_SellPosition-Data0.A_BuyPosition-Data0.A_todaySellPosition);
}
}Else If(Data0.A_BuyPosition>0 Or Data0.A_SellPosition>0)
{
if(Data0.A_BuyPosition>Data0.A_SellPosition) mycapital0=(Data0.Q_AvgPrice-Data0.Q_PreSettlePrice)*Data0.ContractUnit*(Data0.A_BuyPosition-Data0.A_SellPosition);
If(Data0.A_SellPosition>Data0.A_BuyPosition) mycapital0=(Data0.Q_PreSettlePrice-Data0.Q_AvgPrice)*Data0.ContractUnit*(Data0.A_SellPosition-Data0.A_BuyPosition);
}
作者:
zyxsir
时间:
2013-4-27 06:32:54
小米老师:如果当天没有平仓,上面代码可以正确取到当天的记录。如果有关于当天买平仓和卖平仓的函数就好了,就可以不用编写关于平仓的代码了。不知能否增加该函数?
欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/)
Powered by Discuz! X2