If I understand correctly, you have two main operations: given a new (p,v), where p=price and v=volume, you want to insert this into the sorted dict. If there is already (p,v’) in the sorted dict (same p), then instead you wish to update (p,v’) to (p,v+v’)…
The other operation is, given a volume V, you want to find and delete pairs (p,v) starting from lowest to highest p, until the sequence of v’s removed adds up to V.
Both of these are possible with SortedDict. For the first operation, you find
p; if found under semitoken s, then you update sd[s], and if not found, the you push!
or insert!
the new item. For the second operation, you use a while-loop with the startof
function and delete!
function.
Your username ‘femtotrader’ suggests that you are interested in high-performance software for use in high-speed financial trades. In this case, you should know that SortedDict
in Julia is not as fast as map
in C++, primarily because the latter has no safeguards or error-checks, at least when used in the default way.