以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请帮忙修改一个导出数据的VBS公式  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=3158)

--  作者:cq2698
--  发布时间:2010/10/8 17:45:02
--  请帮忙修改一个导出数据的VBS公式

_Barpos := BARPOS;
       _Year := YEAR;
      _Month := MONTH;
        _Day := DAY;
   _Datatype := DATATYPE;
_Marketlabel := MARKETLABEL;
    _StkName := STKLABEL;
       _Open := OPEN;
       _High := HIGH;
        _Low := LOW;
      _Close := CLOSE;
        _Vol := VOL;
     _Amount := AMOUNT; 

<%

Sub create(fso,path)
If fso.FolderExists(path) Then
Exit Sub
End If
If Not fso.FolderExists(fso.GetParentFolderName(path)) Then
create fso,fso.GetParentFolderName(path)
End If
fso.CreateFolder(path)
End Sub

Set fso = CreateObject("scripting.filesystemobject")
outputf = "d:\\Get\\TEXT\\"  \'修改成你所要输出的绝对路径
\' 注意:1.不能缺少最后的"\\"号
\'      2.注意输出目录的关系必须保证在此目录的上一级目录存在GET.EXE,确保调用无误
\'      3.请自行设置AGET的输入目录为此目录
create fso,outputf
set fso = Nothing

Dim Marketlabels,Stknames,Datatypes,Opens,Highs,Lows,Closes,Vols,Amounts,Years,Months,Days
     Barposes = ffl.vardata("_Barpos")
        Years = ffl.vardata("_Year")
       Months = ffl.vardata("_Month")
         Days = ffl.vardata("_Day")
    Datatypes = ffl.vardata("_Datatype")
Marketlabels = ffl.vardata("_Marketlabel")
     Stknames = ffl.vardata("_Stkname")
        Opens = ffl.vardata("_Open")
        Highs = ffl.vardata("_High")
         Lows = ffl.vardata("_Low")
       Closes = ffl.vardata("_Close")
         Vols = ffl.vardata("_Vol")
      Amounts = ffl.vardata("_Amount")

SelectCreatAsciiDataType(Datatypes)

Function SelectCreatAsciiDataType(Types)
        Select Case Types
                Case 0

                Case 1
                        Call CreateAsciiDataMin("-1min-")                       
                Case 2
                        Call CreateAsciiDataMin("-5min-")                       
                Case 3
                        Call CreateAsciiDataMin("-15min-")                       
                Case 4
                        Call CreateAsciiDataMin("-30min-")                       
                Case 5
                        Call CreateAsciiDataMin("-60min-")
                Case 6
                        Call CreateAsciiDataDayes()
                Case 7
                        Call CreateAsciiDataMin("-Week-")                       
                Case 8
                        Call CreateAsciiDataMin("-Month-")                       
                Case 9
                        Call CreateAsciiDataMin("-Year-")                       
                Case 10
                        Call CreateAsciiDataMin("-MDay-")
                Case 11
                        Call CreateAsciiDataMin("-MMin-")
                Case 12
                        Call CreateAsciiDataMin("-MSec-")
                Case Else

                End Select
End Function

Function CreateAsciiDataMin(FolderName)


 


--  作者:cq2698
--  发布时间:2010/10/8 17:45:41
--  

Const ForReading = 1, ForWriting = 2, ForAppending = 8
        Const TristateTrue = -1,TristateFalse = 0,TristateUseDefault = -2
        Dim Fso,FileName,TextStream,LineData,ArrayLast,LastDate,AforeDate,AforeYear,AforeMonth,AforeDay
        Set Fso = CreateObject("Scripting.FileSystemObject")
        FileName = outputf & StkNames & FolderName & ".txt"
        Set TextStream = Fso.OpenTextFile(FileName, ForWriting, True)
        ArrayLast = Ubound(Barposes)
        LastDate = Years(ArrayLast) & "-" & Months(ArrayLast) & "-" & Days(ArrayLast)
        For i = 0 To ArrayLast
                AforeDate = DateAdd("d",(i-ArrayLast),LastDate)
                AforeYear = Year(AforeDate)
                AforeMonth = Month(AforeDate)
               \' If Len(AforeMonth) = 1 Then AforeM & AforeMonth
                AforeDay = Day(AforeDate)
                If Len(AforeDay) = 1 Then AforeDay = "0" & AforeDay
                Opens(i) = FormatNumber(Opens(i),3,,,TristateFalse)
                Highs(i) = FormatNumber(Highs(i),3,,,TristateFalse)
                Lows(i) = FormatNumber(Lows(i),3,,,TristateFalse)
                Closes(i) = FormatNumber(Closes(i),3,,,TristateFalse)
            Vols(i) = FormatNumber(Vols(i),3,,,TristateFalse)
                Amounts(i) = FormatNumber(Amounts(i),3,,,TristateFalse)
                LineData = AforeYear & "0" & AforeMonth & "0" & AforeDay & " " & Opens(i) & " " & Highs(i) & " " & Lows(i) & " " & Closes(i) & " " & Vols(i) & " " & Amounts(i)
                TextStream.WriteLine LineData
        Next
        TextStream.Close
