以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  交易策略发布专区  (http://weistock.com/bbs/list.asp?boardid=10)
----  【VBA策略】自动新股申购源码共享  (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=153080)

--  作者:道飞
--  发布时间:2017/5/16 22:50:39
--  【VBA策略】自动新股申购源码共享
您是否为了记住每天都要查看都有哪些新股需要发行而烦恼呢,是否会因为忘记申购发行的新股而懊恼呢?从现在开始就不用怕啦,金字塔已经全面支持股票的自动化操作了,有了这个强大的工具,为啥该机器去做的事情,还要人工的去搞呢。

该VBA代码仅限4.2正式版或更高版本支持

Dim NewStockStatus \'该标志用来标记属于VBA的查询,防止手工查询新股申购时自动申购
NewStockStatus = 0

Sub APPLICATION_Timer(ID)
If Id = 0 Then
If Time = "09:45:00" Then
\'执行新股申购查询
NewStockStatus = 1
Order.ReqNewStockInfo ""
End If
If Time = "09:46:00" Then
\'一分钟后停止标记
NewStockStatus = 0
End If
If Time = "09:50:00" Then
\'查询是否中签
Order.ReqNewStockLotInfo ""
End If
End If
End Sub


Sub APPLICATION_VBAStart()
Application.SetTimer 0,1000
End Sub

Sub ORDER_ActionNotify(Types, Account, Data)
If Types = 2 And Data > 0 And NewStockStatus = 1 Then
   \'当新股申购查询返回直接处理申购事宜
NewStockPleaceOrder(Data)
End If
If Types = 3 And Data > 0 Then
\'当查询到中签新股后,触发语音播报消息
SpkSound
End If
End Sub

\'该过程对已经查询过的当日可申购新股做自动申购操作
Sub NewStockPleaceOrder(Count)
Dim Code
Dim Name
Dim Market
Dim Price
Dim Upperlimit
Dim Lowerlimit

NewSize = Count
For I = 0 To NewSize - 1
Ret = Order.GetNewStockInfo(i,"",Code,Name,Market,Price,Upperlimit,Lowerlimit)
If Ret = 1 Then
    \'满额申购新股
MaxVol = Order.GetNewStockMaxVol("",Market)
If MaxVol > 0 Then
call Order.PleaceOrderNewStock(Code,Market,Price,MaxVol,"")
Application.MsgOut "已经处理新股委托"&Code&"--"&Name
End If
Set Code = NoThing
Set Name = NoThing
Set Market = NoThing
End If
Next
End Sub

Sub SpkSound
  Set Spk = CreateObject("SAPI.SpVoice")
  Spk.Speak "恭喜您,新股中签啦"
  Set Spk = nothing
  Application.PlaySoundFile "OptimizeComplete.wav"
End Sub
var reload=1;
--  作者:guotx2010
--  发布时间:2017/12/14 10:04:14
--  
这个代码,我测试了,没有成功,请问有人成功了吗?
--  作者:无为剑
--  发布时间:2017/12/14 11:49:51
--  

不成功要看具体什么情况了。

你要具体调试一下后才能知晓


--  作者:guotx2010
--  发布时间:2017/12/14 12:38:25
--  
我调试了,返回的MaxVol为0,可是我账户一直有持仓,是满足新股申购条件的,用这个不行,用别的软件申购可以的。
--  作者:无为剑
--  发布时间:2017/12/14 22:06:43
--  

范例查询申购数量的参数填反了,已经修正


--  作者:guotx2010
--  发布时间:2017/12/29 8:15:13
--  
call Order.PleaceOrderNewStock(Code,Market,Price,MaxVol,"")这一句中的maxVol也不对的,不是市场可以申购的最大数,而是本股票可以申购的最大数,也就是UpperLimit。
--  作者:hj007s
--  发布时间:2018/1/5 14:11:39
--  
这个范例哪可以加入申购时间?就是我决定申购的下单的时间
--  作者:无为剑
--  发布时间:2018/1/5 15:38:36
--  

代码范例上有时间,范例是9:45开始申购,你可以自己改