cripsy-binary-api 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. cripsy_binary_api-0.3.1/.env.example +16 -0
  2. cripsy_binary_api-0.3.1/.github/workflows/ci.yml +42 -0
  3. cripsy_binary_api-0.3.1/.github/workflows/wheels.yml +111 -0
  4. cripsy_binary_api-0.3.1/.gitignore +22 -0
  5. cripsy_binary_api-0.3.1/CHANGELOG.md +162 -0
  6. cripsy_binary_api-0.3.1/Cargo.lock +1577 -0
  7. cripsy_binary_api-0.3.1/Cargo.toml +66 -0
  8. cripsy_binary_api-0.3.1/LICENSE +21 -0
  9. cripsy_binary_api-0.3.1/PKG-INFO +42 -0
  10. cripsy_binary_api-0.3.1/README.md +423 -0
  11. cripsy_binary_api-0.3.1/docs/01_introduccion.es.md +117 -0
  12. cripsy_binary_api-0.3.1/docs/deriv/01_introduccion.es.md +55 -0
  13. cripsy_binary_api-0.3.1/docs/deriv/02_cuenta/01_cuentas_identificadores.es.md +46 -0
  14. cripsy_binary_api-0.3.1/docs/deriv/03_mercado/01_catalogo_velas_ticks.es.md +73 -0
  15. cripsy_binary_api-0.3.1/docs/deriv/04_ordenes/01_rise_fall_historial.es.md +63 -0
  16. cripsy_binary_api-0.3.1/docs/deriv/05_operativa/01_reconexion_reconciliacion.es.md +41 -0
  17. cripsy_binary_api-0.3.1/docs/deriv/06_limites/01_limites.es.md +40 -0
  18. cripsy_binary_api-0.3.1/docs/herramientas/01_herramientas.es.md +137 -0
  19. cripsy_binary_api-0.3.1/docs/iqoption/01_cuenta/01_sesion_cuentas.es.md +95 -0
  20. cripsy_binary_api-0.3.1/docs/iqoption/02_mercado/01_historicos.es.md +50 -0
  21. cripsy_binary_api-0.3.1/docs/iqoption/02_mercado/02_stream_ticks.es.md +71 -0
  22. cripsy_binary_api-0.3.1/docs/iqoption/02_mercado/03_fachada_sincrona.es.md +104 -0
  23. cripsy_binary_api-0.3.1/docs/iqoption/03_ordenes/01_binary.es.md +55 -0
  24. cripsy_binary_api-0.3.1/docs/iqoption/03_ordenes/02_digital.es.md +68 -0
  25. cripsy_binary_api-0.3.1/docs/iqoption/03_ordenes/03_blitz.es.md +59 -0
  26. cripsy_binary_api-0.3.1/docs/iqoption/04_operativa/01_indicadores.es.md +50 -0
  27. cripsy_binary_api-0.3.1/docs/iqoption/04_operativa/02_reconexion.es.md +107 -0
  28. cripsy_binary_api-0.3.1/docs/python/01_python.es.md +165 -0
  29. cripsy_binary_api-0.3.1/docs/releases/0.3.0.md +50 -0
  30. cripsy_binary_api-0.3.1/docs/releases/0.3.1.md +48 -0
  31. cripsy_binary_api-0.3.1/examples/build_docs.rs +719 -0
  32. cripsy_binary_api-0.3.1/examples/deriv_conectar.rs +147 -0
  33. cripsy_binary_api-0.3.1/examples/deriv_densidad.rs +92 -0
  34. cripsy_binary_api-0.3.1/examples/deriv_orden_demo.rs +143 -0
  35. cripsy_binary_api-0.3.1/examples/deriv_reconciliacion.rs +143 -0
  36. cripsy_binary_api-0.3.1/examples/deriv_reconexion.rs +122 -0
  37. cripsy_binary_api-0.3.1/examples/deriv_ticks.rs +68 -0
  38. cripsy_binary_api-0.3.1/examples/ejemplo_lectura.rs +77 -0
  39. cripsy_binary_api-0.3.1/examples/ejemplo_orden_demo.rs +109 -0
  40. cripsy_binary_api-0.3.1/examples/ejemplo_sincrono.rs +68 -0
  41. cripsy_binary_api-0.3.1/examples/estado_cuenta.rs +35 -0
  42. cripsy_binary_api-0.3.1/examples/verificar_todo.rs +561 -0
  43. cripsy_binary_api-0.3.1/img/banner.svg +32 -0
  44. cripsy_binary_api-0.3.1/img/donacion-binance.png +0 -0
  45. cripsy_binary_api-0.3.1/index.html +96 -0
  46. cripsy_binary_api-0.3.1/installation/README.md +76 -0
  47. cripsy_binary_api-0.3.1/installation/check_env.ps1 +47 -0
  48. cripsy_binary_api-0.3.1/installation/install.ps1 +162 -0
  49. cripsy_binary_api-0.3.1/pyproject.toml +33 -0
  50. cripsy_binary_api-0.3.1/python/Cargo.lock +1521 -0
  51. cripsy_binary_api-0.3.1/python/Cargo.toml +24 -0
  52. cripsy_binary_api-0.3.1/python/README.md +18 -0
  53. cripsy_binary_api-0.3.1/python/smoke_deriv.py +29 -0
  54. cripsy_binary_api-0.3.1/python/smoke_iqoption.py +27 -0
  55. cripsy_binary_api-0.3.1/python/src/lib.rs +565 -0
  56. cripsy_binary_api-0.3.1/python/test_offline.py +34 -0
  57. cripsy_binary_api-0.3.1/scripts/build_docs.ps1 +6 -0
  58. cripsy_binary_api-0.3.1/scripts/deriv/_env_deriv.ps1 +29 -0
  59. cripsy_binary_api-0.3.1/scripts/deriv/verificar_deriv.ps1 +39 -0
  60. cripsy_binary_api-0.3.1/scripts/iqoption/_env.ps1 +25 -0
  61. cripsy_binary_api-0.3.1/scripts/iqoption/balance.ps1 +6 -0
  62. cripsy_binary_api-0.3.1/scripts/iqoption/conectar.ps1 +7 -0
  63. cripsy_binary_api-0.3.1/scripts/iqoption/operar.ps1 +16 -0
  64. cripsy_binary_api-0.3.1/scripts/iqoption/verificar_iqoption.ps1 +24 -0
  65. cripsy_binary_api-0.3.1/scripts/verificar_todo.ps1 +24 -0
  66. cripsy_binary_api-0.3.1/scripts/verify.ps1 +26 -0
  67. cripsy_binary_api-0.3.1/src/broker/config.rs +92 -0
  68. cripsy_binary_api-0.3.1/src/broker/deriv/config.rs +202 -0
  69. cripsy_binary_api-0.3.1/src/broker/deriv/mod.rs +12 -0
  70. cripsy_binary_api-0.3.1/src/broker/deriv/protocol.rs +366 -0
  71. cripsy_binary_api-0.3.1/src/broker/deriv/session.rs +1361 -0
  72. cripsy_binary_api-0.3.1/src/broker/error.rs +43 -0
  73. cripsy_binary_api-0.3.1/src/broker/extras.rs +74 -0
  74. cripsy_binary_api-0.3.1/src/broker/historico.rs +194 -0
  75. cripsy_binary_api-0.3.1/src/broker/iq_option/client.rs +804 -0
  76. cripsy_binary_api-0.3.1/src/broker/iq_option/endpoints.rs +100 -0
  77. cripsy_binary_api-0.3.1/src/broker/iq_option/mapper.rs +1198 -0
  78. cripsy_binary_api-0.3.1/src/broker/iq_option/mod.rs +13 -0
  79. cripsy_binary_api-0.3.1/src/broker/iq_option/session.rs +1305 -0
  80. cripsy_binary_api-0.3.1/src/broker/mod.rs +31 -0
  81. cripsy_binary_api-0.3.1/src/broker/registry.rs +51 -0
  82. cripsy_binary_api-0.3.1/src/broker/session.rs +49 -0
  83. cripsy_binary_api-0.3.1/src/broker/sync.rs +239 -0
  84. cripsy_binary_api-0.3.1/src/broker/trait_.rs +137 -0
  85. cripsy_binary_api-0.3.1/src/compliance.rs +225 -0
  86. cripsy_binary_api-0.3.1/src/domain/account.rs +63 -0
  87. cripsy_binary_api-0.3.1/src/domain/asset.rs +140 -0
  88. cripsy_binary_api-0.3.1/src/domain/candle.rs +70 -0
  89. cripsy_binary_api-0.3.1/src/domain/error.rs +24 -0
  90. cripsy_binary_api-0.3.1/src/domain/event.rs +82 -0
  91. cripsy_binary_api-0.3.1/src/domain/mod.rs +27 -0
  92. cripsy_binary_api-0.3.1/src/domain/operation.rs +137 -0
  93. cripsy_binary_api-0.3.1/src/domain/payout.rs +85 -0
  94. cripsy_binary_api-0.3.1/src/domain/platform.rs +91 -0
  95. cripsy_binary_api-0.3.1/src/domain/position.rs +40 -0
  96. cripsy_binary_api-0.3.1/src/lib.rs +25 -0
  97. cripsy_binary_api-0.3.1/src/transport/error.rs +41 -0
  98. cripsy_binary_api-0.3.1/src/transport/http.rs +208 -0
  99. cripsy_binary_api-0.3.1/src/transport/mod.rs +27 -0
  100. cripsy_binary_api-0.3.1/src/transport/retry.rs +137 -0
  101. cripsy_binary_api-0.3.1/src/transport/router.rs +183 -0
  102. cripsy_binary_api-0.3.1/src/transport/websocket.rs +223 -0
