以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]VBA中调用条件选股  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=51138)

--  作者:yeyi
--  发布时间:2013/4/17 22:20:10
--  [求助]VBA中调用条件选股

我有一个条件选股:假设为TJXG_A;

我想在VBA中调用运行这个条件选股

,有何办法。

 

不胜感谢!

 

 


--  作者:王锋
--  发布时间:2013/4/17 22:22:30
--  

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指标线数值


--  作者:yeyi
--  发布时间:2013/4/17 22:27:21
--  

但我这个条件选股,范围是全部期货市场的。

 

 


--  作者:yeyi
--  发布时间:2013/4/17 22:34:22
--  

那是否就是

for  I=1 TO TOP  遍历全部品种

 

 

    Set Formula = marketdata.STKINDI(MARKETCODE[I],MARKET,TJXG_A,0,0)

 

 end FOR


--  作者:王锋
--  发布时间:2013/4/17 22:38:23
--  

是的


--  作者:yeyi
--  发布时间:2013/4/18 12:37:37
--  条件选股根本没有运作,是否不能用

条件选股根本没有运作,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

[此贴子已经被作者于2013-4-18 12:38:36编辑过]

--  作者:王锋
--  发布时间:2013/4/18 13:14:56
--  
Set Formula  得到公式对象后,你要自己处理公式的返回值,通过公式返回值来判断哪些是符合选股条件的
--  作者:yeyi
--  发布时间:2013/4/18 14:53:38
--  

我这个条件选股中,有增加个股到板块中的语句(是条件语句嵌套vba),根本没有执行


--  作者:rushtaotao
--  发布时间:2013/4/18 15:12:44
--  

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

 

 

 

 

你遍历一下嘛 符合条件的去添加


--  作者:王锋
--  发布时间:2013/4/18 15:13:02
--  
application.MsgOut 用这条语句多进行调试