Una libreria .xll per Excel consente all'utente di collegarsi al servizio API della piattaforma Darwin per ricevere i dati realtime ed effettura operazioni di trading. Questa wiki spiega come installare questa libreria e collegarsi al servizio API da Excel ed elenca i comandi attualmente disponibili.
Se l'utente è abilitato al servizio API, questo verrà avviato automaticamente con la piattaforma Darwin; in caso contrario il servizio non sarà disponibile.
Per poter accedere al servizio API da Excel è necessario installare un'apposita libreria .xll realizzata e distribuita da Directa.
I passi da seguire per installare la libreria sono i seguenti:
NB
Nel caso di utilizzo della Darwin normale, La prima volta è necessario avviare la Darwin dopo l'impostazione spiegata sopra, nelle volte successive la Darwin può essere avviata anche prima dell'apertura del file.NB
Questa operazione d'installazione sarà necessaria solamente la prima volta per permettere al sistema di impostare i componenti aggiuntivi nella posizione corretta,
nelle volte successive si potrà aprire il proprio file direttamente. Questa operazione può essere di nuovo necessaria nel caso in cui i componenti aggiuntivi vengano aggiornati, per questo terremo su questa guida lo stato
dell'avanzamento del progetto.NB
Al momento è possibile operare con una sola Darwin attiva alla volta.
NB
In caso di utilizzo della Darwin normale questi comandi possono essere non considerati.
STATUS | CodiceConto | TRUE/FALSE |
---|
STATUS | 47511 | TRUE |
---|
Per creare la connessione ai prezzi è necessario dopo aver avviato la Darwin digitare questa formula all'interno di una cella Excel
=DirectaDataFeedConnection()
La risposta della formula indicherà lo stato della connessione e notificherà eventuali errori durante la connessione.
Dopo aver ricevuto risposta dalla formula è possibile procedere con la sottoscrizione dei ticker, che verrano spiegati nel paragrafo seguente.
Formato risposta per connessione DataFeed:
DataFeed | STATUS | TRUE/FALSE |
---|
DataFeed | STATUS | TRUE |
---|
NB
Essendo al momento disponibile l'utilizzo di una sola Darwin per questo componente, una volta stabilita la connessione non c'è bisogno su altri fogli o file di eseguire la formula di connessione al datafeed
FUNZIONE | AZIONE |
---|---|
=ANAG("Ticker") | Informazioni sul ticker |
=PX_PACK("Ticker") | Tracciato pacchetto Price relativo al ticker |
=PX_PACK_SCROLL("Ticker") | Tracciato pacchetto Price relativo al ticker in modalità scroll |
=PX_LAST("Ticker") | Ultimo prezzo battuto del ticker in questione |
=CHG_PCT_1D("Ticker") | Varazione percentuale del ticker sottoscritto |
=PX_VOLUME("Ticker") | Volume del ticker in questione |
=PX_VOLUME_PROGRESSIVE("Ticker") | Volume progressivo del ticker in questione |
=PX_CONTRACTS_PROGRESSIVE("Ticker") | Progressivo contratti del ticker in questione |
=PX_LOW("Ticker") | Minimo di giornata del ticker in questione |
=PX_HIGH("Ticker") | Massimo di giornata del ticker in questione |
=BIDASK_PACK("Ticker") | Tracciato pacchetto bidask relativo al ticker |
=BIDASK_PACK_SCROLL("Ticker") | Tracciato pacchetto bidask relativo al ticker in modalità scroll |
=PX_BIDASK_PACK("Ticker") | Tracciato del price e del bidask del relativo titolo |
=PX_BIDASK_PACK_SCROLL("Ticker") | Tracciato del price e del bidask del relativo titolo in modalità scroll |
=BIDASK("Ticker") | Prezzo in acquisto e in vendita rispetto al ticker richiesto |
=MULTIBOOK_BIDASK("Ticker") | Multibook stile Darwin contente solamente il primo livello del book. |
=FLASHBOOK_BIDASK("Ticker") | Flashbook verticale stile Darwin contente solamente il primo livello del book. |
=FLASHBOOK_BIDASK_PX("Ticker") | Flashbook verticale stile Darwin contente solamente il primo livello del book, solamente con il dettaglio dei prezzi |
=PX_BID("Ticker") | Prezzo in acquisto del ticker richiesto |
=BID_SIZE_VOLUME("Ticker") | Numero Azioni in acquisto del ticker richiesto |
=BID_SIZE_PROPOSALS("Ticker") | Numero Proposte in acquisto del ticker richiesto |
=PX_ASK("Ticker") | Prezzo in vendita del ticker richiesto |
=ASK_SIZE_VOLUME("Ticker") | Numero Azioni in vendita del ticker richiesto |
=ASK_SIZE_PROPOSALS("Ticker") | Numero Proposte in vendita del ticker richiesto |
=BOOK5_PACK("Ticker") | Tracciato completo book5 |
=BOOK5_PACK_SCROLL("Ticker") | Tracciato completo book5 in modalità scroll |
=BOOKL1("Ticker") | Campi acquisto e vendita per livello 1 |
=BOOKL2("Ticker") | Campi acquisto e vendita per livello 2 |
=BOOKL3("Ticker") | Campi acquisto e vendita per livello 3 |
=BOOKL4("Ticker") | Campi acquisto e vendita per livello 4 |
=BOOKL5("Ticker") | Campi acquisto e vendita per livello 5 |
=MULTIBOOK_L5("Ticker") | Book5 livelli, ogni riga riporta un livello di book, stile Multibook presente nella Darwin. |
=FLASHBOOK_L5("Ticker") | Book5 livelli in verticale, stile Flashbook presente nella Darwin. |
=FLASHBOOK_L5_PX("Ticker") | Book5 livelli in verticale, stile Flashbook presente nella Darwin, contetterà solamente il dettaglio dei prezzi. |
=PX_BID_L1("Ticker") | Prezzo in acquisto per il livello 1 del book |
=PX_BID_L2("Ticker") | Prezzo in acquisto per il livello 2 del book |
=PX_BID_L3("Ticker") | Prezzo in acquisto per il livello 3 del book |
=PX_BID_L4("Ticker") | Prezzo in acquisto per il livello 4 del book |
=PX_BID_L5("Ticker") | Prezzo in acquisto per il livello 5 del book |
=PX_ASK_L1("Ticker") | Prezzo in vendita per il livello 1 del book |
=PX_ASK_L2("Ticker") | Prezzo in vendita per il livello 2 del book |
=PX_ASK_L3("Ticker") | Prezzo in vendita per il livello 3 del book |
=PX_ASK_L4("Ticker") | Prezzo in vendita per il livello 4 del book |
=PX_ASK_L5("Ticker") | Prezzo in vendita per il livello 5 del book |
=BID_SIZE_VOLUME_L1("Ticker") | Volumi in acquisto per il livello 1 del book |
=BID_SIZE_VOLUME_L2("Ticker") | Volumi in acquisto per il livello 2 del book |
=BID_SIZE_VOLUME_L3("Ticker") | Volumi in acquisto per il livello 3 del book |
=BID_SIZE_VOLUME_L4("Ticker") | Volumi in acquisto per il livello 4 del book |
=BID_SIZE_VOLUME_L5("Ticker") | Volumi in acquisto per il livello 5 del book |
=ASK_SIZE_VOLUME_L1("Ticker") | Volumi in vendita per il livello 1 del book |
=ASK_SIZE_VOLUME_L2("Ticker") | Volumi in vendita per il livello 2 del book |
=ASK_SIZE_VOLUME_L3("Ticker") | Volumi in vendita per il livello 3 del book |
=ASK_SIZE_VOLUME_L4("Ticker") | Volumi in vendita per il livello 4 del book |
=ASK_SIZE_VOLUME_L5("Ticker") | Volumi in vendita per il livello 5 del book |
=BID_SIZE_PROPOSALS_L1("Ticker") | Numero proposte in acquisto per il livello 1 del book |
=BID_SIZE_PROPOSALS_L2("Ticker") | Numero proposte in acquisto per il livello 2 del book |
=BID_SIZE_PROPOSALS_L3("Ticker") | Numero proposte in acquisto per il livello 3 del book |
=BID_SIZE_PROPOSALS_L4("Ticker") | Numero proposte in acquisto per il livello 4 del book |
=BID_SIZE_PROPOSALS_L5("Ticker") | Numero proposte in acquisto per il livello 5 del book |
=ASK_SIZE_PROPOSALS_L1("Ticker") | Numero proposte in vendita per il livello 1 del book |
=ASK_SIZE_PROPOSALS_L2("Ticker") | Numero proposte in vendita per il livello 2 del book |
=ASK_SIZE_PROPOSALS_L3("Ticker") | Numero proposte in vendita per il livello 3 del book |
=ASK_SIZE_PROPOSALS_L4("Ticker") | Numero proposte in vendita per il livello 4 del book |
=ASK_SIZE_PROPOSALS_L5("Ticker") | Numero proposte in vendita per il livello 5 del book |
=UNSUBSCRIBE("Ticker") | Desottoscrive il relativo ticker, tutti i flussi con il relativo ticker non saranno più aggiornate |
NB
Tutte le formule possono essere utilizzate tramite macroVBA, le funzioni da richiamare sono le medesime, unica prerogativa
è passare come argomento nel richiamo di tale formula un riferimento di cella con le coordinate x y desiderate, nel caso non si passasse il riferimento nel richiamo del metodo si verrà indirizzati alla cella A1, questo vale solamente per le funzioni richiamate tramite Macro e non per quelle da cella Excel che riporteranno il proprio risultato nella cella dove è avvenuto il richiamo.
Sub LastPrice()
Dim x As Integer
Dim y As Integer
x = Range("O15").Row
y = Range("O15").Column
Application.Run "PX_LAST", "LX.EURUSD", x, y
End Sub
NB
I prezzi ricevuti variano in base alle abilitazioni ai mercati sul proprio conto Directa.
Di seguito vengono descritti i tracciati in base alla formula inviata:
TIPO | TIT | ORA | ISIN | DES | PRIF | PAPE | FLOT |
---|
TIPO | TIT | ORA | PRZ | QTAAZ | PGRAZ | PGRC | MIN | MAX | VARP |
---|
TICKER | RISULTATO |
---|---|
STLA | 6,255 |
---|---|
TIPO | TIT | ORA | QTAACQ1 | NPACQ1 | PRZACQ1 | QTAVEN1 | NPVEN1 | PRZVEN1 |
---|
TIT | ORA | PRZ | QTAAZ | PGRAZ | PGRC | MIN | MAX | QTAACQ1 | NPACQ1 | PRZACQ1 | QTAVEN1 | NPVEN1 | PRZVEN1 |
---|
STLA | 17:02:33 | 7,83 | 162 | 19137942 | 13341 | 7,745 | 7,885 | 36796 | 19 | 7,825 | 25558 | 16 | 7,83 |
---|
TIT | Prezzo BID | Prezzo ASK |
---|
STLA | 6,24 | 6,245 |
---|
TIT | LAST PRICE | VAR.PERCENTUALE | ORA | QTAACQ1 | NPACQ1 | PRZACQ1 | QTAVEN1 | NPVEN1 | PRZVEN1 |
---|
STLA | 6,235 | -1,11 | 14:49:14 | 20717 | 0 | 6,23 | 10007 | 0 | 6,235 |
---|
TIT | LAST PRICE | VAR.PERCENTUALE | ORA | QTAACQ1 | NPACQ1 | PRZACQ1 | QTAVEN1 | NPVEN1 | PRZVEN1 |
---|
STLA | 6,23 | -1,11 | 15:29:23 | 20517 | 0 | 6,235 | 47526 | 0 | 6,23 |
---|
TIT | LAST PRICE | VAR.PERCENTUALE | ORA | PRZACQ1 | PRZVEN1 |
---|
STLA | 6,23 | -1,11 | 15:29:23 | 6,235 | 6,23 |
---|
TICKER | RISULTATO |
---|---|
STLA | 6,205 |
---|---|
TIPO | TIT | ORA | QTAACQ1 | NPACQ1 | PRZACQ1 | ... | QTAVEN1 | NPVEN1 | PRZVEN1 | ... |
---|
TITOLO | LAST_PRICE | VAR.PERCENTUALE | ORA | ||
---|---|---|---|---|---|
QTAACQ1 | NPACQ1 | PRZACQ1 | QTAVEN1 | NPVEN1 | PRZVEN1 | QTAACQ2 | NPACQ2 | PRZACQ2 | QTAVEN2 | NPVEN2 | PRZVEN2 | QTAACQ3 | NPACQ3 | PRZACQ3 | QTAVEN3 | NPVEN13 | PRZVEN3 | QTAACQ4 | NPACQ4 | PRZACQ4 | QTAVEN4 | NPVEN4 | PRZVEN4 | QTAACQ5 | NPACQ5 | PRZACQ5 | QTAVEN5 | NPVEN5 | PRZVEN5 |
STLA | 6,225 | -1,11 | 16:41:32 | ||
---|---|---|---|---|---|
9609 | 8 | 6,22 | 10474 | 8 | 6,225 | 26701 | 18 | 6,215 | 53330 | 26 | 6,23 | 45557 | 23 | 6,21 | 32604 | 19 | 6,235 | 111783 | 25 | 6,205 | 71744 | 24 | 6,24 | 79707 | 39 | 6,2 | 49387 | 24 | 6,245 |
TITOLO | LAST_PRICE | VAR.PERCENTUALE | ORA |
---|---|---|---|
QTAVEN1 | NPVEN1 | PRZVEN1 | QTAVEN2 | NPVEN2 | PRZVEN2 | QTAVEN3 | NPVEN13 | PRZVEN3 | QTAVEN4 | NPVEN4 | PRZVEN4 | QTAVEN5 | NPVEN5 | PRZVEN5 | QTAACQ1 | NPACQ1 | PRZACQ1 | QTAACQ2 | NPACQ2 | PRZACQ2 | QTAACQ3 | NPACQ3 | PRZACQ3 | QTAACQ4 | NPACQ4 | PRZACQ4 | QTAACQ5 | NPACQ5 | PRZACQ5 |
STLA | 6,24 | -1,11 | 16:59:22 |
---|---|---|---|
48083 | 23 | 6,265 | 50267 | 23 | 6,26 | 85177 | 35 | 6,255 | 79627 | 32 | 6,25 | 18706 | 10 | 6,245 | 31646 | 16 | 6,24 | 28772 | 19 | 6,235 | 43714 | 23 | 6,23 | 111246 | 25 | 6,225 | 87326 | 20 | 6,22 |
TITOLO | LAST_PRICE | VAR.PERCENTUALE | ORA |
---|---|---|---|
PRZVEN1 | PRZVEN2 | PRZVEN3 | PRZVEN4 | PRZVEN5 | PRZACQ1 | PRZACQ2 | PRZACQ3 | PRZACQ4 | PRZACQ5 |
STLA | 6,24 | -1,11 | 16:59:22 |
---|---|---|---|
6,265 | 6,26 | 6,255 | 6,25 | 6,245 | 6,24 | 6,235 | 6,23 | 6,255 | 6,22 |
TITOLO | QTAACQL | NPACQL | PRZACQL | QTAVENL | NPVENL | PRZVENL |
---|
STLA | 33412 | 21 | 6,215 | 50471 | 23 | 6,24 |
---|
TICKER | RISULTATO |
---|---|
STLA | 6,24 |
---|---|
Risponderà true o false più il ticker in questione in base alla riuscita del comando.
Per effettuare operazioni di trading è necessario come prima cosa aprire il canale di trading, tramite l'apposita funzione.
=DirectaTradingConnection() è possibile specificare come parametro un numero di righe, nel qual caso verrano stampate nelle celle successive a dove viene digitato il comando delle righe di log.
La formula restituisce lo stato della connessione e notificherà eventuali errori durante la sessione.
Formato risposta per connessione Trading:
Trading | STATUS | TRUE/FALSE |
---|
Trading | STATUS | TRUE |
---|
NB
Essendo al momento disponibile l'utilizzo di una sola Darwin per questo componente, una volta stabilita la connessione non c'è bisogno su altri fogli o file di eseguire la formula di connessione al trading
Viene riportato di seguito l'elenco delle funzioni disponibili per il trading. Per ciascun comando i parametri possono essere passati come valori contenuti in una cella o come stringhe.
FUNZIONE | AZIONE |
---|---|
=Buy("TITOLO";QUANTITA;PREZZO) | Acquista azioni al prezzo limite indicato |
=Sell("TITOLO";QUANTITA;PREZZO) | Vendi azioni al prezzo limite indicato |
=BuyMarket("TITOLO";QUANTITA) | Acquista azioni senza limite di prezzo |
=SellMarket("TITOLO";QUANTITA) | Vendi azioni senza limite di prezzo |
=BuyStop("TITOLO";QUANTITA;SEGNALE) | Acquista azioni con ordine stop market |
=SellStop("TITOLO";QUANTITA;SEGNALE) | Vendi azioni con ordine stop market |
=BuyStopLimit("TITOLO";QUANTITA;LIMITE;SEGNALE) | Acquista azioni con prz. limite e prz.segnale |
=SellStopLimit("TITOLO";QUANTITA;LIMITE;SEGNALE) | Vendi azioni con prz. limite e prz.segnale |
=ModifyOrder("ID_ORDINE",LIMITE;SEGNALE) | Modifica il prezzo relativo all'ordine indicato nell'idOrdine |
=CancelOrder("ID_ORDINE") | Revoca ordine specificato |
=CancelAll("TICKER") | Revoca tutti gli ordini per il ticker specificato |
Per le informazioni relative alla validità degli ordini nei diversi mercati fare riferimento alla tabella all'interno
dell'Help del sito commerciale all'indirizzo:
http://www.directa.it/pub/it/help/100/2.html
NB
Tutte le formule possono essere utilizzate tramite macroVBA, le funzioni da richiamare sono le medesime, unica prerogativa
è passare come argomento nel richiamo di tale formula un riferimento di cella con le coordinate x y desiderate, nel caso non si passasse il riferimento nel richiamo del metodo si verrà indirizzati alla cella A1, questo vale solamente per le funzioni richiamate tramite Macro e non per quelle da cella Excel che riporteranno il proprio risultato nella cella dove è avvenuto il richiamo.
Sub RevocaOrdine()
Dim id As String
id = Range("G10")
x = Range("I10").Row
y = Range("I10").Column
Application.Run "CancelOrder", id, x, y
End Sub
Quando viene eseguito un comando di trading, nella cella in cui è presente la funzione viene restituito il valore VERO se il comando è stato gestito correttamente dal servizio API.
Non appena diviene disponibile una risposta dal Server di Trading, questa viene stampata alla destra della cella in cui è presente la funzione.
La risposta può essere di due tipi: TRADOK in caso di successo dell'operazione o TRADERR in caso di errore:
Di seguito i dettagli della risposta TRADOK:
RISPOSTA | TIT | ID | STATO | TIPO | QTA | PRZ | PRZS | PRZE | QTAE | QTAR | IDDirecta |
---|
RISPOSTA | TIT | ID | STATO | TIPO | QTA | PRZ | PRZS | MSG |
---|
TRUE | STLA | EXC0 | PENDING | BUY | 1 | 3,5 | 0 | 0 | 0 | S0717114518837 |
---|
FALSE | STLA | EXC1 | REJECTED | BUYMARKET | 1 | ORDINI AL MEGLIO CONSENTITI SOLO CON PARAMETRO ASTA |
---|
Il comando =ModifyOrder("ID_ORDINE";limite;segnale) Permette la modifica di un determinato ordine in base al id, il prezzo segnale può essere omesso per operazioni con limite
La risposta alla forumula sarà composta:
MOD | IDOrdine | Risultato | Price_limit | Price_signal |
---|
MOD | EXC0 | TRUE | 3,8 | 0 |
---|
Il comando =CancelOrder("ID_ORDINE") Permette la revoca dell'ordine con quel determinato ID_ORDINE
La risposta alla forumula sarà composta:
CANCELLED | Risultato | ID_Ordine |
---|
CANCELLED | TRUE | EXC0 |
---|
Il comando =CancelAll("TICKER") Permette la revoca di tutte le operazini su quel determinato ticker
La risposta alla forumula sarà composta:
CANCELLED | TICKER |
---|
N.B La CancelAll è valida solamente per gli ordini normali, non quelli stop o stoplimit, dove è necessario
eseguire una revoca puntuale
dell'ordine tramite CancelOrder, in quanto è lo stesso comportamento della Darwin.
Il comando =Infostock() restituisce l'elenco dei titoli in portafoglio. Ogni riga avrà i seguenti campi, uno per colonna
TICKER | TIME | QTAP | QTADirecta | QTAN | GAIN |
---|
STLA | 17:25:53 | 0 | 0 | 1 | 0 |
---|
NB
Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading
Il comando =Orderlist() restituisce l'elenco degli ordini immessi nella giornata corrente, indipendentemente dallo stato. Ogni riga avrà i seguenti campi, uno per colonna:
TIME | TICKER | ID | STATUS | TIPO | PL | PS | QTA | PM | PE | QTAM | IDDirecta |
---|
17:11:45 | STLA | EXC0 | CANCELLED | BUY | 3,5 | 0 | 1 | 0 | 0 | 0 | S0717114518837 |
17:20:31 | STLA | EXC1 | CANCELLED | BUY | 3,8 | 0 | 1 | 0 | 0 | 0 | S0717203119654 |
17:25:50 | STLA | EXC2 | PENDING | BUY | 3,5 | 0 | 1 | 0 | 0 | 0 | S0717255020209 |
NB
Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading
Il comando =InfoAccount() Restituisce informazioni sullo stato patrimoniale del conto
TIME | Utente | LIQ | Gain€ | OpPr/Loss | Performance |
---|
11:48:17 | 47511 | 52,15 | 0 | 0 | -0,02 |
---|
NB
Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading
Il comando =InfoAvailability() Situazione liquidità portafoglio
TIME | DISPAz | DISPAzM | DISPDer | DISPDerM | LiqTOT |
---|
11:50:22 | 52,15 | 52,15 | 0 | 0 | 52,15 |
---|
NB
Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading