为了方便用Advanced Get分析,我一般用下面这个公式将飞狐的各个周期数据导出到指定的目录,非常方便。现在计划转到金字塔平台上做外盘交易,但这个公式在金字塔上一直编译不过去,请教大家应该如何修改: =================================================== _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; <% 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") If ReportFolderStatus("D:\AGET RT Data") = 0 Then CreatFolder() 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("H4") Case 11 Case Else End Select End Function Function CreateAsciiDataMin(FolderName) 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 = "D:\AGET RT Data\" & FolderName & "\" & "M" & StkNames & ".txt" Set TextStream = FspenTextFile(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 AforeMonth = "0" & 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 = "D:\AGET RT Data\Dayes\" & "A" & StkNames & ".txt" IF ReportFileStatus(FileName) = 0 Then Set TextStream = FspenTextFile(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 = FspenTextFile(FileName, ForReading, False) Do Until TextStream.AtEndOfStream = True TextStream.ReadLine AforeLast = AforeLast+1 Loop TextStream.Close Set TextStream = FspenTextFile(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 Function ReportFolderStatus(FolderDir) Dim Fso, Status Set Fso = CreateObject("Scripting.FileSystemObject") If (Fso.FolderExists(FolderDir)) Then Status = 1 Else Status = 0 End If ReportFolderStatus = Status End Function Function CreatFolder() Dim Fso Set Fso = CreateObject("Scripting.FileSystemObject") Dim Folder Set Folder = Fso.CreateFolder("D:\AGET RT Data") Set Folder = Fso.CreateFolder("D:\AGET RT Data\Year") Set Folder = Fso.CreateFolder("D:\AGET RT Data\Month") Set Folder = Fso.CreateFolder("D:\AGET RT Data\Week") Set Folder = Fso.CreateFolder("D:\AGET RT Data\Dayes") Set Folder = Fso.CreateFolder("D:\AGET RT Data\60min") Set Folder = Fso.CreateFolder("D:\AGET RT Data\30min") Set Folder = Fso.CreateFolder("D:\AGET RT Data\15min") Set Folder = Fso.CreateFolder("D:\AGET RT Data\5min") Set Folder = Fso.CreateFolder("D:\AGET RT Data\H4") End Function %> 0;
金字塔暂时不支持飞狐这种嵌入方式代码, 但支持以自定义函数方式与VBS进行互通。 详情请参看 http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=1284&page=2