Entwickler-Example
Entwickler-Example & SDK
- 🚀 Echtzeit-Datenintegration für C# / .NET
- 📊 Tick-, Intraday- und End-of-Day Daten
- ⚡ Push-basierte Live-Datenversorgung
Was ist das TAI-PAN .NET Example?
Dieses Beispielprojekt zeigt, wie die TAI-PAN Schnittstelle in einer .NET Anwendung genutzt wird.
Es dient als Startpunkt für Entwickler, die Marktdaten, Echtzeit-Feeds und historische Daten integrieren möchten.
Enthaltene Funktionen
- 🔐 Anmeldung über DevID & User Credentials
- 📈 Zugriff auf Kursdaten (Tick / Intraday / Historie)
- ⚡ PushFeed für Live-Daten
- 🖥️ Windows Forms Oberfläche
- 🧩 Strukturierte .NET API Integration
- 🌍 Stammdaten Zugriff
- 🔎 Suchfunktion
TPRAccess Schnittstelle – Entwicklerdokumentation
Diese Schnittstelle kann mit verschiedenen Programmiersprachen verwendet werden.
Allerdings sind möglicherweise nicht alle Funktionen in jeder Sprache vollständig oder identisch nutzbar.
Die Entwicklung und Tests erfolgen primär in C#. Sämtliche Funktionen wurden in dieser Umgebung validiert.
Für Implementierungen in anderen Programmiersprachen (z. B. Python) kann daher kein Support angeboten werden.
Quick Start
Download
Laden Sie zunächst die benötigte DLL herunter:
Entpacken Sie anschließend die Datei TPRAccess.zip.
Einbindung der DLL-Schnittstelle
Projekt-Konfiguration (.NET Core)
Hinweis: Für .NET Core Anwendungen muss die Codepage 1252 hinzugefügt werden.
csproj-Datei:
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" />
</ItemGroup>
Initialisierung im Quellcode:
Verwendung
Nach erfolgreicher Einbindung können Sie die Schnittstelle wie folgt verwenden:
using TPRAccess;
Verbindung & Login
TPRClientLanguages
English – englische Rückgaben
connection.ClientLanguage = TPRClientLanguages.German;
TPRServerConnection
Das Objekt TPRServerConnection initialisiert die Verbindung zur API und stellt sämtliche Kernfunktionen der Schnittstelle bereit.
Ohne gültige Developer-ID kann keine Verbindung aufgebaut werden.
connection.ClientLanguage = TPRClientLanguages.German;
Für die Nutzung der Schnittstelle wird eine Developer-ID benötigt. Diese wird durch unseren Vertrieb bereitgestellt.
Bei Fragen oder Interesse an einer Freischaltung erreichen Sie uns über die Kontaktseite .
Login
Die Methode Login meldet den Benutzer am Tai-Pan-Server an und initialisiert die Sitzung für weitere API-Aufrufe.
bool ok = connection.Login(string "CustomerID", string">"Password");
bool Login(string customerId, string password) Parameter
false – Login fehlgeschlagen
keine Verbindung zum Server
Developer-ID nicht gültig
Client-Information
Mit GetConnectionClientInfo können Informationen zur verwendeten Client- bzw. DLL-Version ausgelesen werden.
connection.GetConnectionClientInfo(ref info);
string text = info.InfoText;
false – Daten konnten nicht geladen werden
Benutzerdaten
GetUserInfo
var userInfo = connection.GetUserInfo(); Signatur TPRUserInfo GetUserInfo() Rückgabe
TPRUserInfo
Das Objekt TPRUserInfo stellt benutzerspezifische Informationen, Benachrichtigungseinstellungen sowie verfügbare Sammlungen wie Watchlists, Börsen und Abonnements bereit.
DatenMobile – Mobilnummer
Username – Anzeigename / Benutzername
UserId – interne Benutzer- oder Kunden-ID
UseEMail – Kennzeichen für E-Mail-Benachrichtigungen
UseSMS – Kennzeichen für SMS-Benachrichtigungen
Exchanges – Börsenverzeichnis
SecurityTypes – Wertpapierarten
Countries – Länder
NewsSubscriptions – vorhandene News-Abonnements
Katalogstruktur
Mit GetCatalogStructure kann die vollständige Katalogstruktur mit Ordnern und Einträgen geladen werden. Kataloge bilden dabei eine Ordnerstruktur von Wertpapieren nach Börsen, Märkten oder Themenbereichen ab. Die Methode liefert sowohl die hierarchische Struktur als auch direkten Zugriff auf alle enthaltenen Ordner- und Katalogobjekte.
var entries = new ListGetCatalogStructure Signatur(); var folders = new Dictionary (); var items = new Dictionary (); connection.GetCatalogStructure(ref entries, ref folders, ref items);
bool GetCatalogStructure( ref ListParameterentries, ref Dictionary folders, ref Dictionary items )
folders – Dictionary mit allen Ordnerobjekten, Schlüssel ist jeweils die Ordner-ID
items – Dictionary mit allen Katalogobjekten, Schlüssel ist jeweils die Item-ID
false – Laden fehlgeschlagen
Suche
Die Search-Funktion ermöglicht die Suche nach Wertpapieren über unterschiedliche Suchtypen wie Symbol, ISIN, Name oder interne Kennungen. Zusätzlich kann die Suche auf bestimmte Wertpapierarten und Börsen eingeschränkt werden.
TPRSearchTypes
EDV – Suche über EDV-Kennung
ISIN – Suche über ISIN
LimitSymbolen – spezielle Suche für Limitsymbole
MMQuoteId – Suche über MM-Quote-ID
Name – Suche über den Namen
QuickSuggestion – schnelle Vorschlagsliste für Suchfelder
SucheSymbolKuerzel – Suche über Symbolkürzel
Symbol – Suche über Symbol
SymbolNo – Suche über interne Symbolnummer
Symbol_Equal – exakte Symbolsuche
Symbol_ISIN_Name – kombinierte Suche über Symbol, ISIN oder Name
TaiPanEODDBID – Suche über interne EOD-Datenbank-ID
Search
var result = connection.Search( TPRSearchTypes.Name, string "Daimler", TPRSecurityType.All.Id,0 );Signatur
TPRSymbolList Search(
TPRSearchTypes searchType,
string searchText,
int securityTypeId,
int exchangeId
) Parameter
searchText – Suchbegriff, z. B. Name, ISIN oder Symbol
securityTypeId – Filter auf eine Wertpapierart; TPRSecurityType.All.Id bedeutet keine Einschränkung nach Typ
exchangeId – Filter auf eine Börse; 0 bedeutet keine Einschränkung
TPRSecurityType
All – alle Wertpapierarten
Die vollständigen verfügbaren Security-Typen werden über userInfo.SecurityTypes bereitgestellt. Dort kann auf Id und Bezeichnung zugegriffen werden.
Watchlists
Mit den Watchlist-Funktionen können persönliche Beobachtungslisten erstellt, verwaltet und geladen werden. Wertpapiere lassen sich dabei einzeln, gesammelt oder direkt aus Suchergebnissen zu einer Watchlist hinzufügen.
AddWatchList
Erstellt eine neue Watchlist.
SignaturTPRWatchList AddWatchList(string name) Parameter
var watchlist = userInfo.WatchLists.AddWatchList(string "Meine Watchlist");
Add (Einzelnes Instrument)
Fügt ein einzelnes Instrument zur Watchlist hinzu.
Beispielwatchlist.Add(169286); Signatur void Add(int symbolNo) Parameter
Add (Mehrere Instrumente)
Fügt mehrere Instrumente gleichzeitig zur Watchlist hinzu.
Beispielwatchlist.Add(new List<int> {169286, 79514}); Signatur void Add(List<int> symbolNumbers) Parameter
Add (Aus Suchergebnis)
Übernimmt alle Instrumente aus einer Trefferliste in die Watchlist.
Beispielwatchlist.Add(result); Signatur void Add(TPRSymbolList symbols) Parameter
GetWatchListContent
Lädt den Inhalt einer Watchlist.
Beispielvar entries = connection.GetWatchListContent(watchlist.Id); Signatur TPRSymbolList GetWatchListContent(int watchListId) Parameter
DeleteWatchList
Löscht eine bestehende Watchlist.
BeispieluserInfo.WatchLists.DeleteWatchList(watchlist.Id); Signatur bool DeleteWatchList(int watchListId) Parameter
false – Löschen fehlgeschlagen
Realtime Push-Feed
Der Realtime Push-Feed ermöglicht den Empfang von Echtzeitdaten und Push-Nachrichten für abonnierte Wertpapiere. Instrumente können dynamisch abonniert oder entfernt werden, während neue Feed-Nachrichten fortlaufend ausgelesen werden können.
Verarbeitung von Feed-Nachrichten - CodebeispielTPRPushFeedMessage pfm = m_PushFeed.GetNextPushFeedMessage();
if (pfm != null)
{
do
{
switch (pfm.MessageType)
{
case TPRPushFeedMessageTypes.Quote:
var TickMessage = pfm as TPRQuoteTickMessage;
switch (TickMessage.QuoteType)
{
case TPRQuoteTypes.Ask:
// TickMessage.QuoteTick.Quote
// TickMessage.QuoteTick.Volume
// TickMessage.QuoteTick.Time
break;
case TPRQuoteTypes.Last:
// TickMessage.QuoteTick.Quote
// TickMessage.QuoteTick.Volume
// TickMessage.QuoteTick.Time
break;
case TPRQuoteTypes.Bid:
// TickMessage.QuoteTick.Quote
// TickMessage.QuoteTick.Volume
// TickMessage.QuoteTick.Time
break;
case TPRQuoteTypes.OFF_MARKET:
// TickMessage.QuoteTick.Quote
// TickMessage.QuoteTick.Volume
// TickMessage.QuoteTick.Time
break;
case TPRQuoteTypes.Auction:
// TickMessage.QuoteTick.Quote
// TickMessage.QuoteTick.Volume
// TickMessage.QuoteTick.Time
break;
case TPRQuoteTypes.OpenInterest:
// TickMessage.QuoteTick.Quote
// TickMessage.QuoteTick.Volume
// TickMessage.QuoteTick.Time
break;
}
break;
case TPRPushFeedMessageTypes.MarketDepth:
var MarketDepthMessage = pfm as TPRMarketDepthMessage;
// MarketDepthMessage.QuoteTick.Quote
// MarketDepthMessage.QuoteTick.Time
// MarketDepthMessage.QuoteTick.Volume
// MarketDepthMessage.QuoteType
// MarketDepthMessage.Position
break;
}
m_PushFeed.ReturnFeedMessage(pfm); // Speicher freigeben
pfm = m_PushFeed.GetNextPushFeedMessage();
} while (pfm != null);
}
GetPushFeed
Erzeugt ein TPRPushFeed-Objekt für den Empfang von Realtime-Nachrichten.
SignaturTPRPushFeed GetPushFeed() Rückgabe
var feed = connection.GetPushFeed();
feed.ConnectFeed();
SubscribeSymbol
Abonniert Realtime-Daten für ein einzelnes Instrument.
Beispielfeed.SubscribeSymbol(169286); Signatur bool SubscribeSymbol(int symbolNo) Parameter
false – Abo fehlgeschlagen
SubscribeSymbol (Mehrere Instrumente)
Abonniert Realtime-Daten für mehrere Instrumente gleichzeitig.
Beispielfeed.SubscribeSymbol(new List<int> {169286, 79514}); Signatur bool SubscribeSymbol(List<int> symbolNumbers) Parameter
false – mindestens ein Abo fehlgeschlagen oder der Aufruf war nicht erfolgreich
UnsubscribeSymbol
Entfernt ein bestehendes Realtime-Abonnement.
Beispielfeed.UnsubscribeSymbol(169286); Signatur bool UnsubscribeSymbol(int symbolNo) Parameter
false – Entfernen fehlgeschlagen
GetNextPushFeedMessage
Liest die nächste verfügbare Feed-Nachricht aus.
Beispielvar msg = feed.GetNextPushFeedMessage(); Signatur TPRPushFeedMessage GetNextPushFeedMessage() Rückgabe
TPRQuoteTypes.Last – Tatsächlich gehandelte Preise (letzter ausgeführter Trade / Schlusskurs eines Ticks)
TPRQuoteTypes.Bid – Kaufkurs: höchster Preis, den ein Käufer aktuell bereit ist zu zahlen
TPRQuoteTypes.Ask – Verkaufskurs: niedrigster Preis, zu dem ein Verkäufer aktuell bereit ist zu verkaufen
TPRQuoteTypes.Auction – Auktionskurs aus Eröffnungs-, Schluss- oder Intraday-Auktionen
TPRQuoteTypes.OpenInterest – Open Interest / Anzahl offener Kontrakte bei Terminmarktinstrumenten
TPRPushFeedMessageTypes
MarketDepth – neue Markttiefe
News – neue Nachricht
SymbolUpdate – Aktualisierung der Stammdaten eines Symbols
LimitUpdate – Änderung an einem Limit / Alert
LimitTrigger – Limit / Alert wurde ausgelöst
Reconnect – Reconnect-Status
Korrection – Kurskorrektur
Ping – Heartbeat des Servers
Info – allgemeine Information
ConnectionStatus – Verbindungsstatus
feed.DisconnectFeed();
Candle Charts
Mit GetCandleChart können historische Candle- bzw. Kursdaten für ein Wertpapier geladen werden. Dabei lassen sich Tagesdaten oder komprimierte Zeitintervalle wie Minutenkerzen abrufen.
GetCandleChart
Verfügbare OverloadsTPRCandleList GetCandleChart(int symbolNo, DateTime from) TPRCandleList GetCandleChart(int symbolNo, int compression, int count) TPRCandleList GetCandleChart(int symbolNo, int compression, DateTime from)Parameter
compression – Komprimierung der Kerzen, z. B. Minutenintervall
count – Anzahl der gewünschten Kerzen
from – Startdatum ab dem Candles geladen werden
var candles = connection.GetCandleChart(169286, DateTime.Now.AddDays(-10)); Minuten var candles = connection.GetCandleChart(169286, 15, DateTime.Now.AddDays(-10)); Anzahl var candles = connection.GetCandleChart(169286, 12, 42);
Intraday Charts
Mit GetIntradayChart können Intraday-Kursdaten und Tickdaten für Wertpapiere geladen werden. Dabei können verschiedene Kursarten wie Last-, Bid- oder Ask-Kurse sowie unterschiedliche Zeiträume und Detailstufen abgefragt werden.
OverloadsTPRQuoteTickList GetIntradayChart(int symbolNo, DateTime from) TPRQuoteTickList GetIntradayChart(int symbolNo, DateTime from, int dayCount) bool GetIntradayChart(int symbolNo, DateTime from, out TPRQuoteTickList last, out TPRQuoteTickList ask, out TPRQuoteTickList bid, int dayCount) TPRQuoteTickList GetIntradayChart(SymbolNo startDate, DateTime endDateThisLoad, TPRQuoteTypes quoteType)Parameter
from – Startdatum der Abfrage
dayCount – Anzahl der Tage ab from
startDate – Startdatum der Abfrage (für erweiterten Overload)
endDateThisLoad – Enddatum der Abfrage
quoteType – Art der Kursdaten (siehe unten)
last – Rückgabeparameter für Last-Ticks
ask – Rückgabeparameter für Ask-Ticks
bid – Rückgabeparameter für Bid-Ticks
TPRQuoteTypes.last – Tatsächlich gehandelte Preise (letzter ausgeführter Trade / Schlusskurs eines Ticks)
TPRQuoteTypes.bid – Kaufkurs: höchster Preis, den ein Käufer aktuell bereit ist zu zahlen
TPRQuoteTypes.ask – Verkaufskurs: niedrigster Preis, zu dem ein Verkäufer aktuell bereit ist zu verkaufen
bei bool: true = Daten erfolgreich geladen, false = Laden fehlgeschlagen
var ticks = connection.GetIntradayChart(169286, DateTime.Now.AddDays(-1)); Mit Bid/Ask TPRQuoteTickList last, ask, bid;
connection.GetIntradayChart(169286, DateTime.Now.AddDays(-3), out last, out ask, out bid, 1); Mit QuoteType var ticks = connection.GetIntradayChart(169286, DateTime.Now.AddDays(-1), DateTime.Now, TPRQuoteTypes.last);
Markttiefe
Mit GetMarketDepth kann die aktuelle Markttiefe ( Level 2 ) eines Instruments abgerufen werden. Dabei stehen die Kauf- und Verkaufsseite des Orderbuchs inklusive Preis- und Volumeninformationen zur Verfügung.
var depth = connection.GetMarketDepth(169286); Signatur TPRMarketDepth GetMarketDepth(int symbolNo) Parameter
foreach (var a in depth.Ask) { var price = a.Quote; }Bid
foreach (var b in depth.Bid) { var price = b.Quote; }
Options Matrix
Mit GetOptionsMatrix kann die strukturierte Optionsmatrix eines Basiswerts geladen werden. Die Matrix enthält verfügbare Optionen und Optionsscheine inklusive Laufzeiten, Basispreisen und weiterer Marktdaten.
var matrix = connection.GetOptionsMatrix(169286); Signatur TPROptionsMatrix GetOptionsMatrix(int symbolNo) Parameter
Objekte
TPRSymbol
ISIN – internationale Wertpapierkennnummer
WKN – nationale Kennung
Name – Bezeichnung des Instruments
SymbolString – Kürzel / Symbolanzeige
LastBid – letzter Geldkurs
LastAsk – letzter Briefkurs
LastTrade – letzter gehandelter Kurs
DayOpen – Tageseröffnung
DayHigh – Tageshoch
DayLow – Tagestief
DayVolume oder Volume – Tagesvolumen, sofern verfügbar
TPRCandle
High – Höchstkurs
Low – Tiefstkurs
Close – Schlusskurs
Time – Zeitstempel der Candle
Volume – Volumen der Candle
TPRQuoteTick
Time – Zeitstempel
Volume – Volumen zum Tick
Hinweise
PushFeed nicht im UI-Thread verarbeiten
SymbolNo ist die zentrale Referenz für fast alle Methoden
ExchangeId = 0 bedeutet keine Einschränkung