以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  后台交易的一个问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=159893)

--  作者:yin8jun
--  发布时间:2017/11/27 14:09:17
--  后台交易的一个问题
我今天使用ic01委买价-ic12委卖价<-38时做开仓条件,结果交易出现错误,交易日志如下。ic01委买价-ic12委卖价=38.2远大于-38时开仓。11:15分又出现同样的情况。
问题:
1,38的价差位置回头查时是没有的,那个时候的委买委卖价读了错误的数值。
2,本来要小于-38的,为何大于38时开仓。
用模拟时又正常了。请问这是怎么了,Ic12同ic01的数据错乱了?


2017-11-27 10:19:54.108    【后台】IC01 TBuyShort 第 34 行出现信号
2017-11-27 10:19:54.108    【后台】IC12 TBuyShort 已成功触发下单操作 价格:6181.000000 数量:1 类型:0 账户: 品种:IC12
2017-11-27 10:19:54.108    【后台】下单已发送
2017-11-27 10:19:54.109    【后台】IC01 TSellShort 第 35 行出现信号
2017-11-27 10:19:54.109    【后台】IC01 TSellShort 已成功触发下单操作 价格:6219.200195 数量:1 类型:0 账户: 品种:IC01
2017-11-27 10:19:54.110    【后台】实际账户持仓 5
2017-11-27 10:19:54.110    【后台】下单已发送
2017-11-27 10:19:54.110    【下单】IC12 价6181.000000 量1 买卖1 类型0 开平0 账户98221096 Formula 1
2017-11-27 10:19:54.111    【下单】确认报单已发送 ID=1741219209 RefID = 35090
2017-11-27 10:19:54.111    【下单】IC01 价6219.200195 量1 买卖0 类型0 开平1 账户98221096 Formula 1
2017-11-27 10:19:54.112    【下单】确认报单已发送 ID=1741219219 RefID = 35100
2017-11-27 10:19:54.118    【指令】收到回报指令 ID = 1741219209 RefID = 35090
2017-11-27 10:19:54.160    【后台】IC01 运行结束
2017-11-27 10:19:54.161    【指令】收到回报指令 ID = 1741219219 RefID = 35100
2017-11-27 10:19:54.167    【指令】收到回报指令 ID = 1741219209 RefID = 35090
2017-11-27 10:19:54.168    【指令】收到回报指令 ID = 1741219209 RefID = 35090
2017-11-27 10:19:54.169    【指令】收到成交回报指令 REFID = 35090 vol = 1
2017-11-27 10:19:54.176    【指令】收到回报指令 ID = 1741219219 RefID = 35100
2017-11-27 10:19:54.177    【指令】收到回报指令 ID = 1741219219 RefID = 35100
2017-11-27 10:19:54.179    【指令】收到成交回报指令 REFID = 35100 vol = 1
2017-11-27 10:19:54.189    【回报】98221096 : IC1712 - 已报单 1 价格:6181.0 开 卖
2017-11-27 10:19:54.190    【回报】98221096 : IC1801 - 已报单 1 价格:6219.2 平 买
2017-11-27 10:19:54.191    【回报】98221096 : IC1712 - 已成交 1 价格:6219.4 开 卖
2017-11-27 10:19:54.191    【回报】98221096 : IC1801 - 已成交 1 价格:6193.2 平 买

--  作者:yin8jun
--  发布时间:2017/11/27 14:15:43
--  
好像是价差的正负号有延用上一个数据的正负号?
--  作者:FireScript
--  发布时间:2017/11/27 15:06:08
--  
帖代码出来看下。这部分日志不足以找到问题所在。还有你用的什么周期的数据?
--  作者:yin8jun
--  发布时间:2017/11/27 15:26:32
--  
用的是分笔数据,代码如下:

THISIF:=\'IC12\';
NEXTIF:=\'IC01\';

IH04B:=stkindi(nextif,\'askbidt.a\',0,0,0);
IH03A:=stkindi(thisif,\'askbidt.b\',0,0,0);

CHA43:IH04B-IH03A;

kk:=cha43<=-38;

IF KK THEN BEGIN
    tbuyShort(1,1,lmt,IH04B,0,\'\',thisif);
    TSellShort(1,1,lmt,IH03A,0,\'\',nextif);
END


--  作者:yin8jun
--  发布时间:2017/11/27 15:28:15
--  
引用公式名:askbidt
内容:
a:DYNAINFO( 34);
b:DYNAINFO( 28);

--  作者:yukizzc
--  发布时间:2017/11/27 15:35:57
--  

DYNAINFO2(34 ,\'if12\' )

直接这么写就能获得不同品种的实时动态行情。

另外可以在代码里加上debugfile输出下引用过来的行情数据看下


--  作者:FireScript
--  发布时间:2017/11/27 15:43:54
--  

 

 

 

1.你好像是用IC01的卖一价格-IC12的买一价。和你1楼的描述是不是反了啊。

2.你引用了动态函数的值。这个函数只有最新值,没有历史值。那个价差按理说你是没办法回溯历史的,只有当前最新价差


--  作者:yin8jun
--  发布时间:2017/11/27 17:53:00
--  
我一楼写错了,应该是平ic01的空,开ic12的空。是ic01的委卖价-ic12的委买价。
--  作者:yin8jun
--  发布时间:2017/11/27 17:55:54
--  
以下是引用yukizzc在2017/11/27 15:35:57的发言:

DYNAINFO2(34 ,\'if12\' )

直接这么写就能获得不同品种的实时动态行情。

另外可以在代码里加上debugfile输出下引用过来的行情数据看下



dynainfo(20);dynainfo(21)跟用DYNAINFO( 34),DYNAINFO( 28)有区别吗?会不会跟这个也有关系。

即使引用错了,应该通不过kk:=cha43<=-38条件的检验。


--  作者:wenarm
--  发布时间:2017/11/27 19:04:37
--  
DYNAINFO( 21)=DYNAINFO( 34);前者的值其实就一档行情的价格
DYNAINFO( 20)=DYNAINFO( 28);

你的问题可以通过debugfile 定位分析原因。
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=49428