I want to grab chart data from a local Lean backtest and show in a Form using a charting library I have.
Researching chart data in BacktestResultPacket got me really confused. So I created a dump from chart data to make things a bit clearer. But unfortunately that didn't make things any clearer at all. So now I need info on how to interpret chart data so I can display my own pretty charts.
There are what to me looks like multiple anomalies in the chart data:
- Datapoints for saturdays are included in the data for all series, and the value for saturday is the same as for the next day with tradebars data.
- For the series with type Candle, there are 2 exactly identical data points for each date.
- For series with type Candle, there seems to be an extra data point at the end of the list, in addition to the extra datapoint for each day mentioned above.
- The series 'Daily Performance', shows a performance percentage for saturdays, but 0 performance for mondays (or first day with tradebars after saturday).
Maybe the problem is in my dump code, which I have included after the dump itself below. Otherwise, you might want to investigate this further.
I have the following questions I need help with:
Q1: Can the ChartPoint.x timestamp be translated to a DateTime by using Time.UnixTimeStampToDateTime() as I have done it in TimestampAndDateTimeToString() and then directly use this DateTime as x-axis in my charts. Or does this have to be adjusted for timezone or something else?
Q2: How can I generate OHLC Candles using the data in a Candle series? (I realize two datapoints for each day can generate a kind of candle with Open and Close. But thats really a bar, not a candle. And the values should not both be the same, right?)
Q3: How should I handle data for saturdays in all the series?
Q4: How should I handle the extra day at the end of Candle series?
Q5: What to do about performance for saturdays but none for mondays?
Lean Chart data dump:
2016-06-17 14:59:21 - LeanChartsDumper.Dump() to file: LeanChartsDump.txt
==============================================================
Algorithm: BasicTemplateAlgorithm
Symbol: SPY
PeriodStart: 2015-01-02 00:00:00
PeriodFinish: 2015-12-31 23:59:59
---------------------------------------
Chart name: Benchmark
Series name:Benchmark Index:0 Type:Line Unit:$ Values.Count:308
[0] x:1420156800 = 2015-01-02 00:00:00 (Friday) y:0
[1] x:1420243200 = 2015-01-03 00:00:00 (Saturday) y:203,5083
[2] x:1420416000 = 2015-01-05 00:00:00 (Monday) y:203,5083
[3] x:1420502400 = 2015-01-06 00:00:00 (Tuesday) y:199,8332
[4] x:1420588800 = 2015-01-07 00:00:00 (Wednesday) y:197,9509
[5] x:1420675200 = 2015-01-08 00:00:00 (Thursday) y:200,4175
[6] x:1420761600 = 2015-01-09 00:00:00 (Friday) y:203,974
[7] x:1420848000 = 2015-01-10 00:00:00 (Saturday) y:202,3395
[8] x:1421020800 = 2015-01-12 00:00:00 (Monday) y:202,3395
[9] x:1421107200 = 2015-01-13 00:00:00 (Tuesday) y:200,7544
[10] x:1421193600 = 2015-01-14 00:00:00 (Wednesday) y:200,1898
[11] x:1421280000 = 2015-01-15 00:00:00 (Thursday) y:198,9812
[12] x:1421366400 = 2015-01-16 00:00:00 (Friday) y:197,1584
[13] x:1421452800 = 2015-01-17 00:00:00 (Saturday) y:199,744
[14] x:1421712000 = 2015-01-20 00:00:00 (Tuesday) y:199,744
[15] x:1421798400 = 2015-01-21 00:00:00 (Wednesday) y:200,1699
[16] x:1421884800 = 2015-01-22 00:00:00 (Thursday) y:201,1804
[17] x:1421971200 = 2015-01-23 00:00:00 (Friday) y:204,1722
[18] x:1422057600 = 2015-01-24 00:00:00 (Saturday) y:203,0528
[19] x:1422230400 = 2015-01-26 00:00:00 (Monday) y:203,0528
[20] x:1422316800 = 2015-01-27 00:00:00 (Tuesday) y:203,5282
[21] x:1422403200 = 2015-01-28 00:00:00 (Wednesday) y:200,8436
[22] x:1422489600 = 2015-01-29 00:00:00 (Thursday) y:198,2678
[23] x:1422576000 = 2015-01-30 00:00:00 (Friday) y:200,1006
[24] x:1422662400 = 2015-01-31 00:00:00 (Saturday) y:197,5843
[25] x:1422835200 = 2015-02-02 00:00:00 (Monday) y:197,5843
[26] x:1422921600 = 2015-02-03 00:00:00 (Tuesday) y:200,0312
[27] x:1423008000 = 2015-02-04 00:00:00 (Wednesday) y:202,9239
[28] x:1423094400 = 2015-02-05 00:00:00 (Thursday) y:202,1512
[29] x:1423180800 = 2015-02-06 00:00:00 (Friday) y:204,1919
[30] x:1423267200 = 2015-02-07 00:00:00 (Saturday) y:203,6273
[31] x:1423440000 = 2015-02-09 00:00:00 (Monday) y:203,6273
[32] x:1423526400 = 2015-02-10 00:00:00 (Tuesday) y:202,7159
[33] x:1423612800 = 2015-02-11 00:00:00 (Wednesday) y:204,8754
[34] x:1423699200 = 2015-02-12 00:00:00 (Thursday) y:204,9943
[35] x:1423785600 = 2015-02-13 00:00:00 (Friday) y:206,9657
[36] x:1423872000 = 2015-02-14 00:00:00 (Saturday) y:207,8177
[37] x:1424131200 = 2015-02-17 00:00:00 (Tuesday) y:207,8177
[38] x:1424217600 = 2015-02-18 00:00:00 (Wednesday) y:208,1447
[39] x:1424304000 = 2015-02-19 00:00:00 (Thursday) y:208,1645
[40] x:1424390400 = 2015-02-20 00:00:00 (Friday) y:208,0158
[41] x:1424476800 = 2015-02-21 00:00:00 (Saturday) y:209,2641
[42] x:1424649600 = 2015-02-23 00:00:00 (Monday) y:209,2641
[43] x:1424736000 = 2015-02-24 00:00:00 (Tuesday) y:209,2344
[44] x:1424822400 = 2015-02-25 00:00:00 (Wednesday) y:209,8287
[45] x:1424908800 = 2015-02-26 00:00:00 (Thursday) y:209,6505
[46] x:1424995200 = 2015-02-27 00:00:00 (Friday) y:209,4028
[47] x:1425081600 = 2015-02-28 00:00:00 (Saturday) y:208,6895
[48] x:1425254400 = 2015-03-02 00:00:00 (Monday) y:208,6895
[49] x:1425340800 = 2015-03-03 00:00:00 (Tuesday) y:210,0071
:
[258] x:1446595200 = 2015-11-04 00:00:00 (Wednesday) y:211
[259] x:1446681600 = 2015-11-05 00:00:00 (Thursday) y:210,36
[260] x:1446768000 = 2015-11-06 00:00:00 (Friday) y:210,1499
[261] x:1446854400 = 2015-11-07 00:00:00 (Saturday) y:210,0399
[262] x:1447027200 = 2015-11-09 00:00:00 (Monday) y:210,0399
[263] x:1447113600 = 2015-11-10 00:00:00 (Tuesday) y:208,08
[264] x:1447200000 = 2015-11-11 00:00:00 (Wednesday) y:208,5599
[265] x:1447286400 = 2015-11-12 00:00:00 (Thursday) y:207,74
[266] x:1447372800 = 2015-11-13 00:00:00 (Friday) y:204,8399
[267] x:1447459200 = 2015-11-14 00:00:00 (Saturday) y:202,5399
[268] x:1447632000 = 2015-11-16 00:00:00 (Monday) y:202,5399
[269] x:1447718400 = 2015-11-17 00:00:00 (Tuesday) y:205,6199
[270] x:1447804800 = 2015-11-18 00:00:00 (Wednesday) y:205,47
[271] x:1447891200 = 2015-11-19 00:00:00 (Thursday) y:208,7299
[272] x:1447977600 = 2015-11-20 00:00:00 (Friday) y:208,55
[273] x:1448064000 = 2015-11-21 00:00:00 (Saturday) y:209,3099
[274] x:1448236800 = 2015-11-23 00:00:00 (Monday) y:209,3099
[275] x:1448323200 = 2015-11-24 00:00:00 (Tuesday) y:209,07
[276] x:1448409600 = 2015-11-25 00:00:00 (Wednesday) y:209,35
[277] x:1448496000 = 2015-11-26 00:00:00 (Thursday) y:209,32
[278] x:1448582400 = 2015-11-27 00:00:00 (Friday) y:209,32
[279] x:1448668800 = 2015-11-28 00:00:00 (Saturday) y:209,5599
[280] x:1448841600 = 2015-11-30 00:00:00 (Monday) y:209,5599
[281] x:1448928000 = 2015-12-01 00:00:00 (Tuesday) y:208,69
[282] x:1449014400 = 2015-12-02 00:00:00 (Wednesday) y:210,6799
[283] x:1449100800 = 2015-12-03 00:00:00 (Thursday) y:208,5299
[284] x:1449187200 = 2015-12-04 00:00:00 (Friday) y:205,61
[285] x:1449273600 = 2015-12-05 00:00:00 (Saturday) y:209,6199
[286] x:1449446400 = 2015-12-07 00:00:00 (Monday) y:209,6199
[287] x:1449532800 = 2015-12-08 00:00:00 (Tuesday) y:208,35
[288] x:1449619200 = 2015-12-09 00:00:00 (Wednesday) y:206,9499
[289] x:1449705600 = 2015-12-10 00:00:00 (Thursday) y:205,3399
[290] x:1449792000 = 2015-12-11 00:00:00 (Friday) y:205,8699
[291] x:1449878400 = 2015-12-12 00:00:00 (Saturday) y:201,88
[292] x:1450051200 = 2015-12-14 00:00:00 (Monday) y:201,88
[293] x:1450137600 = 2015-12-15 00:00:00 (Tuesday) y:202,8999
[294] x:1450224000 = 2015-12-16 00:00:00 (Wednesday) y:205,0299
[295] x:1450310400 = 2015-12-17 00:00:00 (Thursday) y:208,0299
[296] x:1450396800 = 2015-12-18 00:00:00 (Friday) y:204,86
[297] x:1450483200 = 2015-12-19 00:00:00 (Saturday) y:200,02
[298] x:1450656000 = 2015-12-21 00:00:00 (Monday) y:200,02
[299] x:1450742400 = 2015-12-22 00:00:00 (Tuesday) y:201,6699
[300] x:1450828800 = 2015-12-23 00:00:00 (Wednesday) y:203,5
[301] x:1450915200 = 2015-12-24 00:00:00 (Thursday) y:206,02
[302] x:1451001600 = 2015-12-25 00:00:00 (Friday) y:205,6799
[303] x:1451260800 = 2015-12-28 00:00:00 (Monday) y:205,6799
[304] x:1451347200 = 2015-12-29 00:00:00 (Tuesday) y:205,21
[305] x:1451433600 = 2015-12-30 00:00:00 (Wednesday) y:207,3999
[306] x:1451520000 = 2015-12-31 00:00:00 (Thursday) y:205,9299
[307] x:1451624400 = 2016-01-01 05:00:00 (Friday) y:203,8699
---------------------------------------
Chart name: Strategy Equity
Series name:Equity Index:0 Type:Candle Unit:$ Values.Count:617
[0] x:1420174800 = 2015-01-02 05:00:00 (Friday) y:100000
[1] x:1420174800 = 2015-01-02 05:00:00 (Friday) y:100000
[2] x:1420261200 = 2015-01-03 05:00:00 (Saturday) y:100000
[3] x:1420261200 = 2015-01-03 05:00:00 (Saturday) y:100000
[4] x:1420434000 = 2015-01-05 05:00:00 (Monday) y:100000
[5] x:1420434000 = 2015-01-05 05:00:00 (Monday) y:100000
[6] x:1420520400 = 2015-01-06 05:00:00 (Tuesday) y:98805,8958
[7] x:1420520400 = 2015-01-06 05:00:00 (Tuesday) y:98805,8958
[8] x:1420606800 = 2015-01-07 05:00:00 (Wednesday) y:97881,722
[9] x:1420606800 = 2015-01-07 05:00:00 (Wednesday) y:97881,722
[10] x:1420693200 = 2015-01-08 05:00:00 (Thursday) y:99092,8275
[11] x:1420693200 = 2015-01-08 05:00:00 (Thursday) y:99092,8275
[12] x:1420779600 = 2015-01-09 05:00:00 (Friday) y:100839,0296
[13] x:1420779600 = 2015-01-09 05:00:00 (Friday) y:100839,0296
[14] x:1420866000 = 2015-01-10 05:00:00 (Saturday) y:100036,5062
[15] x:1420866000 = 2015-01-10 05:00:00 (Saturday) y:100036,5062
[16] x:1421038800 = 2015-01-12 05:00:00 (Monday) y:100036,5062
[17] x:1421038800 = 2015-01-12 05:00:00 (Monday) y:100036,5062
[18] x:1421125200 = 2015-01-13 05:00:00 (Tuesday) y:99258,2059
[19] x:1421125200 = 2015-01-13 05:00:00 (Tuesday) y:99258,2059
[20] x:1421211600 = 2015-01-14 05:00:00 (Wednesday) y:98981,0024
[21] x:1421211600 = 2015-01-14 05:00:00 (Wednesday) y:98981,0024
[22] x:1421298000 = 2015-01-15 05:00:00 (Thursday) y:98387,5855
[23] x:1421298000 = 2015-01-15 05:00:00 (Thursday) y:98387,5855
[24] x:1421384400 = 2015-01-16 05:00:00 (Friday) y:97492,5961
[25] x:1421384400 = 2015-01-16 05:00:00 (Friday) y:97492,5961
[26] x:1421470800 = 2015-01-17 05:00:00 (Saturday) y:98762,1191
[27] x:1421470800 = 2015-01-17 05:00:00 (Saturday) y:98762,1191
[28] x:1421730000 = 2015-01-20 05:00:00 (Tuesday) y:98762,1191
[29] x:1421730000 = 2015-01-20 05:00:00 (Tuesday) y:98762,1191
[30] x:1421816400 = 2015-01-21 05:00:00 (Wednesday) y:98971,2256
[31] x:1421816400 = 2015-01-21 05:00:00 (Wednesday) y:98971,2256
[32] x:1421902800 = 2015-01-22 05:00:00 (Thursday) y:99467,4097
[33] x:1421902800 = 2015-01-22 05:00:00 (Thursday) y:99467,4097
[34] x:1421989200 = 2015-01-23 05:00:00 (Friday) y:100936,3597
[35] x:1421989200 = 2015-01-23 05:00:00 (Friday) y:100936,3597
[36] x:1422075600 = 2015-01-24 05:00:00 (Saturday) y:100386,7195
[37] x:1422075600 = 2015-01-24 05:00:00 (Saturday) y:100386,7195
[38] x:1422248400 = 2015-01-26 05:00:00 (Monday) y:100386,7195
[39] x:1422248400 = 2015-01-26 05:00:00 (Monday) y:100386,7195
[40] x:1422334800 = 2015-01-27 05:00:00 (Tuesday) y:100620,1463
[41] x:1422334800 = 2015-01-27 05:00:00 (Tuesday) y:100620,1463
[42] x:1422421200 = 2015-01-28 05:00:00 (Wednesday) y:99302,0312
[43] x:1422421200 = 2015-01-28 05:00:00 (Wednesday) y:99302,0312
[44] x:1422507600 = 2015-01-29 05:00:00 (Thursday) y:98037,3236
[45] x:1422507600 = 2015-01-29 05:00:00 (Thursday) y:98037,3236
[46] x:1422594000 = 2015-01-30 05:00:00 (Friday) y:98937,2258
[47] x:1422594000 = 2015-01-30 05:00:00 (Friday) y:98937,2258
[48] x:1422680400 = 2015-01-31 05:00:00 (Saturday) y:97701,7026
[49] x:1422680400 = 2015-01-31 05:00:00 (Saturday) y:97701,7026
:
[567] x:1449118800 = 2015-12-03 05:00:00 (Thursday) y:103075,9993
[568] x:1449205200 = 2015-12-04 05:00:00 (Friday) y:101642,3284
[569] x:1449205200 = 2015-12-04 05:00:00 (Friday) y:101642,3284
[570] x:1449291600 = 2015-12-05 05:00:00 (Saturday) y:103611,1893
[571] x:1449291600 = 2015-12-05 05:00:00 (Saturday) y:103611,1893
[572] x:1449464400 = 2015-12-07 05:00:00 (Monday) y:103611,1893
[573] x:1449464400 = 2015-12-07 05:00:00 (Monday) y:103611,1893
[574] x:1449550800 = 2015-12-08 05:00:00 (Tuesday) y:102987,6684
[575] x:1449550800 = 2015-12-08 05:00:00 (Tuesday) y:102987,6684
[576] x:1449637200 = 2015-12-09 05:00:00 (Wednesday) y:102300,2193
[577] x:1449637200 = 2015-12-09 05:00:00 (Wednesday) y:102300,2193
[578] x:1449723600 = 2015-12-10 05:00:00 (Thursday) y:101509,7093
[579] x:1449723600 = 2015-12-10 05:00:00 (Thursday) y:101509,7093
[580] x:1449810000 = 2015-12-11 05:00:00 (Friday) y:101769,9393
[581] x:1449810000 = 2015-12-11 05:00:00 (Friday) y:101769,9393
[582] x:1449896400 = 2015-12-12 05:00:00 (Saturday) y:99810,8984
[583] x:1449896400 = 2015-12-12 05:00:00 (Saturday) y:99810,8984
[584] x:1450069200 = 2015-12-14 05:00:00 (Monday) y:99810,8984
[585] x:1450069200 = 2015-12-14 05:00:00 (Monday) y:99810,8984
[586] x:1450155600 = 2015-12-15 05:00:00 (Tuesday) y:100311,6693
[587] x:1450155600 = 2015-12-15 05:00:00 (Tuesday) y:100311,6693
[588] x:1450242000 = 2015-12-16 05:00:00 (Wednesday) y:101357,4993
[589] x:1450242000 = 2015-12-16 05:00:00 (Wednesday) y:101357,4993
[590] x:1450328400 = 2015-12-17 05:00:00 (Thursday) y:102830,4993
[591] x:1450328400 = 2015-12-17 05:00:00 (Thursday) y:102830,4993
[592] x:1450414800 = 2015-12-18 05:00:00 (Friday) y:101274,0784
[593] x:1450414800 = 2015-12-18 05:00:00 (Friday) y:101274,0784
[594] x:1450501200 = 2015-12-19 05:00:00 (Saturday) y:98897,6384
[595] x:1450501200 = 2015-12-19 05:00:00 (Saturday) y:98897,6384
[596] x:1450674000 = 2015-12-21 05:00:00 (Monday) y:98897,6384
[597] x:1450674000 = 2015-12-21 05:00:00 (Monday) y:98897,6384
[598] x:1450760400 = 2015-12-22 05:00:00 (Tuesday) y:99707,7393
[599] x:1450760400 = 2015-12-22 05:00:00 (Tuesday) y:99707,7393
[600] x:1450846800 = 2015-12-23 05:00:00 (Wednesday) y:100606,3184
[601] x:1450846800 = 2015-12-23 05:00:00 (Wednesday) y:100606,3184
[602] x:1450933200 = 2015-12-24 05:00:00 (Thursday) y:101843,6384
[603] x:1450933200 = 2015-12-24 05:00:00 (Thursday) y:101843,6384
[604] x:1451019600 = 2015-12-25 05:00:00 (Friday) y:101676,6493
[605] x:1451019600 = 2015-12-25 05:00:00 (Friday) y:101676,6493
[606] x:1451278800 = 2015-12-28 05:00:00 (Monday) y:101676,6493
[607] x:1451278800 = 2015-12-28 05:00:00 (Monday) y:101676,6493
[608] x:1451365200 = 2015-12-29 05:00:00 (Tuesday) y:101445,9284
[609] x:1451365200 = 2015-12-29 05:00:00 (Tuesday) y:101445,9284
[610] x:1451451600 = 2015-12-30 05:00:00 (Wednesday) y:102521,1693
[611] x:1451451600 = 2015-12-30 05:00:00 (Wednesday) y:102521,1693
[612] x:1451538000 = 2015-12-31 05:00:00 (Thursday) y:101799,3993
[613] x:1451538000 = 2015-12-31 05:00:00 (Thursday) y:101799,3993
[614] x:1451624400 = 2016-01-01 05:00:00 (Friday) y:100787,9393
[615] x:1451624400 = 2016-01-01 05:00:00 (Friday) y:100787,9393
[616] x:1451624400 = 2016-01-01 05:00:00 (Friday) y:100787,9393
Series name:Daily Performance Index:1 Type:Bar Unit:% Values.Count:308
[0] x:1420156800 = 2015-01-02 00:00:00 (Friday) y:0
[1] x:1420243200 = 2015-01-03 00:00:00 (Saturday) y:0
[2] x:1420416000 = 2015-01-05 00:00:00 (Monday) y:0
[3] x:1420502400 = 2015-01-06 00:00:00 (Tuesday) y:-1,194104
[4] x:1420588800 = 2015-01-07 00:00:00 (Wednesday) y:-0,9353428
[5] x:1420675200 = 2015-01-08 00:00:00 (Thursday) y:1,237315
[6] x:1420761600 = 2015-01-09 00:00:00 (Friday) y:1,762188
[7] x:1420848000 = 2015-01-10 00:00:00 (Saturday) y:-0,795846
[8] x:1421020800 = 2015-01-12 00:00:00 (Monday) y:0
[9] x:1421107200 = 2015-01-13 00:00:00 (Tuesday) y:-0,7780163
[10] x:1421193600 = 2015-01-14 00:00:00 (Wednesday) y:-0,2792752
[11] x:1421280000 = 2015-01-15 00:00:00 (Thursday) y:-0,599526
[12] x:1421366400 = 2015-01-16 00:00:00 (Friday) y:-0,9096568
[13] x:1421452800 = 2015-01-17 00:00:00 (Saturday) y:1,302174
[14] x:1421712000 = 2015-01-20 00:00:00 (Tuesday) y:0
[15] x:1421798400 = 2015-01-21 00:00:00 (Wednesday) y:0,2117274
[16] x:1421884800 = 2015-01-22 00:00:00 (Thursday) y:0,5013417
[17] x:1421971200 = 2015-01-23 00:00:00 (Friday) y:1,476815
[18] x:1422057600 = 2015-01-24 00:00:00 (Saturday) y:-0,5445414
[19] x:1422230400 = 2015-01-26 00:00:00 (Monday) y:0
[20] x:1422316800 = 2015-01-27 00:00:00 (Tuesday) y:0,2325276
[21] x:1422403200 = 2015-01-28 00:00:00 (Wednesday) y:-1,309991
[22] x:1422489600 = 2015-01-29 00:00:00 (Thursday) y:-1,273597
[23] x:1422576000 = 2015-01-30 00:00:00 (Friday) y:0,9179179
[24] x:1422662400 = 2015-01-31 00:00:00 (Saturday) y:-1,248795
[25] x:1422835200 = 2015-02-02 00:00:00 (Monday) y:0
[26] x:1422921600 = 2015-02-03 00:00:00 (Tuesday) y:1,229688
[27] x:1423008000 = 2015-02-04 00:00:00 (Wednesday) y:1,436061
[28] x:1423094400 = 2015-02-05 00:00:00 (Thursday) y:-0,3781745
[29] x:1423180800 = 2015-02-06 00:00:00 (Friday) y:1,00256
[30] x:1423267200 = 2015-02-07 00:00:00 (Saturday) y:-0,2746056
[31] x:1423440000 = 2015-02-09 00:00:00 (Monday) y:0
[32] x:1423526400 = 2015-02-10 00:00:00 (Tuesday) y:-0,4445216
[33] x:1423612800 = 2015-02-11 00:00:00 (Wednesday) y:1,057978
[34] x:1423699200 = 2015-02-12 00:00:00 (Thursday) y:0,05763025
[35] x:1423785600 = 2015-02-13 00:00:00 (Friday) y:0,9551512
[36] x:1423872000 = 2015-02-14 00:00:00 (Saturday) y:0,4088735
[37] x:1424131200 = 2015-02-17 00:00:00 (Tuesday) y:0
[38] x:1424217600 = 2015-02-18 00:00:00 (Wednesday) y:0,1563018
[39] x:1424304000 = 2015-02-19 00:00:00 (Thursday) y:0,009455188
[40] x:1424390400 = 2015-02-20 00:00:00 (Friday) y:-0,07095448
[41] x:1424476800 = 2015-02-21 00:00:00 (Saturday) y:0,5960908
[42] x:1424649600 = 2015-02-23 00:00:00 (Monday) y:0
[43] x:1424736000 = 2015-02-24 00:00:00 (Tuesday) y:-0,01410742
[44] x:1424822400 = 2015-02-25 00:00:00 (Wednesday) y:0,2821411
[45] x:1424908800 = 2015-02-26 00:00:00 (Thursday) y:-0,08437137
[46] x:1424995200 = 2015-02-27 00:00:00 (Friday) y:-0,1173466
[47] x:1425081600 = 2015-02-28 00:00:00 (Saturday) y:-0,3383553
[48] x:1425254400 = 2015-03-02 00:00:00 (Monday) y:0
[49] x:1425340800 = 2015-03-03 00:00:00 (Tuesday) y:0,6271393
:
[258] x:1446595200 = 2015-11-04 00:00:00 (Wednesday) y:0,2880673
[259] x:1446681600 = 2015-11-05 00:00:00 (Thursday) y:-0,3013171
[260] x:1446768000 = 2015-11-06 00:00:00 (Friday) y:-0,09921569
[261] x:1446854400 = 2015-11-07 00:00:00 (Saturday) y:-0,05199698
[262] x:1447027200 = 2015-11-09 00:00:00 (Monday) y:0
[263] x:1447113600 = 2015-11-10 00:00:00 (Tuesday) y:-0,9269263
[264] x:1447200000 = 2015-11-11 00:00:00 (Wednesday) y:0,2290902
[265] x:1447286400 = 2015-11-12 00:00:00 (Thursday) y:-0,3905016
[266] x:1447372800 = 2015-11-13 00:00:00 (Friday) y:-1,386673
[267] x:1447459200 = 2015-11-14 00:00:00 (Saturday) y:-1,115202
[268] x:1447632000 = 2015-11-16 00:00:00 (Monday) y:0
[269] x:1447718400 = 2015-11-17 00:00:00 (Tuesday) y:1,510243
[270] x:1447804800 = 2015-11-18 00:00:00 (Wednesday) y:-0,0724082
[271] x:1447891200 = 2015-11-19 00:00:00 (Thursday) y:1,575814
[272] x:1447977600 = 2015-11-20 00:00:00 (Friday) y:-0,08561336
[273] x:1448064000 = 2015-11-21 00:00:00 (Saturday) y:0,3619419
[274] x:1448236800 = 2015-11-23 00:00:00 (Monday) y:0
[275] x:1448323200 = 2015-11-24 00:00:00 (Tuesday) y:-0,1138528
[276] x:1448409600 = 2015-11-25 00:00:00 (Wednesday) y:0,133035
[277] x:1448496000 = 2015-11-26 00:00:00 (Thursday) y:-0,01423482
[278] x:1448582400 = 2015-11-27 00:00:00 (Friday) y:0
[279] x:1448668800 = 2015-11-28 00:00:00 (Saturday) y:0,1138473
[280] x:1448841600 = 2015-11-30 00:00:00 (Monday) y:0
[281] x:1448928000 = 2015-12-01 00:00:00 (Tuesday) y:-0,4123516
[282] x:1449014400 = 2015-12-02 00:00:00 (Wednesday) y:0,9471617
[283] x:1449100800 = 2015-12-03 00:00:00 (Thursday) y:-1,013765
[284] x:1449187200 = 2015-12-04 00:00:00 (Friday) y:-1,390887
[285] x:1449273600 = 2015-12-05 00:00:00 (Saturday) y:1,937048
[286] x:1449446400 = 2015-12-07 00:00:00 (Monday) y:0
[287] x:1449532800 = 2015-12-08 00:00:00 (Tuesday) y:-0,6017892
[288] x:1449619200 = 2015-12-09 00:00:00 (Wednesday) y:-0,6675062
[289] x:1449705600 = 2015-12-10 00:00:00 (Thursday) y:-0,7727354
[290] x:1449792000 = 2015-12-11 00:00:00 (Friday) y:0,2563597
[291] x:1449878400 = 2015-12-12 00:00:00 (Saturday) y:-1,92497
[292] x:1450051200 = 2015-12-14 00:00:00 (Monday) y:0
[293] x:1450137600 = 2015-12-15 00:00:00 (Tuesday) y:0,5017197
[294] x:1450224000 = 2015-12-16 00:00:00 (Wednesday) y:1,042581
[295] x:1450310400 = 2015-12-17 00:00:00 (Thursday) y:1,453272
[296] x:1450396800 = 2015-12-18 00:00:00 (Friday) y:-1,513579
[297] x:1450483200 = 2015-12-19 00:00:00 (Saturday) y:-2,346543
[298] x:1450656000 = 2015-12-21 00:00:00 (Monday) y:0
[299] x:1450742400 = 2015-12-22 00:00:00 (Tuesday) y:0,8191307
[300] x:1450828800 = 2015-12-23 00:00:00 (Wednesday) y:0,901213
[301] x:1450915200 = 2015-12-24 00:00:00 (Thursday) y:1,229863
[302] x:1451001600 = 2015-12-25 00:00:00 (Friday) y:-0,1639662
[303] x:1451260800 = 2015-12-28 00:00:00 (Monday) y:0
[304] x:1451347200 = 2015-12-29 00:00:00 (Tuesday) y:-0,2269163
[305] x:1451433600 = 2015-12-30 00:00:00 (Wednesday) y:1,059915
[306] x:1451520000 = 2015-12-31 00:00:00 (Thursday) y:-0,7040205
[307] x:1451624400 = 2016-01-01 05:00:00 (Friday) y:-0,9935815
LeanChartsDumper.cs
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using QuantConnect.Packets;
namespace QuantConnect.Views
{
public class LeanChartsDumper {
private const string DTFORMAT = "yyyy-MM-dd HH:mm:ss";
public static void Dump(BacktestResultPacket packet, string filename, string symbol) {
var sb = new StringBuilder();
sb.AppendLine(string.Format("{0} - LeanChartsDumper.Dump() to file: {1}",
DateTime.Now.ToString(DTFORMAT), filename));
sb.AppendLine("==============================================================");
sb.AppendLine("Algorithm: " + packet.BacktestId);
sb.AppendLine("Symbol: " + symbol);
sb.AppendLine("PeriodStart: " + packet.PeriodStart);
sb.AppendLine("PeriodFinish: " + packet.PeriodFinish);
const string indent = " ";
const int n = 50;
// Dump all charts
foreach (var chartKvp in packet.Results.Charts) {
sb.AppendLine("---------------------------------------");
sb.AppendLine("Chart name: " + chartKvp.Value.Name);
// Dump first and last n data points in all series in this chart
foreach (var seriesKvp in chartKvp.Value.Series) {
var s = seriesKvp.Value;
var valuesCount = s.Values.Count;
sb.AppendLine(indent + string.Format("Series name:{0} Index:{1} Type:{2} Unit:{3} Values.Count:{4}",
new object [] { s.Name, s.Index, s.SeriesType, s.Unit, valuesCount }));
// First n points
for (var i = 0; i < n && i < valuesCount; i++) {
var istr = "[" + i + "]";
// Get timestamp and convert to datetime
var xstr = TimestampAndDateTimeToString(s.Values[i].x);
sb.AppendLine(indent + indent + string.Format("{0,-7}x:{1, -48} y:{2}",
istr, xstr, s.Values[i].y));
}
sb.AppendLine(indent + indent + ":");
// Last n points
for (var i = valuesCount - n; i < valuesCount; i++)
{
var istr = "[" + i + "]";
// Get timestamp and convert to datetime
var xstr = TimestampAndDateTimeToString(s.Values[i].x);
sb.AppendLine(indent + indent + string.Format("{0,-7}x:{1, -48} y:{2}",
istr, xstr, s.Values[i].y));
}
sb.AppendLine("");
}
}
// Save to file
File.WriteAllText(filename, sb.ToString());
}
private static string TimestampAndDateTimeToString(long timestamp) {
var dt = Time.UnixTimeStampToDateTime(timestamp);
return string.Format("{0} = {1} ({2})",
timestamp, dt.ToString(DTFORMAT), dt.ToString("dddd", CultureInfo.InvariantCulture));
}
}
}
Where I called the dumper in QuantConnect.Views.WinForms.LeanWinForm.cs
private void MessagingOnBacktestResultEvent(BacktestResultPacket packet)
{
if (packet.Progress != 1) return;
LeanChartsDumper.Dump(packet, "LeanChartsDump.txt", "SPY");