@@ -0,0 +1,16 @@
1
+ # Credenciales de IQ Option (cuenta demo).
2
+ # Copiar a .env y completar. NUNCA commitear .env.
3
+
4
+ IQOPTION_EMAIL = "tu-correo@ejemplo.com"
5
+ IQOPTION_PASSWORD = "tu-contrasena"
6
+
7
+ # --- Deriv (API moderna, segunda integración) ---
8
+ # Sin estas claves la API funciona en modo público y gratuito: catálogo,
9
+ # velas, ticks y cotización de payout.
10
+ # Para operar hacen falta credenciales propias: PAT con scope `trade`
11
+ # (o access token OAuth). `DERIV_APPID` solo es obligatorio con PAT.
12
+ DERIV_TOKEN=
13
+ DERIV_APPID=
14
+ # Opcional: cuenta concreta (demo DOT…/VRTC…, real CR…). Si falta, se elige la
15
+ # primera del tipo indicado en `DerivConfig.account`.
16
+ DERIV_ACCOUNT_ID=
@@ -0,0 +1,42 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ calidad:
11
+ name: Calidad (${{ matrix.os }})
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest, windows-latest]
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: dtolnay/rust-toolchain@stable
20
+ with:
21
+ components: rustfmt, clippy
22
+ - name: Formato
23
+ run: cargo fmt --check
24
+ - name: Clippy sin warnings
25
+ run: cargo clippy --all-targets -- -D warnings
26
+ - name: Tests
27
+ run: cargo test
28
+ - name: Build variante blocking
29
+ run: cargo build --no-default-features --features blocking
30
+
31
+ documentacion:
32
+ name: Documentacion navegable
33
+ runs-on: ubuntu-latest
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+ - uses: dtolnay/rust-toolchain@stable
37
+ - name: Generar HTML
38
+ run: cargo run --quiet --example build_docs -- --lang es --out docs/site
39
+ - uses: actions/upload-artifact@v4
40
+ with:
41
+ name: docs-site
42
+ path: docs/site
@@ -0,0 +1,111 @@
1
+ name: Python wheels
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags: ["v*"]
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ linux:
13
+ name: Wheel (${{ matrix.plataforma }})
14
+ runs-on: ${{ matrix.os }}
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ include:
19
+ - os: ubuntu-latest
20
+ plataforma: linux-x64
21
+ imagen: quay.io/pypa/manylinux2014_x86_64:latest
22
+ - os: ubuntu-24.04-arm
23
+ plataforma: linux-arm64
24
+ imagen: quay.io/pypa/manylinux2014_aarch64:latest
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - name: Construir manylinux2014
28
+ run: |
29
+ docker run --rm -v "$PWD:/io" -w /io \
30
+ ${{ matrix.imagen }} \
31
+ bash -c '
32
+ set -euo pipefail
33
+ curl --proto "=https" --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
34
+ . "$HOME/.cargo/env"
35
+ /opt/python/cp310-cp310/bin/python -m pip install --upgrade pip "maturin==1.16.0"
36
+ /opt/python/cp310-cp310/bin/python -m maturin build --release --out /io/dist --compatibility manylinux2014 --manifest-path /io/python/Cargo.toml
37
+ '
38
+ - uses: actions/upload-artifact@v4
39
+ with:
40
+ name: wheels-${{ matrix.plataforma }}
41
+ path: dist/*.whl
42
+
43
+ wheels:
44
+ name: Wheel (${{ matrix.plataforma }})
45
+ runs-on: ${{ matrix.os }}
46
+ strategy:
47
+ fail-fast: false
48
+ matrix:
49
+ include:
50
+ - os: windows-latest
51
+ plataforma: windows-x64
52
+ - os: windows-11-arm
53
+ plataforma: windows-arm64
54
+ - os: macos-15-intel
55
+ plataforma: macos-intel
56
+ - os: macos-latest
57
+ plataforma: macos-arm64
58
+ steps:
59
+ - uses: actions/checkout@v4
60
+ - uses: PyO3/maturin-action@v1
61
+ with:
62
+ args: --release --out dist --compatibility pypi --manifest-path python/Cargo.toml
63
+ manylinux: auto
64
+ - uses: actions/upload-artifact@v4
65
+ with:
66
+ name: wheels-${{ matrix.plataforma }}
67
+ path: dist/*.whl
68
+
69
+ sdist:
70
+ name: Sdist
71
+ runs-on: ubuntu-latest
72
+ steps:
73
+ - uses: actions/checkout@v4
74
+ - uses: PyO3/maturin-action@v1
75
+ with:
76
+ command: sdist
77
+ args: --out dist --manifest-path python/Cargo.toml
78
+ - uses: actions/upload-artifact@v4
79
+ with:
80
+ name: sdist
81
+ path: dist/*.tar.gz
82
+
83
+ release:
84
+ name: Adjuntar al release
85
+ if: startsWith(github.ref, 'refs/tags/')
86
+ needs: [wheels, linux, sdist]
87
+ runs-on: ubuntu-latest
88
+ steps:
89
+ - uses: actions/download-artifact@v4
90
+ with:
91
+ path: dist
92
+ merge-multiple: true
93
+ - uses: softprops/action-gh-release@v2
94
+ with:
95
+ files: dist/*
96
+
97
+ # Publicacion en PyPI: pendiente de configurar el secreto PYPI_API_TOKEN.
98
+ # Cuando exista, descomentar este job (o usar trusted publishing con OIDC).
99
+ #
100
+ # publish:
101
+ # name: Publicar en PyPI
102
+ # if: startsWith(github.ref, 'refs/tags/')
103
+ # needs: [wheels, linux, sdist]
104
+ # runs-on: ubuntu-latest
105
+ # steps:
106
+ # - uses: actions/download-artifact@v4
107
+ # with: { path: dist, merge-multiple: true }
108
+ # - uses: PyO3/maturin-action@v1
109
+ # with: { command: upload, args: "--skip-existing dist/*" }
110
+ # env:
111
+ # MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,22 @@
1
+ # Rust
2
+ /target
3
+
4
+ # Secretos: NUNCA al repositorio
5
+ .env
6
+ .env.*
7
+ !.env.example
8
+
9
+ # Documentación navegable generada (scriptsuild_docs.ps1)
10
+ /docs/site
11
+
12
+ # Volcados de datos y capturas locales
13
+ *.ndjson
14
+ /data
15
+
16
+ # Editores
17
+ .idea
18
+ .vscode
19
+ python/dist/
20
+ __pycache__/
21
+ *.egg-info/
22
+ python/target/
@@ -0,0 +1,162 @@
1
+ # Historial de cambios
2
+
3
+ Formato basado en [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/)
4
+ y versionado semántico.
5
+
6
+ ## [0.3.1] - 2026-11-09
7
+
8
+ ### Añadido
9
+
10
+ - `Broker::iqoption_extras` como acceso opcional y compatible a las capacidades
11
+ exclusivas de IQ Option desde un `Box<dyn Broker>`; los adaptadores que no las
12
+ ofrecen devuelven `None`.
13
+ - Binding Python: `buy_digital`, `buy_blitz` e `indicators`, con rechazo
14
+ explícito en Deriv en lugar de simular esas capacidades.
15
+ - Wheels para Linux x64/arm64, Windows x64/arm64 y macOS Intel/arm64, además del
16
+ sdist.
17
+ - Publicación en PyPI del paquete Python 0.3.1.
18
+
19
+ ### Cambiado
20
+
21
+ - Documentación separada por bróker: `docs/iqoption/` y `docs/deriv/`, con
22
+ subcarpetas de cuenta, mercado, órdenes y operativa; Python y herramientas
23
+ tienen su propia carpeta.
24
+ - Scripts globales en `scripts/` y verificadores/cargadores por bróker en
25
+ `scripts/iqoption/` y `scripts/deriv/`.
26
+ - Assets fuera de `docs/`: el banner y el QR viven en `img/`.
27
+ - El generador de documentación agrupa por bróker y ordena la navegación.
28
+
29
+ ### Corregido
30
+
31
+ - La documentación de Deriv ya no afirma que el payout se consulte por importe:
32
+ `get_payout` usa activo y duración.
33
+ - Enlaces y rutas de scripts actualizados tras la reorganización.
34
+
35
+ ## [0.3.0] - 2026-11-09
36
+
37
+ ### Añadido
38
+
39
+ - Adaptador **Deriv** (API moderna): conexión OTP por REST, gateway público sin
40
+ credenciales, catálogo, velas, cotización de payout, compra y venta rise/fall,
41
+ cierre por `proposal_open_contract`, historial paginado y reconexión con OTP
42
+ nuevo más replay de suscripciones.
43
+ - `Broker::subscribe_ticks` con entrega por `Event::PriceTick`; Deriv implementa
44
+ el stream nativo y el resto de adaptadores hereda un rechazo explícito.
45
+ - `DerivConfig` con `Debug` redactado y sin serializar el token; límites de tasa
46
+ por clase al 80 % de lo documentado por el bróker.
47
+ - `BrokerError` conserva su taxonomía; las capacidades no soportadas responden
48
+ con el mensaje del bróker o con el rechazo por defecto.
49
+
50
+ ### Cambiado (incompatible)
51
+
52
+ - Las capacidades exclusivas de IQ Option (`buy_blitz`, `buy_digital_spot`,
53
+ indicadores técnicos, perfil de activo, live deals y comisiones) salen de
54
+ `Broker` y pasan a `IqOptionExtras`. En `IqOptionBroker` siguen disponibles
55
+ como métodos inherentes, por lo que el código que usa el tipo concreto no
56
+ cambia; quien las invocaba sobre `Box<dyn Broker>` debe usar
57
+ `Box<dyn IqOptionExtras>` o el tipo concreto.
58
+ - Migración: `use cripsy_binary_api::broker::IqOptionExtras;` solo si se consume
59
+ el trait de forma genérica.
60
+
61
+ ### Documentado
62
+
63
+ - Alcance del producto: operación rise/fall, datos para cualquier activo y
64
+ densidad de ticks nativa como diferencial; expansión futura fuera de alcance.
65
+ - `docs/deriv/01_introduccion.es.md`: uso de Deriv, credenciales, límites y
66
+ diferencias con IQ Option.
67
+ - Tabla de densidad medida por clase de activo y separación de los scripts de
68
+ verificación (`verificar_iqoption.ps1`, `verificar_deriv.ps1`,
69
+ `verificar_todo.ps1`).
70
+ - Reconciliación de Deriv verificada en vivo: un cierre ocurrido durante 72 s
71
+ sin conexión se publica una sola vez, sin reenviar la orden.
72
+
73
+
74
+ ## [0.2.1] - 2026-11-09
75
+
76
+ ### Añadido
77
+
78
+ - Prueba del recorrido multi-página de la reconciliación con historiales
79
+ simulados: encuentra cierres en páginas posteriores, corta al localizarlos y
80
+ respeta el límite de diez páginas.
81
+
82
+ ### Corregido
83
+
84
+ - Cifras de verificación de la documentación embebida: la medición final de la
85
+ caída forzada es 4.938 ms sin conexión, con 34 comprobaciones y 0 fallos.
86
+
87
+ ## [0.2.0] - 2026-11-09
88
+
89
+ ### Añadido
90
+
91
+ - Reconexión automática de la sesión: tras una caída del WebSocket la tarea
92
+ del socket reautentica, restaura perfil, balances y catálogo, y reproduce
93
+ las suscripciones antes de volver a despachar. Backoff exponencial con
94
+ saturación; un rechazo de credenciales no se reintenta.
95
+ - `Event::Disconnected { motivo }` y `Event::Reconnected { intentos,
96
+ downtime_ms }` para que el consumidor distinga una caída de un cierre.
97
+ - Registro de suscripciones (velas, live-deals, comisiones, price-splitter y
98
+ cierres de posición) que se usa como fuente del replay.
99
+ - `BrokerError::NotConnected`: las llamadas fallan de inmediato mientras no
100
+ haya socket, en vez de encolarse para ejecutarse con datos obsoletos.
101
+ - `TransportConfig::cola_salida` (256 por defecto): capacidad de la cola de
102
+ salida del socket.
103
+ - Reconciliación al reconectar: las órdenes abiertas cuyo cierre ocurrió sin
104
+ conexión se recuperan del historial de posiciones (paginado, hasta 10 páginas
105
+ de 100) y se publican como `Event::OrderClosed`, sin reenviar nada al bróker.
106
+ - `IqOptionBroker::simular_caida_de_conexion` (marcado `#[doc(hidden)]`) para
107
+ ejercitar la recuperación en pruebas de resiliencia.
108
+ - La verificación viva incluye una caída forzada del socket con comprobación de
109
+ `Disconnected`, `Reconnected`, operativa posterior y replay de suscripciones.
110
+ - `docs/iqoption/04_operativa/02_reconexion.es.md` con el diseño y los límites del
111
+ supervisor de sesión, más la sección de continuidad del README.
112
+ - `Broker::buy_blitz` con `BuyBlitzRequest`: la duración viaja en segundos y el
113
+ payout se puede indicar de forma explícita. `buy_binary` deja de transportar
114
+ segundos en `expiration_minutes` y delega el blitz en la nueva petición.
115
+ - `AccountType::Unknown` para los tipos de balance que el adaptador no reconoce.
116
+ - `Event::EventsLost { count }`: informa de la pérdida de continuidad del bus de
117
+ eventos sin cerrar el stream.
118
+ - Reintentos con backoff en el handshake del WebSocket.
119
+ - Documento de limitaciones conocidas en `docs/01_introduccion.es.md` y en el
120
+ README.
121
+
122
+ ### Corregido
123
+
124
+ - `switch_account` propaga el error del refresco de balances y comprueba que el
125
+ balance solicitado quede activo antes de actualizar la sesión; ya no devuelve
126
+ `Ok(())` cuando el bróker no confirmó el cambio.
127
+ - Un tipo de balance desconocido se mapea a `AccountType::Unknown` en lugar de
128
+ interpretarse como cuenta real.
129
+ - `get_account_type` devuelve error si la sesión no está inicializada, en vez de
130
+ asumir cuenta de práctica.
131
+ - El router retira las solicitudes que expiran y no registra receptores para los
132
+ mensajes que no esperan respuesta (suscripciones).
133
+ - Al cerrarse el socket se descartan las solicitudes pendientes, de modo que
134
+ ninguna espera queda colgada hasta su timeout.
135
+ - Las suscripciones a velas cuyos streams fueron soltados se retiran en el
136
+ siguiente despacho de velas.
137
+ - Documentación corregida: `get_operation_result` lee la caché local (no hace
138
+ consulta remota), `get_payout` devuelve el payout del catálogo y la densidad
139
+ de ticks se describe con la medición real, sin afirmar ausencia de límite.
140
+
141
+ ### Cambiado (incompatible)
142
+
143
+ - `Event` pasa a ser `#[non_exhaustive]` e incorpora variantes nuevas: los
144
+ `match` exhaustivos sobre `Event` deben añadir un brazo `_`.
145
+ - La cola de salida del socket deja de ser ilimitada; una ráfaga superior a
146
+ `TransportConfig::cola_salida` aplica presión al productor.
147
+ - Migración: sustituir los `match` exhaustivos sobre `Event` y, si se construye
148
+ `TransportConfig` con literal de struct, añadir `cola_salida`.
149
+
150
+ ## [0.1.0] - 2026-11-08
151
+
152
+ ### Añadido
153
+
154
+ - Cliente Rust para la API de IQ Option con núcleo `async` y fachada `blocking`.
155
+ - Trait `Broker` multibróker y dominio tipado.
156
+ - Sesión, perfil, balances y cambio de cuenta.
157
+ - Catálogo de activos con metadatos operativos.
158
+ - Velas históricas, descarga paginada, stream multi-tamaño y ticks nativos.
159
+ - Órdenes clásicas (turbo/binary), digitales v2, blitz v2 y venta anticipada.
160
+ - Resultados por evento con caché, historial de posiciones, perfil del activo,
161
+ comisiones y live-deals.
162
+ - Ejemplos ejecutables, scripts de verificación y documentación navegable.