我有一个条件选股:假设为TJXG_A;
我想在VBA中调用运行这个条件选股
,有何办法。
不胜感谢!
Stkindi 方法
引用任意品种任意周期的任意指标输出,返回对象Formula。
Stkindi(Code, Market, IndiName, Co, Cyc)
Code 品种代码
Market 市场标识
IndiName 为指标公式调用,格式为 “指标名称(参数)”, 参数选项可以不填,按系统默认处理
Co 为坐标轴类型 0交易日坐标 1自然日 2交易交易时间
Cyc 周期类型,0 1分钟 1 5分钟 2 15分钟 3 30分钟 4 60分钟 5日线 6周线 7月线 8年线 9多日线 10分笔成交 11多小时线 12多秒线 13多分钟线 14季度线 15半年线 16节气线 17 3分钟 18 10分钟 19 多笔线
返回值 返回Formula对象
示例
Set Formula = marketdata.STKINDI("if08","zj","ma(5,10,20,60)",0,0) '调用中金所IF08合约的1分钟的MA移动平均线指标,参数依次是5,10,20,60
mgbox Formula.GetBufData("ma3",924) '显示第925根k线上的MA3指标线数值
但我这个条件选股,范围是全部期货市场的。
那是否就是
for I=1 TO TOP 遍历全部品种
Set Formula = marketdata.STKINDI(MARKETCODE[I],MARKET,TJXG_A,0,0)
end FOR
是的
条件选股根本没有运作,STKINDI是否不能用条件选股,只能用指标
Sub ssmxsjgx_testbutt_Click()
Dim marketName
Dim blocktype(1000)
Dim blockname(1000)
Dim I,TIMAX,J,tnreturn
Dim tcblocktype,tcblockname
Dim tnblockcount
TIMAX=1
blocktype(TIMAX)="上海证券交易所"
blockname(TIMAX)= "上海A股"
TIMAX=TIMAX+1
blocktype(TIMAX)="深证证券交易所"
blockname(TIMAX)= "深圳A股"
TIMAX=TIMAX+1
blocktype(TIMAX)="深证证券交易所"
blockname(TIMAX)= "深证创业"
TIMAX=TIMAX+1
blocktype(TIMAX)="深证证券交易所"
blockname(TIMAX)= "中小企业"
Set b = CreateObject("Stock.Block")
FOR I=1 TO TIMAX
application.MsgOut Date &" " &Time& "条件选股....:"&blocktype(I)&" 名称:"&blockname(I)
call b.open(blockname(I),0)
tnblockcount=b.count
for J=0 TO tnblockcount
TCMARKET=b.GetStockMarket(J)
TCCODE=TCMARKET+b.GetStockCode(J)
Set Formula = marketdata.STKINDI(TCCODE,TCMARKET,"BKGXMR",0,5) 'BKGXMR为公式中的条件选股(非技术指标)
application.MsgOut Date &" " &Time& " "&tccode
next
NEXT
application.MsgOut Date &" " &Time& "条件选股完成!"
End Sub
我这个条件选股中,有增加个股到板块中的语句(是条件语句嵌套vba),根本没有执行
GetReportDataByIndex 方法
得到指定市场指定基于0索引的ReportData对象,该对象用于表示该品种最新行情数据。
GetReportDataByIndex(Market,Index)
Market 市场标识
Index 基于0索引的指定品种,品种数量可由GetReportCount属性获得.
返回值 返回ReportData对象
示例 ‘该示例从郑州市场筛选SR合约得最大持仓量做为主力合约 Sub Test()
Dim MaxCode Dim MaxVolume
'得到市场所有品种 Count = MarketData.GetReportCount("ZQ")
For i = 0 To Count-1 Set Report1 = MarketData.GetReportDataByIndex("ZQ",i) '只处理SR合约 if Left(Report1.Label,2) = "SR" Then '只处理有效合约 if Right(Report1.Label,2) >= "01" And Right(Report1.Label,2) <= "12" Then If Report1.Volume > MaxVolume Then MaxCode = Report1.Label MaxVolume = Report1.Volume End if end if End if Next
'显示成交量最大得合约 MsgBox MaxCode
End Sub |
你遍历一下嘛 符合条件的去添加