欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 等价K线代码(原创)

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有34802人关注过本帖树形打印复制链接

主题:等价K线代码(原创)

帅哥哟,离线,有人找我吗?
明心
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:274 积分:841 威望:0 精华:10 注册:2010/7/12 15:25:05
等价K线代码(原创)  发帖心情 Post By:2013/4/3 14:14:54 [只看该作者]


'-------------------------------------------------------------等价K开始---------------------------------------------------

dim shanchu
shanchu = 0     '是否删除历史数据,1为需要

dim dangtianshuju '当日是否有数据,0为没有
dangtianshuju = 1

dim bili 
bili = 0.001    '等价线区间

dim xinheyue
xinheyue = "IF88"  '新等价K合约代码
dim xinmingcheng
xinmingcheng = "IF等价K线" '新等价K合约名称
dim xinshichang
xinshichang = "ZJ" '新等价K合约市场

dim laoheyue
laoheyue = "IF00" '标的合约代码
dim laoshichang
laoshichang = "ZJ" '标的合约市场
dim laozhishu
laozhishu = "IF13"

Sub lishishuju()

    '查询品种是否存在,不存在则新建
    cunzai = marketdata.IsExistStock(xinheyue,xinshichang)
    if cunzai = 0 then
       call marketdata.AddStock(xinheyue,xinshichang, xinmingcheng) 
       application.MsgOut "等价K线【创建成功】!"
    else
       application.MsgOut "等价K线【已经存在】!"
    end if

    
    '等价区间处理 
    set Report1 = marketdata.GetReportData(laoheyue,laoshichang)    
    qj = Report1.Open*bili
 
    
    '删除历史数据,创建第一根K线
    if shanchu = 1 then     
       Set History1 = marketdata.GetHistoryData(xinheyue,xinshichang,0)     
       for j = 0 to History1.Count-1
       History1.RemoveAt(j)
       next    
       call History1.InsertAt(0)
       History1.open(0) = Report1.Open
       History1.close(0) = Report1.Open
       History1.high(0) = Report1.Open
       History1.low(0) = Report1.Open
       History1.Date(0) = Report1.Date
       History1.Volume(0) = Report1.Volume
       History1.OpenInt(0) = Report1.OpenInt
       call History1.SaveData(xinheyue,xinshichang,1)        
       application.MsgOut "等价K线【历史数据初始化】成功!"
    end if
              
    set minutedata = marketdata.GetMinuteData(laoheyue,laoshichang)
    Count =  minutedata.Count
    
    
    for i = 1 to count-1 
    
        Set History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0)      
        mxopen = History2.open(History2.Count-1)
        mxclose = History2.close(History2.Count-1)
        mxhigh = History2.high(History2.Count-1)
        mxlow = History2.low(History2.Count-1)
        mxDate = History2.Date(History2.Count-1)
        mxVolume = History2.Volume(History2.Count-1)
        mxOpenInt = History2.OpenInt(History2.Count-1)
        

        close = minutedata.newprice(i)
        fbDate = minutedata.Date(i)      
        Volume = minutedata.Volume(i)
        mxVolume = minutedata.Volume(i-1)
        OpenInt = minutedata.OpenInt(i)
        if close > mxhigh then mxhigh = close end if
        if close < mxlow  then mxlow = close end if
        mxdate = fbDate
        mxxVolume = (Volume-mxVolume)+mxxVolume
        mxOpenInt = OpenInt
        
        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = mxhigh
        History2.low(History2.Count-1) = mxlow
        History2.Date(History2.Count-1) = mxdate  
        History2.Volume(History2.Count-1) = mxxVolume  
        History2.OpenInt(History2.Count-1) = mxOpenInt 
        call History2.SaveData(xinheyue,xinshichang,1)
       
        if abs(close-mxopen) > qj then
        '新建一个K线       
        call History2.InsertAt(History2.Count)
        History2.open(History2.Count-1) = close
        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = close
        History2.low(History2.Count-1) = close
        History2.Date(History2.Count-1) = mxdate  
        History2.Volume(History2.Count-1) = 0   
        History2.OpenInt(History2.Count-1) = OpenInt  
        call History2.SaveData(xinheyue,xinshichang,1)   
        mxxVolume = 0 
        end if
        
     next

End Sub

sub dengjiaK()‘第一次用的时候请先运行改宏创建等价K线数据
     call lishishuju()
end sub

