packages feed

tinkoff-invest-sdk-0.1.0.0: src/Invest/Service/MarketData.hs

module Invest.Service.MarketData(
    getCandles,
    getLastPrices,
    getOrderBook,
    getTradingStatus,
    getLastTrades
) where

import           Control.Lens                   ((^.))
import           Invest.Client.Helpers          (GrpcClient, GrpcIO, runUnary,
                                                 runUnary_)
import           Network.GRPC.HTTP2.ProtoLens   (RPC (..))
import           Proto.Invest.Marketdata
import qualified Proto.Invest.Marketdata_Fields as MD

getCandles :: GrpcClient -> GetCandlesRequest -> GrpcIO [HistoricCandle]
getCandles = runUnary_ (^. MD.candles) (RPC :: RPC MarketDataService "getCandles")

getLastPrices :: GrpcClient -> GetLastPricesRequest -> GrpcIO [LastPrice]
getLastPrices = runUnary_ (^. MD.lastPrices) (RPC :: RPC MarketDataService "getLastPrices")

getOrderBook :: GrpcClient -> GetOrderBookRequest -> GrpcIO GetOrderBookResponse
getOrderBook = runUnary (RPC :: RPC MarketDataService "getOrderBook")

getTradingStatus :: GrpcClient -> GetTradingStatusRequest -> GrpcIO GetTradingStatusResponse
getTradingStatus = runUnary (RPC :: RPC MarketDataService "getTradingStatus")

getLastTrades :: GrpcClient -> GetLastTradesRequest -> GrpcIO [Trade]
getLastTrades = runUnary_ (^. MD.trades) (RPC :: RPC MarketDataService "getLastTrades")