Skip to content

Commit 39e16d5

Browse files
Enhanced trading.py with improved get_darwin_status method and updated simulation examples
1 parent 60be9f1 commit 39e16d5

12 files changed

Lines changed: 3586 additions & 814 deletions

README.md

Lines changed: 120 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,159 @@
1-
# Directa Trading API
1+
# Directa API
22

3-
Un wrapper Python per interagire con l'API Trading di Directa SIM tramite la piattaforma Darwin.
3+
Una libreria Python per interagire con le API di Directa Trading, che consente di effettuare operazioni di trading e recuperare dati storici.
44

55
## Caratteristiche
66

7-
- Connessione all'API Trading di Directa SIM (porta 10002)
8-
- Gestione automatica della connessione e monitoraggio dello stato
9-
- Supporto per le operazioni di base (acquisto/vendita, cancellazione ordini)
10-
- Supporto per query di portfolio, disponibilità e informazioni account
11-
- Modalità simulazione per testare operazioni senza utilizzare denaro reale
12-
- Parser dettagliati per le risposte dell'API
7+
- **Trading API**: Connessione e interazione con l'API di trading Directa (porta 10002)
8+
- Piazzare ordini (limite, mercato, stop, trailing stop, iceberg)
9+
- Gestire ordini e posizioni
10+
- Recuperare informazioni di account e portafoglio
11+
- Modalità simulazione per testare strategie senza utilizzare denaro reale
12+
13+
- **Historical Data API**: Accesso ai dati storici di Directa (porta 10003)
14+
- Dati tick-by-tick
15+
- Dati a candele (intraday e giornalieri)
16+
- Intervalli di date personalizzati
17+
- Gestione volume after-hours
18+
19+
20+
## Requisiti
21+
22+
- Python 3.9 o versioni successive
23+
- Piattaforma Darwin di Directa in esecuzione sul sistema
1324

1425
## Installazione
1526

1627
```bash
17-
git clone https://github.com/TUOUSERNAME/directa-api-python.git
18-
cd directa-api-python
28+
# Clone del repository
29+
git clone https://github.com/username/directa_api.git
30+
cd directa_api
31+
32+
# Installazione
1933
pip install -e .
2034
```
2135

22-
## Requisiti
23-
24-
- Python 3.9+
25-
- Piattaforma di trading Darwin in esecuzione
36+
## Guida rapida
2637

27-
## Utilizzo base
38+
### Trading API
2839

2940
```python
3041
from directa_api import DirectaTrading
3142

32-
# Connessione all'API
33-
api = DirectaTrading()
34-
if api.connect():
35-
# Verifica dello stato
36-
status = api.get_darwin_status()
37-
print(f"Stato connessione: {status['data']['connection_status']}")
43+
# Connessione all'API di trading
44+
with DirectaTrading() as api:
45+
# Ottieni informazioni sull'account
46+
account_info = api.get_account_info()
47+
print(f"Liquidità: {account_info.get('data', {}).get('liquidity')}")
3848

39-
# Ottieni informazioni account
40-
account = api.get_account_info()
41-
print(f"Codice account: {account['data']['account_code']}")
42-
print(f"Liquidità: {account['data']['liquidity']}")
49+
# Piazza un ordine limite
50+
order = api.buy_limit("ENI.MI", 10, 13.50)
4351

44-
# Ottieni portfolio
52+
# Ottieni informazioni sul portafoglio
4553
portfolio = api.get_portfolio()
46-
if portfolio['success']:
47-
for position in portfolio['data']:
48-
print(f"{position['symbol']}: {position['quantity_portfolio']} azioni")
4954

50-
# Chiusura connessione
51-
api.disconnect()
55+
# Verifica lo stato degli ordini
56+
orders = api.get_orders()
5257
```
5358

54-
## Modalità Simulazione
59+
### Historical Data API
5560

56-
È possibile utilizzare la modalità simulazione per testare operazioni senza utilizzare denaro reale:
61+
```python
62+
from directa_api import HistoricalData
63+
64+
# Connessione all'API per dati storici
65+
with HistoricalData() as api:
66+
# Ottieni dati giornalieri
67+
daily_candles = api.get_daily_candles("ENI.MI", days=30)
68+
69+
# Ottieni dati intraday (candele a 5 minuti)
70+
intraday_candles = api.get_intraday_candles("ENI.MI", days=1, period_minutes=5)
71+
72+
# Ottieni dati tick by tick
73+
ticks = api.get_tick_data("ENI.MI", days=1)
74+
75+
# Specifica un intervallo di date
76+
import datetime
77+
end_date = datetime.datetime.now()
78+
start_date = end_date - datetime.timedelta(days=7)
79+
80+
# Candele orarie nell'intervallo
81+
candles = api.get_candle_data_range("ENI.MI", start_date, end_date, period_seconds=3600)
82+
```
83+
84+
### Uso combinato
5785

