您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

金字塔等价K线源码 [金字塔]

  • 金字塔等价K线源码内容:


    dim shanchushanchu = 0     '是否删除历史数据,1为需要
    dim dangtianshuju '当日是否有数据,0为没有dangtianshuju = 1
    dim bili bili = 0.001    '等价线区间
    dim xinheyuexinheyue = "IF88"  '新等价K合约代码dim xinmingchengxinmingcheng = "IF等价K线" '新等价K合约名称dim xinshichangxinshichang = "ZJ" '新等价K合约市场
    dim laoheyuelaoheyue = "IF00" '标的合约代码dim laoshichanglaoshichang = "ZJ" '标的合约市场dim laozhishulaozhishu = "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-1History.Volume(i) = 0next
    call History.SaveData("IF88","ZJ",1)



    End Sub
     

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  有需要帮忙请点击这里留言!!!进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容