Discover Refinitiv
MyRefinitiv Refinitiv Perspectives Careers
Created with Sketch.
All APIs Questions & Answers  Register |  Login
Ask a question
  • Questions
  • Tags
  • Badges
  • Unanswered
Search:
  • Home /
  • TRTH /
avatar image
Question by Ripley79 · Nov 09, 2015 at 09:54 AM · pythonTRTH

Tradelift - Python API

Do we have any documentation or python script to work with the API?

People who like this

0 Show 0
Comment
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Reply

  • Sort: 
avatar image
REFINITIV
Best Answer
Answer by DevTrev · Nov 09, 2015 at 11:38 AM
Here is a Python script which tests the Tick History API by calling the GetVersion() method, followed by the SearchRICs method. It also contains some code to support the ExpandChain, SubmitFTPRequest, GetLookBackPeriod, and SubmitRequest methods. It requires the python suds module to be installed, which is a lightweight SOAP library.
    from suds.client import Client
    from suds import WebFault

    import logging
    import getpass
    import datetime
    import time

    #Begin test gzip format
    import gzip
    from cStringIO import StringIO
    import binascii
    #End test gzip format

    WSDL_URL = "https://trth-api.thomsonreuters.com/TRTHApi-5.8/wsdl/TRTHApi.wsdl"

   
  #===============================================================================
    def createDataObject( type, field, value, longName = "" ):
      data = client.factory.create(
  'ns0:Data' )
      data.type.value = type
      data.field.value = field
      data.value = value
      data.longName = longName
      return data

    #===============================================================================
    def getTokenId( message ):
      startIndex = str( message ).find(
  "<typens:tokenId>" )
      endIndex  = str( message ).find(
  "</typens:tokenId>" )
      return str( message
  )[startIndex+16:endIndex]

    #===============================================================================
    # Based on the SEARCHRICS example on page 37 of the TRTH API User Guide
  5.7.2
   
  #===============================================================================
    def searchRICs( client ):
      print
  "---------------------"
      print
  "SearchRICs()"
      print
  "---------------------"

      # set date range
      dateRange =
  client.factory.create( 'ns0:DateRange' )
      dateRange.start = "2000-01-01"
      dateRange.end =
  "2006-12-31"

      # create data objects
      domain  = createDataObject( "Text",
  "Domain", "EQU" )
      exchange = createDataObject(
  "Text", "Exchange", "NMS" )
      ric  = createDataObject( "Text",
  "RICRegex", "^MSFT" )

      # create criteria and add data
  objects
      criteria = client.factory.create(
  'ns0:ArrayOfData' )
      criteria.data.append( domain
  )
      criteria.data.append( exchange
  )
      criteria.data.append( ric )

      # search RICs
      try:
      result =
  client.service.SearchRICs( dateRange, criteria, False )
      #print "Result
  length:", len(result['instrument'])
      #for res in
  result['instrument']:
      #  print res.code
      print "result:",
  result

      except WebFault, f:
      print "f:", f
      print "f.fault:",
  f.fault  

   
  #===============================================================================
    # Based on the EXPANDCHAIN example on page 39 of the TRTH API User Guide
  5.7.2
   
  #===============================================================================
    def expandChain( client ):
      print "---------------------"
      print
  "ExpandChain()"
      print
  "---------------------"

      # create an instrument
      instrument =
  client.factory.create( 'ns0:Instrument' )
      instrument.code =
  "0#.DJI"
      instrument.status = None

      # create a date range
      dateRange =
  client.factory.create( 'ns0:DateRange' )
      dateRange.start =
  "2006-07-01"
      dateRange.end =
  "2006-07-31"

      # create a time range
      timeRange =
  client.factory.create( 'ns0:TimeRange' )
      timeRange.start =
  "0:00"
      timeRange.end =
  "23:59:59.999"

      # expand chain
      try:
      result =
  client.service.ExpandChain( instrument,
     
  dateRange,
     
  timeRange,
     
  True )
      print "result:",
  result
      except WebFault, f:
      print "f:", f
      print "f.fault:",
  f.fault

   
  #===============================================================================
    # Get the Look Back Period Information
    #===============================================================================
    def GetLookBackPeriod( client ):
      print
  "---------------------"
      print "GetLookBackPeriod()"
      print
  "---------------------"

      # expand chain
      try:
      result =
  client.service.GetLookBackPeriod()
      print "result:",
  result
      except WebFault, f:
      print "f:", f
      print "f.fault:",
  f.fault


    #===============================================================================
    # Based on the SUBMITFTPREQUEST example on page 46 of the TRTH API User
  Guide 5.7.2
   
  #===============================================================================
    def submitFTPRequest( client ):
      print
  "---------------------"
      print
  "submitFTPRequest()"
      print "---------------------"

      # create an instrument
      instrument =
  client.factory.create( 'ns0:Instrument' )
      instrument.code =
  "BHP.AX"
      instrument.status = None

      instrumentList =
  client.factory.create("ns0:ArrayOfInstrument")
      instrumentList.instrument =
  [instrument]

      # create a date range
      dateRange =
  client.factory.create( 'ns0:DateRange' )
      dateRange.start =
  "2006-07-01"
      dateRange.end =
  "2006-07-31"

      # create a time range
      timeRange =
  client.factory.create( 'ns0:TimeRange' )
      timeRange.start =
  "0:00"
      timeRange.end =
  "23:59:59.999"

      # create message type
      fields =
  ["Open","High", "Low"]
      messageType =
  client.factory.create("ns0:MessageType")
      messageType.name = "Intraday
  10Min"
      fieldArray =
  client.factory.create("ns0:ArrayOfString")
      fieldArray.string = fields
      messageType.fieldList =
  fieldArray

      typesArray =
  client.factory.create("ns0:ArrayOfMessageType")
      typesArray.messageType =
  [messageType]


      # create a LargeRequestSpec
      request =
  client.factory.create("ns0:LargeRequestSpec")
      request.friendlyName =
  "Intraday FTP Request"
      request.requestType =
  (client.factory.create("ns0:RequestType")).Intraday
      request.instrumentList =
  instrumentList
      request.dateRange =
  dateRange
      request.timeRange =
  timeRange
      request.messageTypeList = typesArray
      request.requestInGMT =
  False
      request.displayInGMT =
  False
      request.marketDepth = 0
      request.splitSize = 500
      request.delivery =
  (client.factory.create("ns0:RequestDelivery")).Pull
      request.sortType =
  (client.factory.create("ns0:RequestSortType")).RICSequence
      request.fileFormat =
  (client.factory.create("ns0:RequestFileFormat")).Single
      request.dateFormat =
  (client.factory.create("ns0:RequestDateFormat")).DDMMYYYY
      request.applyCorrections =
  False
      request.displayMicroseconds =
  False
      request.disableDataPersistence =
  True
      request.includeCurrentRIC=
  True
      print request

      # submit request
      try:
      reqID =
  client.service.SubmitFTPRequest(request)
      print "Request:",
  reqID

      except WebFault, f:
      print "f:", f
      print "f.fault:",
  f.fault

   
  #===============================================================================
    # 
    #===============================================================================
    def submitRequest( client ):
      print
  "---------------------"
      print
  "submitRequest()"
      print
  "---------------------"

      # create an instrument
      instrument =
  client.factory.create( 'ns0:Instrument' )
      instrument.code =
  "AUD=D3"
      instrument.status = None

      # create a date range
      date = client.factory.create(
  'xsd:date' )
      date =
  "2014-01-02"

      # create a time range
      timeRange =
  client.factory.create( 'ns0:TimeRange' )
      timeRange.start =
  "0:00"
      timeRange.end = "23:59:59.999"

      # create a LargeRequestSpec
      request =
  client.factory.create("ns0:RequestSpec")
      request.friendlyName =
  "Single Day Request"
      request.requestType =
  (client.factory.create("ns0:RequestType")).TimeAndSales
      request.instrument =
  instrument
      request.date = date
      request.timeRange =
  timeRange
      #request.messageTypeList =
  typesArray
      request.requestInGMT =
  False
      request.displayInGMT =
  False
      request.disableHeader =
  False
      request.marketDepth = 0
      request.dateFormat =
  (client.factory.create("ns0:RequestDateFormat")).DDMMYYYY
      request.applyCorrections =
  False
      request.displayMicroseconds =
  False
      request.disableDataPersistence =
  True
      request.includeCurrentRIC=
  True
      print request

      # submit request
      try:
      reqID =
  client.service.SubmitRequest(request)
      print "Request:",
  reqID[1]

      except WebFault, f:
      print "f:", f
      print "f.fault:",
  f.fault

      complete = False
      while(True):
      res =
  client.service.GetRequestResult(reqID[1]);
      print "======Status:
  ", res
      if(res[1]['status'] ==
  (client.factory.create("ns0:RequestStatusCode")).Complete or
  res[1]['status'] == (client.factory.create("ns0:RequestStatusCode")).Aborted):
      if(res[1]['status'] ==
  (client.factory.create("ns0:RequestStatusCode")).Complete):
      complete = True
      break;
      time.sleep(10)

      if(complete == True):  
      fileR = open('result.csv.gz',
  'w')
     
  fileR.write(res[1]['data'])
      fileR.close()

   
  #===============================================================================
    if __name__ == "__main__":
      # create suds client from TRTH
  API url
      client = Client( WSDL_URL,
  faults=False )

      logging.basicConfig()
      logging.getLogger('suds.client').setLevel(logging.DEBUG)

      # get username
      username = raw_input( "Enter
  username:" )

      # get password (TRTH)
      password = getpass.getpass(
  'Enter a password:' )

      # create credentials object
      credentials =
  client.factory.create( 'ns0:CredentialsHeader' )
      credentials.username =
  username
      credentials.password =
  password

      # add credentials to header
      client.set_options( soapheaders =
  credentials )

      # get version
      version =
  client.service.GetVersion()

      # add tokenID to credentials and
  add to header
      credentials.tokenId = getTokenId(
  client.last_received() )
      client.set_options( soapheaders =
  credentials )

      # attempt to make requests using
  the API
      searchRICs( client )
      # expandChain( client )
      # submitFTPRequest( client
  )
      # GetLookBackPeriod( client
  )
      # submitRequest( client 
Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Watch this question