5886
```python
59-
# Crea un'istanza in modalità simulazione
60-
api = DirectaTrading(simulation_mode=True)
61-
api.connect()
87+
from directa_api import DirectaTrading, HistoricalData
88+
import pandas as pd
6289

63-
# Simula acquisto di azioni
64-
order = api.place_order("INTC", "BUY", 100, 50.25)
65-
order_id = order["data"]["order_id"]
90+
# Ottenimento dati storici
91+
with HistoricalData() as historical:
92+
# Ottieni candele giornaliere
93+
candles = historical.get_daily_candles("ENI.MI", days=60)
94+
95+
# Converti in DataFrame pandas per l'analisi
96+
df = pd.DataFrame(candles.get("data", []))
97+
98+
# Calcola medie mobili
99+
df.set_index('timestamp', inplace=True)
100+
df['sma_10'] = df['close'].rolling(window=10).mean()
101+
df['sma_20'] = df['close'].rolling(window=20).mean()
102+
103+
# Genera segnali
104+
df['signal'] = 0
105+
df.loc[df['sma_10'] > df['sma_20'], 'signal'] = 1 # Segnale di acquisto
106+
df.loc[df['sma_10'] < df['sma_20'], 'signal'] = -1 # Segnale di vendita
107+
108+
# Esegui ordini basati sui segnali
109+
with DirectaTrading(simulation_mode=True) as trading:
110+
# Ottieni l'ultimo segnale
111+
last_signal = df['signal'].iloc[-1]
112+
113+
if last_signal > 0:
114+
# Segnale di acquisto
115+
trading.buy_limit("ENI.MI", 10, df['close'].iloc[-1])
116+
elif last_signal < 0:
117+
# Segnale di vendita
118+
trading.sell_limit("ENI.MI", 10, df['close'].iloc[-1])
119+
```
120+
121+
## Esempi
122+
123+
Nella cartella `examples/` sono presenti esempi più dettagliati:
66124

67-
# Simula esecuzione dell'ordine
68-
api.simulate_order_execution(order_id, executed_price=50.00)
125+
- `trading_examples.py` - Esempi di trading (ordini, portfolio, account info)
126+
- `historical_examples.py` - Esempi di recupero e analisi di dati storici
127+
- `combined_example.py` - Esempio di strategia che combina dati storici e trading
69128

70-
# Verifica portfolio simulato
71-
portfolio = api.get_portfolio()
72-
print(portfolio)
129+
Per eseguire gli esempi:
73130

74-
# Chiusura
75-
api.disconnect()
131+
```bash
132+
python examples/trading_examples.py
133+
python examples/historical_examples.py
134+
python examples/combined_example.py
76135
```
77136

78-
Vedere `examples/simulation_example.py` per un esempio completo.
137+
## Note
79138

80-
## Esempi
139+
- **Modalità simulazione**: Per evitare di utilizzare denaro reale durante i test, è possibile abilitare la modalità simulazione:
140+
141+
```python
142+
api = DirectaTrading(simulation_mode=True)
143+
```
81144

82-
Nella directory `examples` sono presenti diversi script di esempio:
145+
- **Supporto per i contesti**: L'API supporta il protocollo context manager di Python per gestire automaticamente la connessione e disconnessione:
83146

84-
- `trading_example.py`: Esempio base di utilizzo dell'API
85-
- `simulation_example.py`: Esempio di utilizzo della modalità simulazione
86-
- `raw_socket_test.py`: Test di connessione socket semplice per diagnostica
147+
```python
148+
with DirectaTrading() as api:
149+
# Operazioni di trading
150+
pass # La disconnessione avviene automaticamente alla fine del blocco
151+
```
87152

88-
## Note sull'API Directa
153+
## Dipendenze
89154

90-
- L'API Trading di Directa è accessibile solo quando la piattaforma Darwin è in esecuzione
91-
- L'API utilizza la porta 10002 per le operazioni di trading
92-
- È necessario avere un account Directa attivo per utilizzare l'API in modalità reale
155+
- La piattaforma Darwin di Directa deve essere in esecuzione sul sistema locale
156+
- Per l'analisi dei dati e gli esempi avanzati: pandas, matplotlib
93157

94158
## Licenza
95159

directa_api/__init__.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Directa API
4+
5+
Una libreria Python per interagire con le API di Directa Trading,
6+
consentendo di effettuare operazioni di trading e recuperare dati storici.
7+
"""
8+
19
from directa_api.trading import DirectaTrading
2-
from directa_api.errors import ERROR_CODES, ORDER_STATUS_CODES, get_error_message, get_order_status
10+
from directa_api.historical import HistoricalData
11+
from directa_api.connection import TradingConnection, HistoricalConnection
12+
from directa_api.simulation import TradingSimulation
313

4-
__all__ = [
5-
'DirectaTrading',
6-
'ERROR_CODES',
7-
'ORDER_STATUS_CODES',
8-
'get_error_message',
9-
'get_order_status'
10-
]
14+
__version__ = '0.2.0'
15+
__all__ = ['DirectaTrading', 'HistoricalData', 'TradingConnection',
16+
'HistoricalConnection', 'TradingSimulation']

0 commit comments

Comments
 (0)