# This is a code example. Configure your parameters in the parameter configuration section #
from __future__ import print_function
import logging
import os
import grpc
from google.protobuf.json_format import MessageToJson
from google.protobuf import duration_pb2
from kaikosdk import sdk_pb2_grpc
from kaikosdk.core import instrument_criteria_pb2, assets_pb2
from kaikosdk.stream.aggregates_ohlcv_v1 import request_pb2 as pb_ohlcv
from kaikosdk.stream.aggregates_vwap_v1 import request_pb2 as pb_vwap
from kaikosdk.stream.market_update_v1 import request_pb2 as pb_market_update
from kaikosdk.stream.market_update_v1 import commodity_pb2 as pb_commodity
from kaikosdk.stream.trades_v1 import request_pb2 as pb_trades
from kaikosdk.stream.index_v1 import request_pb2 as pb_index
from kaikosdk.stream.index_multi_assets_v1 import request_pb2 as pb_index_multi_assets
from kaikosdk.stream.index_forex_rate_v1 import request_pb2 as pb_index_forex_rate
from kaikosdk.stream.aggregated_quote_v2 import request_pb2 as pb_aggregated_quote
from kaikosdk.stream.aggregates_spot_exchange_rate_v2 import request_pb2 as pb_spot_exchange_rate
from kaikosdk.stream.aggregates_direct_exchange_rate_v2 import request_pb2 as pb_direct_exchange_rate
def aggregates_spot_exchange_rate_request(channel: grpc.Channel):
try:
with channel:
stub = sdk_pb2_grpc.StreamAggregatesSpotExchangeRateV2ServiceV1Stub(channel)
# confiugure your window and frequency #
window = duration_pb2.Duration()
window.FromSeconds(10)
update_frequency = duration_pb2.Duration()
update_frequency.FromSeconds(2)
responses = stub.Subscribe(pb_spot_exchange_rate.StreamAggregatesSpotExchangeRateV2RequestV1(
# confiugure your assets #
assets = assets_pb2.Assets(
base = "eth",
quote = "usd"
),
# End of parameter configuration#
window = window,
update_frequency = update_frequency
))
for response in responses:
print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
except grpc.RpcError as e:
print(e.details(), e.code())
def run():
credentials = grpc.ssl_channel_credentials(root_certificates=None)
call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
aggregates_spot_exchange_rate_request(channel)
if __name__ == '__main__':
logging.basicConfig()
run()curl -X POST "https://gateway-v0-http.kaiko.ovh/api/stream/aggregates_spot_exchange_rate_v2" -H "accept: application/json" -H "X-Api-Key: $KAIKO_API_KEY" -H "Content-Type: application/json" -d "{ \"assets\": { \"base\": \"eth\", \"quote\": \"usd\" }, \"window\": \"5s\"}"{
"assets": {
"base": "eth",
"quote": "usd"
},
"price": 2629.972960779576,
"timestamp": "2024-08-12T10:35:06.026554200Z",
"window": {
"startTime": "2024-08-12T10:34:56Z",
"endTime": "2024-08-12T10:35:06Z",
"duration": "10s"
},
"noTrade": false
}
gateway-v0-grpc.kaiko.ovhgateway-v0-http.kaiko.ovhhttps://gateway-v0-http.kaiko.ovh/api/stream/aggregates_spot_exchange_rate_v2Duration - The window as configured above