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.
Files changed (79) hide show
  1. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/PKG-INFO +1 -1
  2. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/tick_repository.py +23 -3
  3. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/pyproject.toml +1 -1
  4. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/LICENSE +0 -0
  5. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/README.md +0 -0
  6. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/__init__.py +0 -0
  7. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/cli.py +0 -0
  8. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/__init__.py +0 -0
  9. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/bars.py +0 -0
  10. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/conf.py +0 -0
  11. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/doctor.py +0 -0
  12. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/commands/migrate.py +0 -0
  13. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/conecta.py +0 -0
  14. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/conf.py +0 -0
  15. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/config_registre.py +0 -0
  16. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/__init__.py +0 -0
  17. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/base.py +0 -0
  18. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/csv.py +0 -0
  19. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/data/mt5.py +0 -0
  20. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/database.py +0 -0
  21. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/domain/__init__.py +0 -0
  22. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/domain/timeframe.py +0 -0
  23. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/logger.py +0 -0
  24. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/__init__.py +0 -0
  25. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/tick_cache.py +0 -0
  26. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/marketdata/tick_streamer.py +0 -0
  27. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/001_initial_schema.py +0 -0
  28. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/002_ticks_time_msc.py +0 -0
  29. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/003_optimize_ticks_without_rowid.py +0 -0
  30. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/__init__.py +0 -0
  31. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/migrations/runner.py +0 -0
  32. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/__init__.py +0 -0
  33. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/bar_model.py +0 -0
  34. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/bars_model.py +0 -0
  35. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/chart_model.py +0 -0
  36. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/conf_model.py +0 -0
  37. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/consecutive_bars_model.py +0 -0
  38. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/rates_model.py +0 -0
  39. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/signals_model.py +0 -0
  40. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/models/unconsecutive_bar_model.py +0 -0
  41. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/mt5_context.py +0 -0
  42. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugin.py +0 -0
  43. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugin_loader.py +0 -0
  44. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugin_manager.py +0 -0
  45. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/__init__.py +0 -0
  46. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/exemplo.py-dist +0 -0
  47. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/__init__.py +0 -0
  48. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/cli.py +0 -0
  49. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/conf.py +0 -0
  50. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/models/__init__.py +0 -0
  51. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/models/model_media_movel.py +0 -0
  52. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/tests/__init__.py +0 -0
  53. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/tests/test_mm.py +0 -0
  54. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/media_movel/tests/test_model_media_movel.py +0 -0
  55. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/__init__.py +0 -0
  56. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/cli.py +0 -0
  57. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/conf.py +0 -0
  58. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/models/__init__.py +0 -0
  59. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/models/average_range_model.py +0 -0
  60. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/tests/__init__.py +0 -0
  61. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/range_medio/tests/test_rm.py +0 -0
  62. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/__init__.py +0 -0
  63. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/cli.py +0 -0
  64. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/conf.py +0 -0
  65. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/models/__init__.py +0 -0
  66. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/models/model_average_volume.py +0 -0
  67. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/tests/__init__.py +0 -0
  68. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/plugins/volume_medio/tests/test_vm.py +0 -0
  69. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/__init__.py +0 -0
  70. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/close_view.py +0 -0
  71. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/full_view.py +0 -0
  72. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/high_view.py +0 -0
  73. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/low_view.py +0 -0
  74. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/min_view.py +0 -0
  75. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/open_view.py +0 -0
  76. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/ranges_view.py +0 -0
  77. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/rates_view.py +0 -0
  78. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/vars_view.py +0 -0
  79. {mtcli-3.8.0.dev0 → mtcli-3.8.0.dev1}/mtcli/views/volumes_view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mtcli
3
- Version: 3.8.0.dev0
3
+ Version: 3.8.0.dev1
4
4
  Summary: Aplicativo CLI para exibir gráficos do MetaTrader 5 screen reader friendly
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -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()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mtcli"
3
- version = "3.8.0.dev0"
3
+ version = "3.8.0.dev1"
4
4
  description = "Aplicativo CLI para exibir gráficos do MetaTrader 5 screen reader friendly"
5
5
  authors = [
6
6
  {name = "Valmir França",email = "vfranca3@gmail.com"}
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