@@ -233,6 +233,11 @@ impl Market {
233233 let mut candlestick = prev;
234234
235235 if update_fields. contains ( UpdateFields :: PRICE ) {
236+ if !candlestick. open_updated ( ) {
237+ candlestick. set_open ( trade. price ( ) ) ;
238+ candlestick. set_open_updated ( true ) ;
239+ }
240+
236241 candlestick. set_high ( if trade. price ( ) > candlestick. high ( ) {
237242 trade. price ( )
238243 } else {
@@ -267,6 +272,7 @@ impl Market {
267272 volume : trade. volume ( ) ,
268273 turnover : trade. turnover ( self . lot_size ) ,
269274 trade_session,
275+ open_updated : true ,
270276 } ) ;
271277 UpdateAction :: AppendNew {
272278 confirmed : None ,
@@ -286,13 +292,15 @@ impl Market {
286292 volume : V :: zero ( ) ,
287293 turnover : R :: zero ( ) ,
288294 trade_session,
295+ open_updated : false ,
289296 } ) ;
290297
291298 if update_fields. contains ( UpdateFields :: PRICE ) {
292299 new_candlestick. set_open ( trade. price ( ) ) ;
293300 new_candlestick. set_high ( trade. price ( ) ) ;
294301 new_candlestick. set_low ( trade. price ( ) ) ;
295302 new_candlestick. set_close ( trade. price ( ) ) ;
303+ new_candlestick. set_open_updated ( true ) ;
296304 }
297305
298306 if update_fields. contains ( UpdateFields :: VOLUME ) {
@@ -340,6 +348,7 @@ impl Market {
340348 volume : quote. volume ( ) ,
341349 turnover : quote. turnover ( ) ,
342350 trade_session,
351+ open_updated : true ,
343352 } ) )
344353 }
345354 None => UpdateAction :: AppendNew {
@@ -353,6 +362,7 @@ impl Market {
353362 volume : quote. volume ( ) ,
354363 turnover : quote. turnover ( ) ,
355364 trade_session,
365+ open_updated : true ,
356366 } ) ,
357367 } ,
358368 Some ( prev) if time > prev. time ( ) => UpdateAction :: AppendNew {
@@ -366,6 +376,7 @@ impl Market {
366376 volume : quote. volume ( ) ,
367377 turnover : quote. turnover ( ) ,
368378 trade_session,
379+ open_updated : true ,
369380 } ) ,
370381 } ,
371382 _ => UpdateAction :: None ,
0 commit comments