WebtraderFeed v1.1.0
WebtraderFeed v1.1.0
Conectare
Conectarea se face pe socket TCP pe portul 9191. Se accepta doar conexiuni de pe 127.0.0.1
Comunicare
Se face folosind standardul ReadUTF/WriteUTF (2 octeti care reprezinta lungimea a mesajului urmati de mesaj).
Aplicatia va avea o singura conexiune activa. In momentul realizarii unei noi conexiuni, orice conexiune anterior realizata va fi inchisa
Dupa realizarea conexiunii pe socket WebtraderFeed-ul va urma pasii:
1. Transmite stringul “Connected ”
2. Transmite stringul “User:”
3. Asteapta userul de conectare la BMFMS
4. Transmite stringul “Password:”
5. Asteapta parola de conectare la BMFMS
6. Transmite mesaj in format XML cu date primite de la BMFMS
7. Se intoarce la pasul 6
Autentificare
Consta in transmiterea in format UTF a numelui de utilizator si a parolei pentru conectarea la serverele BMFMS.
Dupa realizarea conexiunii la WebtraderFeed si transmiterea utilizatorului si parolei, se va realiza conexiunea catre serverele BMFMS.
Format mesaje XML
value
…
Unde type e tipul de mesaj (descris in tabela 1), isr informatia este grupata in nodurile info. Valoarea informatiei se afla un nodul value iar tipul acestei valori este determinat de valoarea campului label (descris in tabela 2).
|
Tag
|
Value
|
|
311
|
DeleteFuturesOrder |
|
212
|
UpdateFutureSummary |
|
112
|
AddFutureSummary |
|
111
|
AddFuturesOrder |
|
211
|
UpdateFuturesOrder |
|
114
|
AddFuturesSellOrder |
|
115
|
AddFuturesBuyOrder |
|
113
|
AddFuturesDeal |
|
321
|
DeleteOptionsOrder |
|
222
|
UpdateOptionsSummary |
|
121
|
AddOptionsOr der |
|
221
|
UpdateOptionsOrder |
|
123
|
AddOptionsDeal |
|
122
|
AddOptionsSummary |
|
126
|
AddOptionsCompactSummary |
|
400
|
OrderInfo |
|
401
|
Futures OrderSerial Link |
|
410
|
DealInfo |
|
402
|
Options OrderSerial Link |
|
010
|
FuturesInfo |
|
030
|
ChatInfo |
Tabela 1
|
Tag
|
Value
|
|
601
|
FuturesOrderSerial |
|
602
|
OptionsOrderSerial |
|
503
|
ContractType |
|
504
|
SettleDate |
|
510
|
BestBid |
|
511
|
BestAsk |
|
520
|
Open |
|
505
|
SettlePrice |
|
530
|
High |
|
531
|
Low |
|
525
|
change |
|
540
|
Trades |
|
542
|
contractsVolume |
|
550
|
OpenInt |
|
500
|
Status |
|
420
|
AgencyCode |
|
421
|
ClientCode |
|
410
|
Price |
|
415
|
Validity |
|
417
|
BuySell |
|
412
|
OrderType |
|
411
|
ActivationPrice |
|
430
|
BuyAgencyCode |
|
431
|
BuyClientCode |
|
432
|
BuyComision |
|
435
|
SellAgencyCode |
|
436
|
SellClientCode |
|
437
|
SellComision |
|
440
|
DealType |
|
442
|
DealTime |
|
445
|
DealSerial |
|
620
|
CallPut |
|
630
|
Strike |
|
635
|
SettlePrice |
|
637
|
Premium |
|
636
|
LastSettle |
|
480
|
StrikeStart |
|
481
|
StrikeStop |
|
482
|
StrikeStep |
|
610
|
LocalSerial |
|
620
|
Comment |
|
611
|
MarketSerial |
|
580
|
Sell agressor/initiator (1=agressor, 0=initiator) |
|
581
|
Buy agressor/initiator (1=agressor, 0=initiator) |
|
612
|
Sell serial (market serial if initiator, localserial if agressor) |
|
614
|
Buy serial (market serial if initiator, localserial if agressor) |
|
031
|
ChatInfo |
|
011
|
FuturesInfo |
Tabela 2
Exemplu conectare
In directorul extra al arhivei zip exista si un exemplu de client ce se conecteaza la WebtraderFeed.
import java.io.*;
import java.net.*;
public class SibexAPIClient {
private static Socket s;
private static DataOutputStream dos;
private static DataInputStream dis;
private static BufferedReader kin;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
kin = new BufferedReader(new InputStreamReader(System.in));
s = new Socket(“127.0.0.1″,9191);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
System.out.print(dis.readUTF());//Connected
System.out.print(dis.readUTF());//User:
dos.writeUTF(kin.readLine());dos.flush();
System.out.print(dis.readUTF());//Password:
dos.writeUTF(kin.readLine());dos.flush();
String z=”";
while (true){
System.out.print(dis.readUTF());//xml msg
}
}catch(Exception e){
e.printStackTrace();
}
}
}
Tansmitere Ordine Futures****
WebtraderFeed poate transmite ordine futures spre BMFM. Pentru aceasta accepta ca si input mesaje in format xml cu datele ordinului in formatul de mai jos(campurile sunt descrise in tabela 3).
|
Tag
|
Value
|
|
ls
|
LocalSerial |
|
ct
|
ContractType |
|
sd
|
SettleDate |
|
ac
|
AgencyCode |
|
cc
|
ClientCode |
|
vo
|
Volume |
|
pr
|
Price |
|
vl
|
Validity* |
|
bs
|
Side** |
|
ot
|
OrderType*** |
|
ap
|
ActPrice |
Tabela 3
* Valori posibile: Day, GTK sau format hh-mm (hh numar de ore intre 00 si 23 si mm numar de minute intre 00 si 59)
** Valori posibile: Buy sau Sell
*** Valori posibile: Limit, Package, StopLoss, TakeProfit sau TrailingStop
**** daca optiunea este activa
Actualizare Ordine Futures****
WebtraderFeed poate actualiza ordine futures BMFM. Pentru aceasta accepta ca si input mesaje in format xml cu datele ordinului in formatul de mai jos(campurile sunt descrise in tabela 4).
|
Tag
|
Value
|
|
ms
|
MarketSerial |
|
ct
|
ContractType |
|
sd
|
SettleDate |
|
ac
|
AgencyCode |
|
cc
|
ClientCode |
|
vo
|
Volume |
|
pr
|
Price |
|
vl
|
Validity* |
|
bs
|
Side** |
|
ot
|
OrderType*** |
|
ap
|
ActPrice |
|
ov
|
OldVolume |
Tabela 4
* Valori posibile: Day, GTK sau format hh-mm (hh numar de ore intre 00 si 23 si mm numar de minute intre 00 si 59)
** Valori posibile: Buy sau Sell
*** Valori posibile: Limit, Package, StopLoss, TakeProfit sau TrailingStop
**** daca optiunea este activa
Stergere Ordine Futures*
WebtraderFeed poate transmite comanda de stergere de ordine futures spre BMFM. Pentru aceasta accepta ca si input mesaje in format xml cu datele ordinului in formatul de mai jos(campurile sunt descrise in tabela 5).
|
Tag
|
Value
|
|
ms
|
MarketSerial |
Tabela 5
* daca optiunea este activa
Cerere Deal-uri Futures*
WebtraderFeed poate transmite comanda de cerere de deal-uri futures spre BMFM incepand de la un anumit numar serial. Pentru aceasta accepta ca si input mesaje in format xml cu date in formatul de mai jos(campurile sunt descrise in tabela 6).
|
Tag
|
Value
|
|
sn
|
Deal serial number |
Tabela 6
* daca optiunea este activa
Raspuns WebtraderFeed pentru mesaje receptionate de la client
WebtraderFeed verifica sintaxa mesajului primit de la client. Daca mesajul este validat clientul va primi inapoi mesajul:
OK
altfel mesajul:
KO
Pentru a putea fi analizat, mesajul trebuie sa fie in format corect xml. In caz contrar se genereaza exceptie fatala care va duce la distrugerea conexiunii.
Conectarea WebtraderFeed la serverele BMFM
In momentul in care WebtraderFeed reuseste sa se conecteze la serverele BMFM clientul va primi urmatorul mesaj:
conected
La o eventuala deconectare de la serverele BMFM clientul va primi urmatorul mesaj:
disconected