mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-30 07:26:46 +00:00
Binance: implement get historic trades (#588)
* Binance: implement get historic trades * get binance trade data based on aggregate trade list * fix small issue in rpc server: gctcli stops retrieving when there's a gap in data * update binance trade history availability in readme * limit check batched aggregate requests * add test for batched aggregated trades * fix batch fromId query parameter * update documentation * send a serialised currency pair to GetAggregatedTrades the rationale is that the API is kept generic so that callers can shoot themselves in the foot if they want to * allow requesting arbitrary limit of trades * handle some error cases for batching GetAggregateTrades * fix batch without end time * don't return from batch too early if end time is not set * additional check for supported limits * don't use CheckLimits for GetAggregatedTrades * the exchange doesn't use predefined valid limits for this request
This commit is contained in:
@@ -2793,13 +2793,16 @@ func (s *RPCServer) GetHistoricTrades(r *gctrpc.GetSavedTradesRequest, stream gc
|
||||
Asset: r.AssetType,
|
||||
Pair: r.Pair,
|
||||
}
|
||||
iterateStartTime := UTCStartTime
|
||||
iterateEndTime := iterateStartTime.Add(time.Hour)
|
||||
for iterateStartTime.Before(UTCEndTime) {
|
||||
|
||||
for iterateStartTime := UTCStartTime; iterateStartTime.Before(UTCEndTime); iterateStartTime = iterateStartTime.Add(time.Hour) {
|
||||
iterateEndTime := iterateStartTime.Add(time.Hour)
|
||||
trades, err = exch.GetHistoricTrades(cp, asset.Item(r.AssetType), iterateStartTime, iterateEndTime)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(trades) == 0 {
|
||||
continue
|
||||
}
|
||||
grpcTrades := &gctrpc.SavedTradesResponse{
|
||||
ExchangeName: r.Exchange,
|
||||
Asset: r.AssetType,
|
||||
@@ -2820,8 +2823,6 @@ func (s *RPCServer) GetHistoricTrades(r *gctrpc.GetSavedTradesRequest, stream gc
|
||||
}
|
||||
|
||||
stream.Send(grpcTrades)
|
||||
iterateStartTime = iterateStartTime.Add(time.Hour)
|
||||
iterateEndTime = iterateEndTime.Add(time.Hour)
|
||||
}
|
||||
stream.Send(resp)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user