|
|
|
|
@ -176,12 +176,22 @@ handleBar bar = runState $ do
@@ -176,12 +176,22 @@ handleBar bar = runState $ do
|
|
|
|
|
mybars <- gets bars |
|
|
|
|
case M.lookup (barSecurity bar) mybars of |
|
|
|
|
Just series -> case bsBars series of |
|
|
|
|
(b:bs) -> do |
|
|
|
|
lBars %= M.insert (barSecurity bar) series { bsBars = bar : b : bs } |
|
|
|
|
(_:bs) -> do |
|
|
|
|
lBars %= M.insert (barSecurity bar) series { bsBars = emptyBarFrom bar : bar : bs } |
|
|
|
|
return . Just $ bar |
|
|
|
|
_ -> do |
|
|
|
|
lBars %= M.insert (barSecurity bar) series { bsBars = [bar] } |
|
|
|
|
lBars %= M.insert (barSecurity bar) series { bsBars = emptyBarFrom bar : [bar] } |
|
|
|
|
return Nothing |
|
|
|
|
_ -> return Nothing |
|
|
|
|
where |
|
|
|
|
emptyBarFrom bar' = Bar { |
|
|
|
|
barSecurity = barSecurity bar', |
|
|
|
|
barTimestamp = barTimestamp bar', |
|
|
|
|
barOpen = barClose bar', |
|
|
|
|
barHigh = barClose bar', |
|
|
|
|
barLow = barClose bar', |
|
|
|
|
barClose = barClose bar', |
|
|
|
|
barVolume = 0 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|