Add to watch list
Add to your watch list to receive emailed updates for this question. Too many emails? Change your settings >
No one has followed this question yet.

Related Questions

How to get time and sales data for inactive instrument

How to get historical ref data using Python TRTH for a small universe?

TRTH ExtractRawResult returns Error 404

TickHistoryRaw in python

Market Depth data using Python on TRTH

  • Feedback
  • Copyright
  • Cookie Policy
  • Privacy Statement
  • Terms of Use
  • Careers
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Alpha
  • App Studio
  • Block Chain
  • Bot Platform
  • Calais
  • Connected Risk APIs
  • DSS
  • Data Fusion
  • Data Model Discovery
  • Datastream
  • Eikon COM
  • Eikon Data APIs
  • Elektron
    • EMA
    • ETA
    • WebSocket API
  • Legal One
  • Messenger Bot
  • Messenger Side by Side
  • ONESOURCE
    • Indirect Tax
  • Open PermID
    • Entity Search
  • Org ID
  • PAM
    • PAM - Logging
  • ProView
  • ProView Internal
  • Product Insight
  • Project Tracking
  • Refinitiv Data Platform
    • Refinitiv Data Platform Libraries
  • Rose's Space
  • Screening
    • Qual-ID API
    • Screening Deployed
    • Screening Online
    • World-Check One
    • World-Check One Zero Footprint
  • Side by Side Integration API
  • TR Knowledge Graph
  • TREP APIs
    • CAT
    • DACS Station
    • Open DACS
    • RFA
    • UPA
  • TREP Infrastructure
  • TRIT
  • TRKD
  • TRTH
  • Thomson One Smart
  • Transactions
    • REDI API
  • Velocity Analytics
  • Wealth Management Web Services
  • World-Check Data File
  • Explore
  • Tags
  • Questions
  • Badges