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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]定时器买卖时,同一价位不断重复买卖

   

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


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

主题:[求助]定时器买卖时,同一价位不断重复买卖

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


加好友 发短信
等级:新手上路 帖子:24 积分:109 威望:0 精华:0 注册:2011/7/11 14:08:33
[求助]定时器买卖时,同一价位不断重复买卖  发帖心情 Post By:2011/9/1 9:43:09 [只看该作者]

我用定时器制作监听,当价格抵达某一个价位的时候,我设置3手交易的时候会出现不断的买入。

但是在之前我已经设置了 返回当前账户的 buytodayholding ,如果此holding > 0 的时候不允许买入,但是程序依旧不断买进,不知道有何良策。我已经设置了orderqueue =1 ,依旧无效。奇怪的是 如果我设置成1手买卖,就不会有这种情况发生!

 

请各位高手指教。


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


加好友 发短信
等级:新手上路 帖子:24 积分:109 威望:0 精华:0 注册:2011/7/11 14:08:33
  发帖心情 Post By:2011/9/1 9:47:27 [只看该作者]

PS 我已经将 orderqueue 设置成 等于当前手数依旧无效。

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


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/9/1 9:47:34 [只看该作者]

应该是程序逻辑有问题,没有贴出代码不好指出问题所在,

出现了异常应该是条件中的参数不正确导致,

你可以在程序中适当处输出参数,来验证参数是否正确。

[此贴子已经被作者于2011-9-1 9:55:19编辑过]

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


加好友 发短信
等级:新手上路 帖子:24 积分:109 威望:0 精华:0 注册:2011/7/11 14:08:33
  发帖心情 Post By:2011/9/1 10:24:20 [只看该作者]

 

 

Sub APPLICATION_Timer(ID)
 if id = 1 and celue01 = "buy" and ZHUANGTAI01 = false  then
    call Order.HoldingInfoByCode2(AutoTrade_ID01, MKT01,BuyHoding01,BuyCost01,BuyTodayHoding01,SellHoding01,SellCost01,SellTodayHoding01,PNL01,UseMargin01,800748)
 call testTrade(QREN01,AutoTrade_NewP01.caption,AutoTrade_BuyPrice01,AutoTrade_ShouShu01,AutoTrade_ID01,MKT01,BuyTodayHoding01,AutoTrade_ZY01,AutoTrade_ZS01,ZHUANGTAI01)

 end if

 

 

sub testTrade(QREN,DQJW,MRJ,SHOUSHU,DAIMA,SHICHANG,NewHOLDING,ZHIYING,ZHISUN,ZHUANGTAI)

'正式买卖操作
if QREN = TRUE AND DQJW = MRJ AND NewHOLDING = 0 AND ZHUANGTAI = FALSE then
 order.OrderQueue = SHOUSHU
 call order.Buyshort(1,SHOUSHU,0,0,DAIMA,SHICHANG,"",0) '市价买进
 msgbox "NewHOLDING做空:"&  NewHOLDING & "    " & ZHIYING & "    " &ZHISUN
 msgbox "您已经成功以市价挂单做空!"
 
end if

end sub

[此贴子已经被作者于2011-9-1 10:25:01编辑过]

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


加好友 发短信
等级:新手上路 帖子:24 积分:109 威望:0 精华:0 注册:2011/7/11 14:08:33
  发帖心情 Post By:2011/9/1 10:30:14 [只看该作者]

代码如上····不知道有无问题?


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


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/9/1 10:33:10 [只看该作者]

问题正在解决中

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


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/9/1 11:00:13 [只看该作者]

orderqueue 的设置无效,这是个内部问题,我无法解答。

 

不断开仓的问题,所然贴出代码,但是是局部的,我无法在运行中调试,所以还是提供解决思路。

Sub APPLICATION_Timer(ID)
 if id = 1 and celue01 = "buy" and ZHUANGTAI01 = false  then//条件成立后,执行下列语句,去持仓量和执行交易,
首先要输出一下Order.HoldingInfoByCode2 这个方法的返回是否正确,返回1为正确执行,执行成功后输出,持仓量信息是否正确,改成如下:
    a=Order.HoldingInfoByCode2(AutoTrade_ID01, MKT01,BuyHoding01,BuyCost01,BuyTodayHoding01,SellHoding01,SellCost01,SellTodayHoding01,PNL01,UseMargin01,800748)
 application.msgout a&"  "&BuyTodayHoding01 //信息核实一下,如果下面是一个自定义的开仓方法的话,楼主提到holding > 0 的时候不允许买入,我没有看到此条件的使用,不知是否放在了方法里面,如果存在,那么就只需要在这里验证返回信息的正确性,不行的话再去下面的方法体中去验证,(还有要验证不断交易的执行语句是否是下列的方法执行所至,也许存在别的语句执行)

call RealTradeBuy(QREN01,AutoTrade_NewP01.caption,AutoTrade_BuyPrice01,AutoTrade_ShouShu01,AutoTrade_ID01,MKT01,BuyTodayHoding01,AutoTrade_ZY01,AutoTrade_ZS01,ZHUANGTAI01)


 end if

由于代码局部,不知我理解是否正确,还是强调楼主,自己试着通过核实参数的方法来调试程序。


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


加好友 发短信
等级:新手上路 帖子:24 积分:109 威望:0 精华:0 注册:2011/7/11 14:08:33
  发帖心情 Post By:2011/9/1 11:25:04 [只看该作者]

 call testTrade(QREN01,AutoTrade_NewP01.caption,AutoTrade_BuyPrice01,AutoTrade_ShouShu01,AutoTrade_ID01,MKT01,BuyTodayHoding01,AutoTrade_ZY01,AutoTrade_ZS01,ZHUANGTAI01)

 

此时已经将 buytodayholding 传入 testtrade()

而 testtrade中的 nowholding 就是持仓 msgbox 没有问题。

 

我买入条件仅是 nowholding = 0的 情况 这样就摒除了任何 holding > 0 的情况。

也就是说我当前的nowholding = 0 才能进行交易


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


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2011/9/1 13:05:34 [只看该作者]

应该使用VBA函数Order.HoldingInfoByCode2获取实际持仓,如果持仓量达到设定的上限,就不再开仓。

 


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


加好友 发短信
等级:新手上路 帖子:24 积分:109 威望:0 精华:0 注册:2011/7/11 14:08:33
  发帖心情 Post By:2011/9/1 13:51:50 [只看该作者]

    call Order.HoldingInfoByCode2(AutoTrade_ID01, MKT01,BuyHoding01,BuyCost01,BuyTodayHoding01,SellHoding01,SellCost01,SellTodayHoding01,PNL01,UseMargin01,800748)

可是我已经call 了 你说的这个holdinginfobycode2 中的实际持仓···并且将这个实际持仓传入 买卖的函数中了···


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