@@ -85,7 +85,7 @@ private void Do(DirectoryInfo di, SearchOption searchOption)
85
85
86
86
try
87
87
{
88
- ExportCSV ( f , fi ) ;
88
+ ExportToList ( f , fi ) ;
89
89
90
90
AppendText ( string . Format ( "{0} - 成功{1}" , fi . FullName , Environment . NewLine ) ) ;
91
91
}
@@ -97,7 +97,7 @@ private void Do(DirectoryInfo di, SearchOption searchOption)
97
97
}
98
98
}
99
99
100
- private void ExportCSV ( FileInfo file_input , FileInfo file_output )
100
+ private void ExportToList ( FileInfo file_input , FileInfo file_output )
101
101
{
102
102
Stream _stream = new MemoryStream ( ) ;
103
103
// 加载文件,支持7z解压
@@ -107,6 +107,7 @@ private void ExportCSV(FileInfo file_input,FileInfo file_output)
107
107
{
108
108
using ( var zip = new SevenZipExtractor ( fileStream ) )
109
109
{
110
+ // 只解压了第0个,如果有多个也只解压第一个
110
111
zip . ExtractFile ( 0 , _stream ) ;
111
112
_stream . Seek ( 0 , SeekOrigin . Begin ) ;
112
113
}
@@ -121,7 +122,97 @@ private void ExportCSV(FileInfo file_input,FileInfo file_output)
121
122
PbTickCodec codec = new PbTickCodec ( ) ;
122
123
QuantBox . Data . Serializer . PbTickSerializer Serializer = new QuantBox . Data . Serializer . PbTickSerializer ( ) ;
123
124
List < PbTickView > list = Serializer . Read2View ( _stream ) ;
124
-
125
+ ListToCSV ( list , file_output ) ;
126
+ }
127
+
128
+ private static string [ ] CSVHeaderLine = { "TradingDay" , "ActionDay" , "Time" , "LastPrice" , "Volume" , "OpenInterest" , "Turnover" , "AveragePrice" } ;
129
+ private static string [ ] CSVHeaderLineEx = { "BidPrice" , "BidSize" , "AskPrice" , "AskSize" } ;
130
+
131
+ private void ListToCSV ( List < PbTickView > list , FileInfo file_output )
132
+ {
133
+ using ( TextWriter stream = new StreamWriter ( file_output . FullName ) )
134
+ {
135
+ StringBuilder data = new StringBuilder ( ) ;
136
+ // 头行第一部分
137
+ for ( int i = 0 ; i < CSVHeaderLine . Length ; ++ i )
138
+ {
139
+ data . Append ( CSVHeaderLine [ i ] ) ;
140
+ data . Append ( "," ) ;
141
+ }
142
+ // 第二部分根据档位计算
143
+ for ( int i = 1 ; i <= numericUpDown_DepthLevel . Value ; ++ i )
144
+ {
145
+ foreach ( var s in CSVHeaderLineEx )
146
+ {
147
+ data . Append ( s ) ;
148
+ data . Append ( i ) ;
149
+ data . Append ( "," ) ;
150
+ }
151
+ }
152
+ stream . WriteLine ( data ) ;
153
+
154
+ foreach ( var l in list )
155
+ {
156
+ stream . Write ( string . Format ( "{0},{1},{2},{3},{4},{5},{6},{7}," ,
157
+ l . TradingDay ,
158
+ l . ActionDay ,
159
+ getTime ( l ) ,
160
+ l . LastPrice ,
161
+ l . Volume ,
162
+ l . OpenInterest ,
163
+ l . Turnover ,
164
+ l . AveragePrice
165
+ ) ) ;
166
+ StringBuilder s = new StringBuilder ( ) ;
167
+ for ( int i = 0 ; i < numericUpDown_DepthLevel . Value ; ++ i )
168
+ {
169
+ int count = l . DepthList == null ? 0 : l . DepthList . Count ;
170
+ if ( count > 0 )
171
+ {
172
+ int AskPos = DepthListHelper . FindAsk1Position ( l . DepthList , l . AskPrice1 ) ;
173
+ int BidPos = AskPos - 1 ;
174
+ if ( BidPos - i >= 0 )
175
+ {
176
+ s . Append ( l . DepthList [ BidPos - i ] . Price ) ;
177
+ s . Append ( "," ) ;
178
+ s . Append ( l . DepthList [ BidPos - i ] . Size ) ;
179
+ s . Append ( "," ) ;
180
+ }
181
+ else
182
+ {
183
+ s . Append ( ",," ) ;
184
+ }
185
+ if ( AskPos + i < count )
186
+ {
187
+ s . Append ( l . DepthList [ AskPos + i ] . Price ) ;
188
+ s . Append ( "," ) ;
189
+ s . Append ( l . DepthList [ AskPos + i ] . Size ) ;
190
+ s . Append ( "," ) ;
191
+ }
192
+ else
193
+ {
194
+ s . Append ( ",," ) ;
195
+ }
196
+ }
197
+ else
198
+ {
199
+ s . Append ( ",,,," ) ;
200
+ }
201
+ }
202
+ stream . WriteLine ( s ) ;
203
+ }
204
+ stream . Close ( ) ;
205
+ }
206
+ }
207
+
208
+ private static string getTime ( PbTickView pbTickView )
209
+ {
210
+ return String . Format ( "{0}:{1}:{2}.{3}" ,
211
+ ( pbTickView . Time_HHmm / 100 ) . ToString ( "D2" ) ,
212
+ ( pbTickView . Time_HHmm % 100 ) . ToString ( "D2" ) ,
213
+ ( pbTickView . Time_____ssf__ / 10 ) . ToString ( "D2" ) ,
214
+ ( ( pbTickView . Time_____ssf__ % 10 ) * 100 + pbTickView . Time________ff ) . ToString ( "D3" )
215
+ ) ;
125
216
}
126
217
127
218
private void AppendText ( string s )
0 commit comments