欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 平仓出现资金不足

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有9916人关注过本帖树形打印复制链接

主题:平仓出现资金不足

帅哥哟,离线,有人找我吗?
paulshen
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
平仓出现资金不足  发帖心情 Post By:2010/9/9 12:11:21 [显示全部帖子]

实盘,后台,最新版

在只有一手单子的情况下,发出平仓指令后,出现资金不足的错误,下面交易状态窗口显示的信息:

2010-09-09 11:17:57
00560031 : IF1009 - 已报单 1 价格:2971.4 平 卖

2010-09-09 11:17:57
00560031 : IF1009 - 综合交易平台:资金不足

2010-09-09 11:17:57
00560031 : IF1009 - 已成交 1 价格:2971.4 平 卖

 

该窗口没有显示开仓指令,似乎开仓指令还没有发出。监控窗口里显示了开仓指令,成交数量为0。

 

我的平开仓公式如下:

if BPK then Begin
 if THOLDING<0 then begin
  TSELLSHORT(OT,0,lmt,close+S2*P); 
 end  
 if THOLDING=0 then begin
   TBUY(OT and NEX,OAMT,lmt,close+S1*P),orderqueue;
 end
End

其中,S1=3,P=mindiff

 

请帮忙看看什么原因。会是开仓指令在平仓未结束就发出吗?


 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
  发帖心情 Post By:2010/9/9 12:21:03 [显示全部帖子]

还有我设的扫描间隔为2秒

 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
请教  发帖心情 Post By:2010/9/9 13:44:25 [显示全部帖子]

我开仓用了orderqueue, 在这里没有起作用吗?

 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
平仓出现资金不足  发帖心情 Post By:2010/9/9 14:08:05 [显示全部帖子]

你让我看应该是问题15吧:

15、有关后台自动交易THOLDING的使用

初学者在使用后台自动交易时,通常认为将函数前简单加T就可以,但实际不行的,比如:

tSELL(bp and THOLDING>0,0,LMT,C);

tSELLSHORT(sp and THOLDING<0,0,LMT,C);

tBUY(bk and THOLDING=0,1,LMT,C);

tBUYSHORT(sk and THOLDING=0, 1,LMT,C);
在图表交易系统上这样改过来的代码

 

THOLDING与图表HOLDING最大的不同在于,THOLDING是与你真实持仓一致的函数,只有当我们的委托下单成交后才会有所变化,而HOLDING是虚拟持仓,BUY执行过后立即变化。

由于我们前面的代码在执行了平仓操作后,THOLDING不会马上变成0,故会导致TBUY的THOLDING=0条件不被成立,导致没有反手信号。

正确的反手写法

 

if bp > 0 and THOLDING>0 then

begin

tSELL(1,0,MKT),ORDERQUEUE;

tBUYSHORT(1, 1,MKT),ORDERQUEUE;

end

 

if sp > 0 and THOLDING<0 then

begin

tSELLSHORT(1,0,MKT),ORDERQUEUE;

tBUY(1,1,MKT),ORDERQUEUE;

end

 

清注意上述代码使用了市价委托,如在CTP接口上模拟交易,请注意一定要在上期所品种下进行

==============

admin,你说的是这条吧?嗯,我再好好看看。有个问题:

按照上面说的,由于我的开仓指令判断了Tholding, 平仓指令没有执行完前,应该没有发出才对,怎么会出现平仓刚发出,立刻就发出开仓指令呢?

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
  发帖心情 Post By:2010/9/9 14:17:33 [显示全部帖子]

还有,如果我的系统不是反手的话,我是必须判断THolding是否为零的,为什么说If tholding=0 写法不对呢?在这种情况下,应该怎么做呢?

 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
  发帖心情 Post By:2010/9/9 14:43:30 [显示全部帖子]

嗯,看来需要看的更加仔细一点。我再改改试试吧,我可是真金白银的在测啊!

还有一个问题,如果我想用限价指令,问题15中的示例指令应该怎么改好?问题15中提到,用了orderqueue,就必须用市价指令。


 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
  发帖心情 Post By:2010/9/9 18:21:01 [显示全部帖子]

问题15中的这段话似乎不准确:

---

THOLDING与图表HOLDING最大的不同在于,THOLDING是与你真实持仓一致的函数,只有当我们的委托下单成交后才会有所变化,而HOLDING是虚拟持仓,BUY执行过后立即变化。

---

其中“只有当我们的委托下单成交后才会有所变化”不准确,看起来应该是“当委托指令发出后,才会有变化”。否则我今天的问题就不应该出现。这里交易指令发出应该指交易状态窗口出现已报单。


 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
  发帖心情 Post By:2010/9/9 18:48:47 [显示全部帖子]

想起一个小建议,交易状态窗口的时间应该和debugfile一样,加上毫秒,以便更方便地定位问题。

 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
平仓出现资金不足  发帖心情 Post By:2010/9/13 11:49:46 [显示全部帖子]

修改后的反手运行的非常好,正常情况下几乎没有滑点!

 回到顶部
帅哥哟,离线,有人找我吗?
paulshen
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:369 积分:2060 威望:0 精华:0 注册:2010/7/13 12:13:32
  发帖心情 Post By:2010/9/15 17:42:12 [显示全部帖子]

今天又碰到一个新问题。在正常反手指令后,还有一条基于Tholding2的开仓指令,用于处理因止损平仓后的开仓,今天报了一个资金不足的问题,我估计是因为反手的指令还没完全执行完,而tholding2已经变成了0,所以下列指令被发了出去:

if THOLDING2=0 and NEX then begin
   TBUY(1,OAMT,mkt);
end

 

有什么好办法解决这个问题?

[此贴子已经被作者于2010-9-15 17:42:21编辑过]

 回到顶部
总数 11 1 2 下一页