End Function

Function CreateAsciiDataDayes()
        Const ForReading = 1, ForWriting = 2, ForAppending = 8
        Const TristateTrue = -1,TristateFalse = 0,TristateUseDefault = -2
        Dim i,Fso,FileName,TextStream,LineData,AforeLast,ArrayLast
        Set Fso = CreateObject("Scripting.FileSystemObject")
        FileName = outputf & StkNames & "-Day-" & ".txt"
        IF ReportFileStatus(FileName) = 0 Then
                Set TextStream = Fso.OpenTextFile(FileName,ForWriting,True)
                ArrayLast = Ubound(Barposes)
                For i = 0 To ArrayLast
                        If Len(Months(i)) = 1 Then Months(i) = "0" & Months(i)
                        If Len(Days(i)) = 1 Then Days(i) = "0" & Days(i)
                        Opens(i) = FormatNumber(Opens(i),3,,,TristateFalse)
                        Highs(i) = FormatNumber(Highs(i),3,,,TristateFalse)
                        Lows(i) = FormatNumber(Lows(i),3,,,TristateFalse)
                        Closes(i) = FormatNumber(Closes(i),3,,,TristateFalse)
                        Vols(i) = FormatNumber(Vols(i),3,,,TristateFalse)
                        Amounts(i) = FormatNumber(Amounts(i),3,,,TristateFalse)
                        LineData = Years(i) & "0" & Months(i) & "0" & Days(i) & " " & Opens(i) & " " & Highs(i) & " " & Lows(i) & " " & Closes(i) & " " & Vols(i) & " " & Amounts(i)
                        TextStream.WriteLine LineData
                Next
                TextStream.Close
        ElseIf ReportFileStatus(FileName) = 1 Then
                AforeLast = 0
                Set TextStream = Fso.OpenTextFile(FileName, ForReading, False)
                Do Until TextStream.AtEndOfStream = True
                TextStream.ReadLine
                AforeLast = AforeLast+1
                Loop
                TextStream.Close
                Set TextStream = Fso.OpenTextFile(FileName,ForAppending,False)
                ArrayLast = Ubound(Barposes)
                For i = AforeLast To ArrayLast
                        If Len(Months(i)) = 1 Then Months(i) = "0" & Months(i)
                        If Len(Days(i)) = 1 Then Days(i) = "0" & Days(i)
                        Opens(i) = FormatNumber(Opens(i),3,,,TristateFalse)
                        Highs(i) = FormatNumber(Highs(i),3,,,TristateFalse)
                        Lows(i) = FormatNumber(Lows(i),3,,,TristateFalse)
                        Closes(i) = FormatNumber(Closes(i),3,,,TristateFalse)
                        Vols(i) = FormatNumber(Vols(i),3,,,TristateFalse)
                        Amounts(i) = FormatNumber(Amounts(i),3,,,TristateFalse)
                        LineData = Years(i) & "0" & Months(i) & "0" & Days(i) & " " & Opens(i) & " " & Highs(i) & " " & Lows(i) & " " & Closes(i) & " " & Vols(i) & " " & Amounts(i)
                        TextStream.WriteLine LineData
                Next
                TextStream.Close
        End If       
End Function

Function ReportFileStatus(Filespec)
        Dim Fso, Status
        Set Fso = CreateObject("Scripting.FileSystemObject")
        If (Fso.FileExists(Filespec)) Then
                Status = 1
        Else
                Status = 0
        End If
        ReportFileStatus = Status
End Function

 

%>
0;


--  作者:admin
--  发布时间:2010/10/8 20:05:25
--  

已经帮你修正,上面的送色代码位置。原先的代码有语法错误导致不能运行。

工作时会在D:\\GET\\TEXT目录导出文本数据


--  作者:cq2698
--  发布时间:2010/10/8 20:39:47
--  
老师导出只生成1个品种其它不行导出txt文件在get中只有1个其它不出来.生成这样1000001-5min-....1000001-30min-...1000001-Day-前面那个100001不对没有合约名能改下吗
--  作者:cq2698
--  发布时间:2010/10/8 20:52:58
--  

飞狐导出是这样c05-Day- c09-Day- ER05-Day- m05-Day- WSY05-Day-有合约名

现在导出是1000001-Day没有合约名


--  作者:admin
--  发布时间:2010/10/8 21:32:00
--  
目前还不支持字符串变量的VBS公式传递
--  作者:cq2698
--  发布时间:2010/10/8 21:38:00
--  
能不能解决老师.问题就在合约名上
--  作者:cq2698
--  发布时间:2010/10/9 9:36:04
--  

改了的不行K线是乱的