Sub APPLICATION_VBAStart()
    call Application.SetTimer(0,1000) '创建一个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")) then  
   
      '等价区间处理    
      set Report1 = marketdata.GetReportData(laoheyue,laoshichang)
         qj = Report1.Open*bili
         
      set Report2 = marketdata.GetReportData(laozhishu,laoshichang)  
               
        Set History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0)      
        mxopen = History2.open(History2.Count-1)
        mxclose = History2.close(History2.Count-1)
        mxhigh = History2.high(History2.Count-1)
        mxlow = History2.low(History2.Count-1)
        mxDate = History2.Date(History2.Count-1)
        mxxVolume = History2.Volume(History2.Count-1)
        mxOpenInt = History2.OpenInt(History2.Count-1)
        
        set minutedata = marketdata.GetMinuteData(laoheyue,laoshichang)
        Count =  minutedata.Count     
        
    
        close = minutedata.newprice(Count-1)
        fbDate = minutedata.Date(Count-1) 
        mxVolume = minutedata.Volume(Count-2)
        Volume = minutedata.Volume(Count-1)
        OpenInt = minutedata.OpenInt(Count-1)
        if close > mxhigh then mxhigh = close end if
        if close < mxlow  then mxlow = close end if
        mxdate = fbDate
        mxxVolume = mxxVolume+(Volume-mxVolume)
        mxOpenInt =OpenInt
'        application.MsgOut mxxVolume&" "&Volume&" "&Volume-mxVolume
        

        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = mxhigh
        History2.low(History2.Count-1) = mxlow
        History2.Date(History2.Count-1) = mxdate  
        History2.Volume(History2.Count-1) = mxxVolume  
        History2.OpenInt(History2.Count-1) = mxOpenInt  
        call History2.SaveData(xinheyue,xinshichang,1)
       
        if abs(close-mxopen) > qj then
        '新建一个K线       
        call History2.InsertAt(History2.Count)
        History2.open(History2.Count-1) = close
        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = close
        History2.low(History2.Count-1) = close
        History2.Date(History2.Count-1) = mxdate  
        History2.Volume(History2.Count-1) = 0  
        History2.OpenInt(History2.Count-1) = OpenInt
        call History2.SaveData(xinheyue,xinshichang,1)
        mxxVolume = 0
        end if
        
     call Application.ActivateFrameWithCode("Technic",xinheyue,xinshichang,0)
     call Technic.Refresh      
    end if 
   
    
    
    end if 
  
end sub

Sub to_0()

'得到上期所指定品种的日线数据
Set History = marketdata.GetHistoryData("IF88","ZJ",0)
'删掉第一条数据
for i=0 to History.Count-1
History.Volume(i) = 0
next

call History.SaveData("IF88","ZJ",1)




End Sub


[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/4/3 14:19:51 [只看该作者]

好东西

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/3 14:33:19 [只看该作者]

图片点击可在新窗口打开查看


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
明心
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:274 积分:841 威望:0 精华:10 注册:2010/7/12 15:25:05
  发帖心情 Post By:2013/4/3 14:35:49 [只看该作者]

上效果图
图片点击可在新窗口打开查看

 回到顶部
美女呀,离线,留言给我吧!
xian_0_9
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 BOO
等级:论坛游民 帖子:378 积分:1856 威望:0 精华:0 注册:2010/1/25 18:04:12
  发帖心情 Post By:2013/4/3 15:22:26 [只看该作者]

..这样的代码放在哪用呢

 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/4/7 14:58:07 [只看该作者]

不错的。

 回到顶部
帅哥哟,离线,有人找我吗?
梦想
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:92 积分:395 威望:0 精华:0 注册:2012/1/8 12:56:27
  发帖心情 Post By:2013/4/7 21:59:01 [只看该作者]

超级牛的

 回到顶部
美女呀,离线,留言给我吧!
jiangsen
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:992 积分:4305 威望:0 精华:0 注册:2012/8/3 10:50:38
  发帖心情 Post By:2013/4/14 14:57:00 [只看该作者]

有什么用呢?

 回到顶部
帅哥哟,离线,有人找我吗?
sxpms
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:109 积分:360 威望:0 精华:0 注册:2011/7/9 18:05:33
  发帖心情 Post By:2013/4/15 22:18:35 [只看该作者]

看起来很美丽,慢慢研究一下。

 回到顶部
帅哥哟,离线,有人找我吗?
老树新芽
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:58 积分:227 威望:0 精华:0 注册:2011/12/21 19:59:25
  发帖心情 Post By:2013/4/17 0:51:22 [只看该作者]

极度佩服中。我也想自制窗格,自制K线图,不见得是等价的思路,然后可直接加载公式,可回撤,可刷新,可交易。苦于一点VBA基础都没有,现看到一线曙光了。

 回到顶部
总数 36 1 2 3 4 下一页