我在止盈、止损的平仓条件中都加入了LOG语句:
DEBUGFILE('D:\NI.TXT','持'&numtostr(HOLDING,0)&'手多仓,成本为:'&numtostr(ENTERPRICE,0)&',等待平仓时机。MAXPROFIT='&numtostr(MAXPROFIT,0)&', 盈亏WIN1='&numtostr(WIN1,0)&', 回落WIN2='&numtostr(WIN2,0)&', SELLPRICE='&numtostr(SELLPRICE,0),0);
//多头初始浮亏 P1 止损
IF WIN1<-P1 THEN
BEGIN
SELL(1,HOLDING,MARKET);
DEBUGFILE('D:\NI.TXT','平多仓,原因1:亏损额'&numtostr(WIN1,0)&' < '&numtostr(-P1,2)&',OPENPROFIT='&numtostr(OPENPROFIT,0)&',挂平仓价 '&numtostr(CLOSE,0),0);
END
//多头利润大于 P2 止盈
IF WIN1>P2 THEN
BEGIN
SELL(1,HOLDING,MARKET);
DEBUGFILE('D:\NI.TXT','平多仓,原因2:盈利额'&numtostr(WIN1,0)&' > '&numtostr(P2,2)&',OPENPROFIT='&numtostr(OPENPROFIT,0)&'挂平仓价 '&numtostr(CLOSE,0),0);
END
//多头获利后回撤 P3 止盈
IF CLOSE>ENTERPRICE+(P2/2) AND CLOSE<SELLPRICE THEN
BEGIN
SELL(1,HOLDING,MARKET);
DEBUGFILE('D:\NI.TXT','平多仓,原因3:回撤比例超过'&numtostr(P3,0)&'%,超过预设回撤止盈价'&numtostr(SELLPRICE,1)&',OPENPROFIT='&numtostr(OPENPROFIT,2)&',挂平仓价 '&numtostr(CLOSE,2),0);
END
2015-08-05 23:17:21.570 持1手多仓,成本为:81030,等待平仓时机。MAXPROFIT=30, 盈亏WIN1=30, 回落WIN2=0, SELLPRICE=81024
2015-08-05 23:17:22.880 持1手多仓,成本为:81030,等待平仓时机。MAXPROFIT=30, 盈亏WIN1=30, 回落WIN2=0, SELLPRICE=81024
2015-08-05 23:17:23.161 持1手多仓,成本为:81030,等待平仓时机。MAXPROFIT=30, 盈亏WIN1=30, 回落WIN2=0, SELLPRICE=81024
2015-08-05 23:17:23.660 持1手多仓,成本为:81030,等待平仓时机。MAXPROFIT=50, 盈亏WIN1=50, 回落WIN2=0, SELLPRICE=81021
2015-08-05 23:17:24.128 没有持仓,等待开仓时机。1分钟DIFF:-25.01,1分钟DEA:-29.84,OPEN:81080.0,CLOSE:81080.0
2015-08-05 23:17:24.659 没有持仓,等待开仓时机。1分钟DIFF:-23.42,1分钟DEA:-29.52,OPEN:81080.0,CLOSE:81050.0
在实盘模拟交易时,看到开多后就直接平仓了,查看LOG就是以上记录,完全没有平仓理由,持仓就这样没有了。这个如何追查?会是什么原因?
2015-08-06 00:14:09.613 持1手空仓,成本为:80820.00,等待平仓时机。MAXPROFIT=40.00, 盈亏WIN1=10.00, 回落WIN2=30, SELLPRICE=80828
2015-08-06 00:14:12.094 持1手空仓,成本为:80820.00,等待平仓时机。MAXPROFIT=40.00, 盈亏WIN1=0.00, 回落WIN2=40, SELLPRICE=80828
2015-08-06 00:14:13.047 持1手空仓,成本为:80820.00,等待平仓时机。MAXPROFIT=40.00, 盈亏WIN1=0.00, 回落WIN2=40, SELLPRICE=80828
2015-08-06 00:14:13.663 持1手空仓,成本为:80820.00,等待平仓时机。MAXPROFIT=40.00, 盈亏WIN1=-10.00, 回落WIN2=50, SELLPRICE=80828
2015-08-06 00:14:14.591 持1手空仓,成本为:80820.00,等待平仓时机。MAXPROFIT=40.00, 盈亏WIN1=-10.00, 回落WIN2=50, SELLPRICE=80828
2015-08-06 00:14:15.303 没有持仓,等待开仓时机。1分钟DIFF:-10.70,1分钟DEA:-10.89,OPEN=80820.0,MA20=80833.5,CLOSE:80830.0
2015-08-06 00:14:15.720 没有持仓,等待开仓时机。1分钟DIFF:-9.90,1分钟DEA:-10.73,OPEN=80820.0,MA20=80834.0,CLOSE:80840.0
2015-08-06 00:14:16.262 没有持仓,等待开仓时机。1分钟DIFF:-9.90,1分钟DEA:-10.73,OPEN=80820.0,MA20=80834.0,CLOSE:80850.0
2015-08-06 00:14:18.293 没有持仓,等待开仓时机。1分钟DIFF:-9.90,1分钟DEA:-10.73,OPEN=80820.0,MA20=80834.0,CLOSE:80850.0
2015-08-06 00:14:18.686 没有持仓,等待开仓时机。1分钟DIFF:-10.70,1分钟DEA:-10.89,OPEN=80820.0,MA20=80833.5,CLOSE:80850.0
2015-08-06 00:14:19.276 没有持仓,等待开仓时机。1分钟DIFF:-10.70,1分钟DEA:-10.89,OPEN=80820.0,MA20=80833.5,CLOSE:80840.0
今晚多次出现,还没到止盈止损的条件卖出,持仓就没有了,不知原因。
下单日志是有触发买入的:
2015-08-06 09:35:23.215 2015.08.06 09:35:18【图表】框架:Technic 触发下单 BUY 品种 IF09 下单K线 2015.08.06 09:35:01 公式:IF1509逼仓 窗格ID:0 代码行:40
2015-08-06 09:35:23.262 【图表】模型下单 1
2015-08-06 09:35:23.262 【图表】下单系数调整后 手数:1
2015-08-06 09:35:24.962 【图表】直接下单
2015-08-06 09:35:25.040 【图表】IF09 运行完毕
2015-08-06 09:35:25.040 【图表】IF09 运行完毕
2015-08-06 09:35:25.040 【图表】IF09 运行完毕
2015-08-06 09:35:25.040 【图表】IF09 运行完毕
2015-08-06 09:35:25.040 【图表】IF09 运行完毕
2015-08-06 09:35:25.040 【下单】IF09 价0.000000 量1 买卖0 类型1 开平0 账户603489 Formula 1
2015-08-06 09:35:36.491 【图表】IF09 运行完毕
2015-08-06 09:35:36.491 【指令】收到回报指令 ID = 1218130841
2015-08-06 09:35:36.506 【图表】IF09 运行完毕
2015-08-06 09:35:36.506 【图表】IF09 运行完毕
2015-08-06 09:35:36.506 【图表】IF09 运行完毕
2015-08-06 09:35:36.506 【图表】IF09 运行完毕
2015-08-06 09:35:36.522 【图表】IF09 运行完毕
2015-08-06 09:35:42.941 【图表】IF09 运行完毕
2015-08-06 09:35:42.941 【回报】603489 : IF1509 - 已报单 1 价格:0.0 开 买
2015-08-06 09:35:44.595 【图表】IF09 运行完毕
2015-08-06 09:35:44.595 【图表】IF09 运行完毕
2015-08-06 09:35:44.595 【图表】IF09 运行完毕
2015-08-06 09:35:44.595 【图表】IF09 运行完毕
2015-08-06 09:35:44.595 【图表】IF09 运行完毕
2015-08-06 09:35:44.595 【指令】收到回报指令 ID = 1218130841
2015-08-06 09:35:44.611 【指令】收到回报指令 ID = 1218130841
但看自己设置的log记录,程序目前又认为没有持仓,这个怎么解决?
2015-08-06 09:37:32.929 没有持仓,等待开仓时机。1分钟DIFF:-17.98,1分钟DEA:-24.78,OPEN:3623.6,CLOSE:3623.8
2015-08-06 09:37:34.879 没有持仓,等待开仓时机。1分钟DIFF:-18.01,1分钟DEA:-24.79,OPEN:3623.4,CLOSE:3623.4
2015-08-06 09:37:36.845 没有持仓,等待开仓时机。1分钟DIFF:-18.01,1分钟DEA:-24.79,OPEN:3623.4,CLOSE:3623.4
2015-08-06 09:37:38.803 没有持仓,等待开仓时机。1分钟DIFF:-17.98,1分钟DEA:-24.78,OPEN:3623.4,CLOSE:3623.8
2015-08-06 09:37:39.271 没有持仓,等待开仓时机。1分钟DIFF:-17.80,1分钟DEA:-24.75,OPEN:3624.4,CLOSE:3626.0
1.自动持仓是系统的设置,说明你选择了自动持仓同步
2.你代码调试出的结果是没有持仓,但是系统开仓,说明系统的持仓和你调试的持仓不一样,你用什么函数调试持仓的?
if holding=0 then 判断开仓条件,及开仓操作
if holding>0 then 多头平仓判断及操作
if holding<0 then 空头平仓判断及操作
if HOLDING=0 THEN
DEBUGFILE('D:\IF1509.TXT','没有持仓,等待开仓时机。1分钟DIFF:'&numtostr(DIFF,2)&',1分钟DEA:'&numtostr(DEA,2)&',OPEN:'&numtostr(OPEN,1)&',CLOSE:'&numtostr(CLOSE,1),0);
就是这样记录下来的。