Tradelift - Python API
Do we
have any documentation or python script to work with the API?
have any documentation or python script to work with the API?
Tagged:
0
Best Answer
-
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( client0
Categories
- All Categories
- 6 AHS
- 37 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