Â
Omdat de koers van een product via de ‘standaard’ datastream vier keer per seconde (elke 250ms) wordt geüpdatet, zal de gemiddelde handelaar op het eerste oog geen verschil zien tussen de twee datastreams. Een computer merkt het verschil wel, accurate data zorgt voor meer betrouwbare resultaten. Tick-by-tick data kan derhalve van toegevoegde waarde zijn bij het backtesten en uitvoeren van automatische handelsstrategieën.
Enkele specifieke limitaties:
- Tick-by-tick is niet beschikbaar voor combos
- Tick-by-tick voor opties is alleen historisch beschikbaar, niet in real time
- Tick-by-tick voor indices is alleen beschikbaar voor indices op CME
- Het tick type veld in de API is hoofdlettergevoelig: BidAsk, Last, AllLast, MidPoint
VOORBEELD (in Python):
Om de volgende stappen uit te voeren dient u de API-software te downloaden; zie onderaan dit artikel. Daarnaast kunt u onderstaand het uitgewerkte voorbeeld downloaden, welke u direct kunt gebruiken om zelf tick-data op te vragen. Tijdens installatie van de API-software worden er verschillende mappen aangemaakt (doorgaans in C:/TWS_API), waaronder de map ‘Samples’; hierin zijn voorbeelden te vinden voor C#, Java, Python & Excel. In het API Python voorbeeld, specifiek binnen Program.py, zijn de volgende twee stukjes code te vinden voor het opvragen van historische tick-data (locatie: /TWS API/samples/Python/Testbed/Program.py):
self.reqHistoricalTicks(18002, ContractSamples.INGA(), "20180712 21:39:33", "", 1000, "BID_ASK", 1, True, []) def historicalTicksBidAsk(self, reqId: int, ticks: ListOfHistoricalTickBidAsk, done: bool): for tick in ticks: print("Historical Tick Bid/Ask. Req Id: ", reqId, ", time: ", tick.time, ", bid price: ", tick.priceBid, ", ask price: ", tick.priceAsk, ", bid size: ", tick.sizeBid, ", ask size: ", tick.sizeAsk)
tick_data = [] for tick in ticks: tick_data.append( {"Time": str(time.ctime(tick.time)), "Bid": float(tick.priceBid), "Ask": float(tick.priceAsk), "Bid Size": float(tick.sizeBid), "Ask Size": float(tick.sizeAsk), "Req Id": int(reqId)}) df = pd.DataFrame(tick_data) df.to_csv("TickData_{}_{}.csv".format(reqId, int(time.time())), index_label='index') print("TickData CSV Created")
import pandas as pd
Om gebruik te kunnen van de API is specifieke software vereist. Download deze hier (ga akkoord met de voorwaarden, download IB API Latest). Ook kunt u de voorbeelden, zoals omschreven in dit artikel, downloaden. Deze vindt u hieronder:
Omdat de koers van een product via de ‘standaard’ datastream vier keer per seconde (elke 250ms) wordt geüpdatet, zal de gemiddelde handelaar op het eerste oog geen verschil zien tussen de twee datastreams. Een computer merkt het verschil wel, accurate data zorgt voor meer betrouwbare resultaten. Tick-by-tick data kan derhalve van toegevoegde waarde zijn bij het backtesten en uitvoeren van automatische handelsstrategieën.
Enkele specifieke limitaties:
- Tick-by-tick is niet beschikbaar voor combos
- Tick-by-tick voor opties is alleen historisch beschikbaar, niet in real time
- Tick-by-tick voor indices is alleen beschikbaar voor indices op CME
- Het tick type veld in de API is hoofdlettergevoelig: BidAsk, Last, AllLast, MidPoint
VOORBEELD (in Python):
Om de volgende stappen uit te voeren dient u de API-software te downloaden; zie onderaan dit artikel. Daarnaast kunt u onderstaand het uitgewerkte voorbeeld downloaden, welke u direct kunt gebruiken om zelf tick-data op te vragen. Tijdens installatie van de API-software worden er verschillende mappen aangemaakt (doorgaans in C:/TWS_API), waaronder de map ‘Samples’; hierin zijn voorbeelden te vinden voor C#, Java, Python & Excel. In het API Python voorbeeld, specifiek binnen Program.py, zijn de volgende twee stukjes code te vinden voor het opvragen van historische tick-data (locatie: /TWS API/samples/Python/Testbed/Program.py):
self.reqHistoricalTicks(18002, ContractSamples.INGA(), "20180712 21:39:33", "", 1000, "BID_ASK", 1, True, []) def historicalTicksBidAsk(self, reqId: int, ticks: ListOfHistoricalTickBidAsk, done: bool): for tick in ticks: print("Historical Tick Bid/Ask. Req Id: ", reqId, ", time: ", tick.time, ", bid price: ", tick.priceBid, ", ask price: ", tick.priceAsk, ", bid size: ", tick.sizeBid, ", ask size: ", tick.sizeAsk)
tick_data = [] for tick in ticks: tick_data.append( {"Time": str(time.ctime(tick.time)), "Bid": float(tick.priceBid), "Ask": float(tick.priceAsk), "Bid Size": float(tick.sizeBid), "Ask Size": float(tick.sizeAsk), "Req Id": int(reqId)}) df = pd.DataFrame(tick_data) df.to_csv("TickData_{}_{}.csv".format(reqId, int(time.time())), index_label='index') print("TickData CSV Created")
import pandas as pd
Om gebruik te kunnen van de API is specifieke software vereist. Download deze hier (ga akkoord met de voorwaarden, download IB API Latest). Ook kunt u de voorbeelden, zoals omschreven in dit artikel, downloaden. Deze vindt u hieronder:
API FAQ:
Hoe sta ik API verbindingen toe in het Handelsplatform?
Het is van belang dat, binnen de configuratie instellingen van het Handelsplatform, ‘Enable ActiveX and Socket Clients’ is aangevinkt alsmede dat de ‘Socket port’ overeenkomt met de socket port aangegeven in het verbindingsgedeelte van uw programma/code.
Wat zijn de limitaties van de API?
Het handelsplatform accepteert tot vijftig verzoeken per seconde, client-side. Een verzoek is bijvoorbeeld het opvragen van koersdata, plaatsen van een order of het opvragen van de portefeuille. Er bestaat geen limiet voor het aantal berichten dat het LYNX Handelsplatform terugstuurt in antwoord op de geplaatste verzoeken.
Kan ik via de API handelen op een demorekening?
Het is mogelijk via de API te handelen op een LYNX Demorekening. Er bestaan wel een aantal limitaties aan het gebruik van een demorekening ten opzichte van een echte rekening. Onder andere:
- Sommige ordertypes kunnen niet worden gebruikt in de demo: VWAP, Auction, RFQ en Pegged to Market
- Transacties worden gesimuleerd op basis van top of book data
- Handel in combo’s en EFP’s is gelimiteerd mogelijk
- Stop- en andere conditionele orders worden te allen tijden gesimuleerd op een demorekening, dit kan afwijken van de ervaring op een echte rekening
- Penny trading voor Amerikaanse opties is niet mogelijk
API FAQ:
Hoe sta ik API verbindingen toe in het Handelsplatform?
Het is van belang dat, binnen de configuratie instellingen van het Handelsplatform, ‘Enable ActiveX and Socket Clients’ is aangevinkt alsmede dat de ‘Socket port’ overeenkomt met de socket port aangegeven in het verbindingsgedeelte van uw programma/code.
Wat zijn de limitaties van de API?
Het handelsplatform accepteert tot vijftig verzoeken per seconde, client-side. Een verzoek is bijvoorbeeld het opvragen van koersdata, plaatsen van een order of het opvragen van de portefeuille. Er bestaat geen limiet voor het aantal berichten dat het LYNX Handelsplatform terugstuurt in antwoord op de geplaatste verzoeken.
Kan ik via de API handelen op een demorekening?
Het is mogelijk via de API te handelen op een LYNX Demorekening. Er bestaan wel een aantal limitaties aan het gebruik van een demorekening ten opzichte van een echte rekening. Onder andere:
- Sommige ordertypes kunnen niet worden gebruikt in de demo: VWAP, Auction, RFQ en Pegged to Market
- Transacties worden gesimuleerd op basis van top of book data
- Handel in combo’s en EFP’s is gelimiteerd mogelijk
- Stop- en andere conditionele orders worden te allen tijden gesimuleerd op een demorekening, dit kan afwijken van de ervaring op een echte rekening
- Penny trading voor Amerikaanse opties is niet mogelijk