Automation for operations and API data extraction from Cocos Capital broker.
Project description
CocosBot
CocosBot es un paquete de Python diseñado para automatizar operaciones y obtener datos de la API del broker argentino Cocos Capital. Utiliza Playwright para interactuar con la web app.
La historia del proyecto en Medium: CocosBot
Características
- Arquitectura modular con servicios especializados
- Automatización de operaciones en la plataforma Cocos Capital
- Interceptación inteligente de endpoints de API
- Soporte para 2FA (autenticación de dos factores) utilizando cuentas de Gmail
- Sistema robusto de manejo de errores
- Tipado completo con type hints
Arquitectura
cocos_bot/
├── core/ # Componentes fundamentales
│ ├── browser.py # Abstracción de Playwright
│ ├── cocos_capital.py # Orquestador principal
│ ├── exceptions.py # Sistema de errores
├── config/ # Configuración centralizada
│ ├── constants.py # URLs y configs
│ ├── urls.py # Urls de la plataforma
│ └── selectors.py # Selectores UI
│ └── enums.py # Enums
├── utils/ # Utilidades
│ ├── validators.py # Validación
│ ├── helpers.py # Funciones auxiliares
│ ├── gmail_2fa.py # Manejo 2FA
│ └── data_transformations.py
└── services/ # Lógica de negocio
├── auth.py # Autenticación
├── market.py # Operaciones
└── user.py # Gestión de usuario
Requisitos
- Python 3.12 o superior.
- Cuenta en Cocos Capital.
- Credenciales de Gmail configuradas para autenticación 2FA.
Instalación
Instala el paquete y las dependencias ejecutando:
pip install CocosBot
Esto va a instalar automáticamente las dependencias necesarias, como playwright y beautifulsoup4.
Uso
Ejemplo básico
from CocosBot.core.cocos_capital import CocosCapital
# Configurar credenciales
username = "tu_usuario"
password = "tu_contraseña"
gmail_user = "tu_gmail@gmail.com"
gmail_app_pass = "tu_contraseña_de_aplicación"
with CocosCapital(username, password, gmail_user, gmail_app_pass, headless=False) as cocos:
cocos.login()
# Probar view accounts
cuentas = cocos.get_linked_accounts()
print("Cuentas:", cuentas)
# Probar get_orders
orders = cocos.get_orders()
print("Orders:", orders)
# Probar get_mep_value
mep_value = cocos.get_mep_value()
print("MEP Value:", mep_value)
# Probar get_ticker_info
ticker_info = cocos.get_ticker_info("AAPL", "CEDEARS")
print("Ticker Info:", ticker_info)
# Probar Create Order
order= cocos.create_order("FIPL", "BUY", 20000, 335.5 )
print("Order", order)
Métodos Disponibles
Autenticación
login() -> bool: Inicia sesión en la plataforma usando 2FA automáticologout() -> bool: Realiza el cierre de sesión seguro
Usuario y Cuenta
get_user_data() -> Dict[str, Any]: Obtiene los datos del usuarioget_account_tier() -> Dict[str, Any]: Obtiene el nivel de cuenta del usuarioget_portfolio_data() -> Dict[str, Any]: Obtiene los datos del portafoliofetch_portfolio_balance() -> float: Obtiene el balance total del portafolioget_linked_accounts(amount: float = 5000, currency: Currency = Currency.ARS) -> Dict[str, Any]: Obtiene información de cuentas vinculadasget_academy_data() -> Dict[str, Any]: Obtiene datos de la sección Academia
Mercado y Operaciones
create_order(ticker: str, operation: OrderOperation, amount: float, limit: Optional[float] = None) -> bool: Crea una ordenget_ticker_info(ticker: str, ticker_type: Union[str, MarketType], segment: str = "C") -> Dict[str, Any]: Obtiene información de un tickerget_market_schedule() -> Dict[str, Any]: Obtiene los horarios del mercadoget_orders() -> Dict[str, Any]: Obtiene las órdenes del usuarioget_mep_value() -> Dict[str, Any]: Obtiene el valor del dólar MEP
To-Do
- 2FA manual
- Tests unitarios y de integración
- Documentación adicional
Contribución
¡Contribuciones bienvenidas! Si tenés ideas o mejoras, por favor abrí un issue o crea un pull request.
Licencia
Este proyecto está licenciado bajo la Licencia MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cocosbot-0.1.0.tar.gz.
File metadata
- Download URL: cocosbot-0.1.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d92f86156b6033fb249279dba4ae25728239406e32707edff06d6b5792987f68
|
|
| MD5 |
6071fa395030ec7374a8470737f0818b
|
|
| BLAKE2b-256 |
282178f04dec3ac801b5508a88c12bf7d59b8740aff3ef1f9db25de4112a28da
|
File details
Details for the file CocosBot-0.1.0-py3-none-any.whl.
File metadata
- Download URL: CocosBot-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd3a8163eabdd494e55af46f58b63f03adb368b45049f12cafa1283f72e9d6b2
|
|
| MD5 |
b83c552c9732d03e3e1d3784fe72ea01
|
|
| BLAKE2b-256 |
d5ae00a16566bb2a671628e81a5388a490b43d78af4265994c212f3f6d1f812d
|