-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: price-feeder: candlestick websocket subscriptions #586
Conversation
this one was super annoying, still cleanup to be done in this file why would an api return a multi type array :(
p.setTickerPair(tickerResp) | ||
if candleResp.Tick.Open != 0 { | ||
p.setCandlePair(candleResp) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does anything need to be done if the response is neither ticker nor candle? Currently it would return without error but also without setting anything it looks like
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so, the original implementation just would return here without an error if there were no ticker to set.
cc : @RafilxTenfen
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it depends on the provider to send different messages, on the huobi one I only saw messages sent that we subscribed for
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work @adamewozniak
if tickerResp.ID.Channel == "tickers" { | ||
for _, tickerPair := range tickerResp.Data { | ||
p.setTickerPair(tickerPair) | ||
} | ||
} | ||
if candleResp.ID.Channel == "candle1m" { | ||
for _, candlePair := range candleResp.Data { | ||
p.setCandlePair(candlePair, candleResp.ID.InstID) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This bit of logic is necessary for okx since if the response is a ticker response, it will unmarshal into the candleResp.Data
as a string array where [0] is an empty string array.
We could handle it by checking lengths, but this seemed more straightforward
return | ||
} | ||
if err := p.messageReceivedCandle(bz); err != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be executed if messageReceivedTickerPrice
errors correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, logic is if messageReceivedTickerPrice
errors, log and continue to attempt parsing as a candle; else, return and don't attempt to parse as a candle
(cherry picked from commit 56762e0)
Description
Adds subscriptions to the candlestick websockets for our providers. Necessary for implementing tvwap.
Doing calculations in a separate PR to keep this tidy.
progress on: #542
Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...
!
to the type prefix if API or client breaking changeCHANGELOG.md
Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
I have...
!
in the type prefix if API or client breaking change