Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 39d3489

Browse files
committed
添加多档行情的批量导出功能
1 parent 948ba8b commit 39d3489

File tree

2 files changed

+129
-4
lines changed

2 files changed

+129
-4
lines changed

DataInspector/FormExport.Designer.cs

Lines changed: 35 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

DataInspector/FormExport.cs

Lines changed: 94 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ private void Do(DirectoryInfo di, SearchOption searchOption)
8585

8686
try
8787
{
88-
ExportCSV(f, fi);
88+
ExportToList(f, fi);
8989

9090
AppendText(string.Format("{0} - 成功{1}", fi.FullName, Environment.NewLine));
9191
}
@@ -97,7 +97,7 @@ private void Do(DirectoryInfo di, SearchOption searchOption)
9797
}
9898
}
9999

100-
private void ExportCSV(FileInfo file_input,FileInfo file_output)
100+
private void ExportToList(FileInfo file_input,FileInfo file_output)
101101
{
102102
Stream _stream = new MemoryStream();
103103
// 加载文件,支持7z解压
@@ -107,6 +107,7 @@ private void ExportCSV(FileInfo file_input,FileInfo file_output)
107107
{
108108
using (var zip = new SevenZipExtractor(fileStream))
109109
{
110+
// 只解压了第0个,如果有多个也只解压第一个
110111
zip.ExtractFile(0, _stream);
111112
_stream.Seek(0, SeekOrigin.Begin);
112113
}
@@ -121,7 +122,97 @@ private void ExportCSV(FileInfo file_input,FileInfo file_output)
121122
PbTickCodec codec = new PbTickCodec();
122123
QuantBox.Data.Serializer.PbTickSerializer Serializer = new QuantBox.Data.Serializer.PbTickSerializer();
123124
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+
);
125216
}
126217

127218
private void AppendText(string s)

0 commit comments

Comments
 (0)