mtcli 3.8.0.dev0__tar.gz → 3.8.0.dev1__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.
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/PKG-INFO +1 -1
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/tick_repository.py +23 -3
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/pyproject.toml +1 -1
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/LICENSE +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/README.md +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/cli.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/bars.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/conf.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/doctor.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/migrate.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/conecta.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/conf.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/config_registre.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/base.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/csv.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/mt5.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/database.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/domain/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/domain/timeframe.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/logger.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/tick_cache.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/tick_streamer.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/001_initial_schema.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/002_ticks_time_msc.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/003_optimize_ticks_without_rowid.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/runner.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/bar_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/bars_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/chart_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/conf_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/consecutive_bars_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/rates_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/signals_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/unconsecutive_bar_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/mt5_context.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugin.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugin_loader.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugin_manager.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/exemplo.py-dist +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/cli.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/conf.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/models/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/models/model_media_movel.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/tests/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/tests/test_mm.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/tests/test_model_media_movel.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/cli.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/conf.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/models/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/models/average_range_model.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/tests/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/tests/test_rm.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/cli.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/conf.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/models/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/models/model_average_volume.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/tests/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/tests/test_vm.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/__init__.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/close_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/full_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/high_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/low_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/min_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/open_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/ranges_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/rates_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/vars_view.py +0 -0
- {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/volumes_view.py +0 -0
|
@@ -5,6 +5,7 @@ Responsável por:
|
|
|
5
5
|
|
|
6
6
|
- Persistir ticks no SQLite
|
|
7
7
|
- Sincronizar histórico inicial
|
|
8
|
+
- Consultas rápidas para engines (Renko, etc)
|
|
8
9
|
"""
|
|
9
10
|
|
|
10
11
|
import MetaTrader5 as mt5
|
|
@@ -116,13 +117,11 @@ class TickRepository:
|
|
|
116
117
|
|
|
117
118
|
self.insert_counter += inserted
|
|
118
119
|
|
|
119
|
-
# checkpoint periódico
|
|
120
120
|
if self.insert_counter >= 200000:
|
|
121
121
|
|
|
122
122
|
wal_checkpoint(self.conn)
|
|
123
123
|
self.insert_counter = 0
|
|
124
124
|
|
|
125
|
-
# backup diário
|
|
126
125
|
today = datetime.now().date()
|
|
127
126
|
|
|
128
127
|
if self.last_backup_day != today:
|
|
@@ -133,9 +132,30 @@ class TickRepository:
|
|
|
133
132
|
return inserted
|
|
134
133
|
|
|
135
134
|
# ==========================================================
|
|
136
|
-
# CONSULTAS
|
|
135
|
+
# CONSULTAS OTIMIZADAS
|
|
137
136
|
# ==========================================================
|
|
138
137
|
|
|
138
|
+
def get_last_ticks(self, symbol, limit=5000):
|
|
139
|
+
|
|
140
|
+
cursor = self.conn.cursor()
|
|
141
|
+
|
|
142
|
+
cursor.execute(
|
|
143
|
+
"""
|
|
144
|
+
SELECT time_msc, bid, ask, last, volume, flags
|
|
145
|
+
FROM ticks
|
|
146
|
+
WHERE symbol = ?
|
|
147
|
+
ORDER BY time_msc DESC
|
|
148
|
+
LIMIT ?
|
|
149
|
+
""",
|
|
150
|
+
(symbol, limit),
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
rows = cursor.fetchall()
|
|
154
|
+
|
|
155
|
+
rows.reverse()
|
|
156
|
+
|
|
157
|
+
return rows
|
|
158
|
+
|
|
139
159
|
def get_ticks_between(self, symbol, start_msc, end_msc):
|
|
140
160
|
|
|
141
161
|
cursor = self.conn.cursor()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/tests/test_model_media_movel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/models/average_range_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/models/model_average_volume.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|