以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  后台预警价格问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=168288)

--  作者:foziheyu
--  发布时间:2019/2/19 11:15:34
--  后台预警价格问题
后台程序中, 我用限价100策略报了一个委托单,  但是预警记录里面记录的却是当时的成交价格, 可能是99
这样导致我用TORDERPRICE(D,1)取上次委托价格的时候, 取的是99, 不是100

怎么才能取到我上次委托的100?
[此贴子已经被作者于2019/2/19 11:16:14编辑过]

--  作者:wenarm
--  发布时间:2019/2/19 11:28:47
--  
没办法,该函数就是这样设计得。未成交前时委托价,成交后更新为成交价。
--  作者:banzhuan
--  发布时间:2019/2/19 11:32:03
--  
该函数取到的价格如果未成交状态时就是未成交价,成交后返回的则是成交价。
没有直接函数可以获取 上次委托价,或者您用全局变量记录下,开仓时记录下

--  作者:foziheyu
--  发布时间:2019/2/19 12:42:17
--  
不是的, 我测试的结果是这样的, 按时间顺序
1, 按限价100元报单, 未成交
2, 预警记录中记录此时的市价是99, 注意此时还没成交
此时用TORDERPRICE(D,1)取到的是99, 函数说明中是说"未成交时为委托价", 那取到的就应该是委托价100, 而不是当时的市价99
3, 报单成交, 因为限价所以成交价为100
此时用TORDERPRICE(D,1)取到的还是99, 也不是函数说明中的"成交后为成交价"

=====================
取前N次的下单价格。未成交时为委托价,成交后为成交价

用法:TORDERPRICE(D,N)
表示取前N次的下单委托价格
D表示取委托方向:0所有方向;1开多;2平多;3开空;4平空
若执行失败则返回-1.
该函数的计算依赖于后台交易记录。任何交易记录的删减、增加都会导致返回值的变化。
该函数返回常数

注意:
该函数依赖TBUY等交易语句或者在交易监控中的手工干预的成交记录。
所属函数组:后台程式化交易(专业版)




--  作者:wenarm
--  发布时间:2019/2/19 13:32:43
--  

你说的价格指的是这个?这里的预警价格指的是预警触发时所对应的行情价格


图片点击可在新窗口打开查看此主题相关图片如下:20190219132119.368-4941.jpg
图片点击可在新窗口打开查看

 

该函数对应的应该是“监控”中的记录价格。

 

[此贴子已经被作者于2019/2/19 13:33:02编辑过]

--  作者:banzhuan
--  发布时间:2019/2/19 13:39:36
--  
本地测试了没问题,你用debugfile输出看看吧

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

--  作者:foziheyu
--  发布时间:2019/2/19 15:24:46
--  
好的, 我再试试
--  作者:foziheyu
--  发布时间:2019/2/20 6:19:13
--  
再次核对日志, 还是有问题
是这样的, 我的代码和你的测试的不一样, 要复杂一些:
1. 我监控了2个品种ZN04,ZN05, 监控周期1分钟, 1秒刷新一次, 同时勾选了tick级别刷新
2. 根据监控记录, 大多是ZN04触发的时候, 对ZN05进行了限价委托
3. 然后在ZN05触发的时候, 我调用TORDERPRICE目的是取步骤2中的ZN05委托价(此时ZN05未成交), 但每次取出的都不对

--  作者:wenarm
--  发布时间:2019/2/20 9:05:13
--  
提供你的测试代码。
--  作者:foziheyu
--  发布时间:2019/2/21 10:50:09
--  
代码:

当前品种:=STKLABEL();
ZN05跌停价:=dynainfo2(55,\'ZN05\');
if 当前品种 = \'ZN04\' AND MOD(CURRENTTIME,5)=0 then BEGIN
Tbuy(1,1,LMT,ZN05跌停价,0,\'\',\'ZN05\'),allowrepeat;
MSGOUT(ISLASTBAR , \'ZN05下单限价\'+\' \'+ NUMTOSTR(ZN05跌停价,1));
end
MSGOUT(ISLASTBAR , 当前品种+\' \'+ NUMTOSTR(TORDERPRICE(0,1),1));

后台设置:
监控ZN04,ZN05, 一秒执行一次

实测打印出的日志:
2019/02/21 10:37:10  ZN05下单限价 19975.0
2019/02/21 10:37:10  ZN04 19975.0
2019/02/21 10:37:10  ZN05 -1.0
2019/02/21 10:37:11  ZN04 19975.0
2019/02/21 10:37:11  ZN05 -1.0
2019/02/21 10:37:12  ZN04 19975.0
2019/02/21 10:37:12  ZN05 -1.0
2019/02/21 10:37:13  ZN04 19975.0
2019/02/21 10:37:13  ZN05 -1.0
2019/02/21 10:37:14  ZN04 19975.0
2019/02/21 10:37:14  ZN05 -1.0

结论:
当前品种为ZN04的时候, 为ZN05下单, 当前品种是ZN05的时候取不到委托价