以文本方式查看主题

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

--  作者:hj007s
--  发布时间:2018/1/19 13:07:55
--  求助个后台交易的小问题
我想问一下大神,我如何实现后台程序化交易手动开仓后自动委托的问题。

是这样,首先,我手动开仓,然后我如何取得进场价位,然后按照这个价位自动向下报委托

假设,我在1000点手动开多头,然后我如何实现向下在买1处,按照每个最小变动价位报单,然后报10个,意思是我开仓后报了10个委托,分别在买1——买10

--  作者:fly
--  发布时间:2018/1/30 11:15:30
--  
可以实现,但会取到和操作一个品种的所有持仓,您的代码正在编写,请稍等。

本代码将以期货品种--多头为例实现

--  作者:FireScript
--  发布时间:2018/1/30 16:03:48
--  

代码处理按照如下思路,因为你是利用手工下单结合后台程序化,所以会有一些必要的限制,我们假设之前没有多头持仓。在手工下单成交后触发后台下单语句的执行,在手工单之前后台语句无法下单。以多头为例:

1.定义了一个全局变量。在手工开仓后程序读取到持仓变化,就会重置全局变量的值,使得后面的下单语句条件被触发。

2.以手工下单的价格作为基准价格下10手不同价格的单子。

 

 

//因为有手工单参与,所以这里假设手工单之前没有该品种多头持仓,否则的话后台无法判读手工单。

GLOBALVARIABLE:rm:=0;//全局变量限制手工下单之前不下单。

if rm=0 and TBUYHOLDINGEX(\'\',\'\',1)<>0 then
begin 
MSGOUT(1,\'已有初始仓位\');//因为这里只会输出一次,用msgout只是为了迅速的知道已经下过了手工单,且程序也察觉到了。
rm:=TAVGENTERPRICEEX2(\'\' ,\'\' ,0 );//记住初始下单后(手工下单)的持仓均价,其实就是成交价。
end

//在手工单开仓价基础上,限价挂10单.挂单价格递减

tbuy(rm>0,1,lmt,rm-1*MINDIFF);//第一单
tbuy(rm>0,1,lmt,rm-2*MINDIFF);//第二单
.
.
.
tbuy(rm>0,1,lmt,rm-10*MINDIFF);//第十单