以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教关于仓位分割的写法  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166754)

--  作者:flyme
--  发布时间:2018/11/29 13:13:59
--  请教关于仓位分割的写法

举例说明:交易所规定,在一个账户的交易中,螺纹钢单账户最大持仓不超过3000手,单次最大开仓不大于500手。所以如果需要的开仓量大于500手的时候就要进行开仓量自动分割,写法如下,请版主指正。谢谢!

//---------------空平仓

if abs(holding)>500 then begin
   ss:=intpart(abs(holding)/500);
   for i=1 to ss do begin   
       KP3: SELLSHORT(holding<0 and 及时空损,500,LIMITR,C);
   end
end
if abs(holding)<=500 then begin      
       KP03:SELLSHORT(holding<0 and 及时空损,abs(holding),LIMITR,C);
end

 

//-------------------空开仓

if B=1 AND S1 then begin
   if 实盘持仓>500 then begin
      ss:=intpart(实盘持仓/500);
      for i=1 to ss do begin
          ZK4:buyshort(提前,500,limitr,收盘空开);
      end
   end
   if 实盘持仓<=500 then begin
          ZK04:buyshort(提前,实盘持仓,limitr,收盘空开);
   end   
end

 

 


--  作者:FireScript
--  发布时间:2018/11/29 13:58:33
--  
 代码我先看下,不过这个有一个大单拆分是用来处理这种需求的,你可以参考下:


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

工具-选项 下面。这是新版界面,旧版也是这个位置。



--  作者:FireScript
--  发布时间:2018/11/29 14:00:01
--  
  for i=1 to ss do begin   
       KP3: SELLSHORT(holding<0 and 及时空损,500,LIMITR,C);
   end

下单语句一个K最多下单一次的。用循环去处理,这里是没办法拆单的。

--  作者:flyme
--  发布时间:2018/11/29 14:11:20
--  

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20181129140308.png
图片点击可在新窗口打开查看
按照我原先的写法,就出现了图中这种情况,但是同样的条件有时候不能触发。我在途中都做了说明、
--  作者:FireScript
--  发布时间:2018/11/29 14:17:19
--  
 你用循环输出的信号在历史回测上显示是连续开了多单不假,但是实际下单只会下一次。这个必须和你说明下。这个思路建议你不用再继续考虑下去了。



--  作者:wenarm
--  发布时间:2018/11/29 14:18:53
--  

软件图标机制中对下单函数有限制,同一根k上一个交易指令语句只能被执行一次。

所以你的想法通过代码是实现不了的,你只能使用考虑使用现有功能或者在后台程序化中使用ALLOWREPEAT函数。


--  作者:flyme
--  发布时间:2018/11/29 14:28:25
--  
请问,这个大单拆分在什么选项里面?
--  作者:FireScript
--  发布时间:2018/11/29 14:32:40
--  
 
图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

这里。工具-选项

--  作者:wenarm
--  发布时间:2018/11/29 14:38:13
--  

交易--下单设置--常规下单中

5.0版本中,交易--下单设置--大单拆分