Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]VBA中调用条件选股

1楼
yeyi 发表于:2013/4/17 22:20:10

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

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

,有何办法。

 

不胜感谢!

 

 

2楼
王锋 发表于: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指标线数值

3楼
yeyi 发表于:2013/4/17 22:27:21

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

 

 

4楼
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

5楼
王锋 发表于:2013/4/17 22:38:23

是的

6楼
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编辑过]
7楼
王锋 发表于:2013/4/18 13:14:56
Set Formula  得到公式对象后,你要自己处理公式的返回值,通过公式返回值来判断哪些是符合选股条件的
8楼
yeyi 发表于:2013/4/18 14:53:38

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

9楼
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

 

 

 

 

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

10楼
王锋 发表于:2013/4/18 15:13:02
application.MsgOut 用这条语句多进行调试
共11 条记录, 每页显示 10 条, 页签: [1] [2]


Powered By Dvbbs Version 8.3.0
Processed in 0.02734 s, 2 queries.