等级: 免费版
- 注册:
- 2021-5-20
- 曾用名:
|
楼主 |
发表于 2021-9-6 16:32
|
显示全部楼层
老师这是我的学习成果,VBA应用PEL公式WGF的指标线:BKTJ,SKTJ,BPTJ,SPTJ。然后VB遍历市场找出连续合约(以00结尾的合约),分别应用不同合约周期的BKTJ,SKTJ,BPTJ,SPTJ,当指标BKTJ,SKTJ,BPTJ,SPTJ=1,就写入ini文件。请老师指正,谢谢!
Sub APPLICATION_VBAStart()
call Application.SetTimer(0,1000) '创建一个0号定时器,间隔时间1秒
End Sub
Sub APPLICATION_VBAend()
call Application.KillTimer(0) '创建一个0号定时器,间隔时间1秒
End Sub
Sub APPLICATION_Timer(ID)
if ID = 0 then
'if (cdate(time)<=cdate("11:30:00") and cdate(time)>cdate("9:15:00")) or (cdate(time)<=cdate("15:15:00") and cdate(time)>cdate("13:00:00")) or (cdate(time)<=cdate("2:30:00") and cdate(time)>cdate("21:00:00")) then
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~全市场扫描~~~~~~~~~~~~~~~~~~~~~~~~~~~
'~~~~~~~~~~~~~~~~~~~~~~~以下开始交易~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim marketName
marketName=Array("SQ","DQ","ZQ","ZJ")'此处只查上海及深圳A股"SZ","SH"。不查期货市场"SQ","DQ","ZQ","ZJ",
'找到股票的代码及名称
'股票周期 1:1分钟、2:5分钟、3:15分钟、4:30分钟、5:60分钟 6:日、7:周、8:月、9:年、10:多日、11:多分钟、12:多秒
'13:多小时、14:季度线、15:半年线、16:节气线、17:3分钟、18:10分钟、19:多笔线、20:N日线、21:N分钟线、22:N秒线、23:N笔线、24:N小时线;
dim DateType
DateType=Array(2,3,4,5,6,18)'此处只查上海及深圳A股"SZ","SH"。不查期货市场"SQ","DQ","ZQ","ZJ",
dim markets
For j=0 To UBound(marketName)
Tmarket=marketName(j)'某一市场名称
n=marketData.GetReportCount(Tmarket)'某一市场名称下股票或商品的数量
For i=0 To n-1
Set reportData=marketdata.GetReportDataByIndex(Tmarket,i)'某一市场名称下某种(i号)股票或商品的所有信息(代码、名称等)
if (instr(reportData.Label,"00"))>=0 then'遍历各个市场(交易所),找到连续合约:代码特征包含00字符
Tcode=reportData.Label'股票的老代码
'Set Formula=marketdata.STKINDI("IF08","ZJ","ma(5,10,20,60)",0,0)'调用中金所IF08合约的1分钟的移动平均线指标,参数依次是5、10、20、60
'MsgBox Formula.GetBufData("ma3",924)'显示第925根K线上MA3指标线数值
for j=0 to 4
FORMULANAME="WGF"
APP=FORMULANAME & "_" & Tcode & "_" & j
Set Formula=marketdata.STKINDI(Tcode,Tmarket,FORMULANAME,0,j)
BKTJ=Formula.GetBufData("BKTJ",Formula.DataSize-1) '显示第最后根K线上MA3指标线数值
BPTJ=Formula.GetBufData("BPTJ",Formula.DataSize-1)
SKTJ=Formula.GetBufData("SKTJ",Formula.DataSize-1)
SPTJ=Formula.GetBufData("SPTJ",Formula.DataSize-1)
if BKTJ=1 then
Document.WritePrivateProfileInt("F:\mholding.INI",FORMULANAME,"th",1)'写整型变量到INI文件
'Document.GetPrivateProfileInt("E:\Weisoft Stock(x64)\TESTNINIF.INI",FORMULANAME(),th)'从INI文件中读取整型变量
end if
if SKTJ=1 then
Document.WritePrivateProfileInt("F:\mholding.INI",FORMULANAME,"th",-1)'写整型变量到INI文件
'Document.GetPrivateProfileInt("E:\Weisoft Stock(x64)\TESTNINIF.INI",FORMULANAME(),th)'从INI文件中读取整型变量
end if
if BPTJ=1 then
Document.WritePrivateProfileInt("F:\mholding.INI",FORMULANAME,"th",0)'写整型变量到INI文件
'Document.GetPrivateProfileInt("E:\Weisoft Stock(x64)\TESTNINIF.INI",FORMULANAME(),th)'从INI文件中读取整型变量
end if
if SPTJ=1 then
Document.WritePrivateProfileInt("F:\mholding.INI",FORMULANAME,"th",0)'写整型变量到INI文件
'Document.GetPrivateProfileInt("E:\Weisoft Stock(x64)\TESTNINIF.INI",FORMULANAME(),th)'从INI文件中读取整型变量
end if
next
set Formula=nothing
end if
Next
Next
'end if
end if
end sub |
|