Personal Engineering Project
EstieMetalsBot
Private · In Development
A private trading-system application I am developing with C# and .NET. It combines financial market-data processing, structured analysis, interactive charting, historical replay, and risk-aware decision workflows within a modular software architecture. Through this project, I am exploring complex system design, data integrity, external integrations, and the reliability challenges involved in engineering automated financial software.
- C#
- .NET
- PostgreSQL
- MetaTrader 5
- MQL5
At a glance
Engineering focus
Market Data
Ingestion, validation, and persistence.
Architecture
Modular C#/.NET components.
Visualization
Charts, historical replay, and diagnostics.
Reliability
Testing, validation, and safeguards.
01 / Context
Project overview
I started EstieMetalsBot to engineer a structured and maintainable application capable of processing financial market information and supporting rule-based trading decisions.
Rather than placing all the application logic inside a trading terminal, I designed the system around a dedicated C#/.NET engine with separate responsibilities for market-data handling, analysis, persistence, visualization, risk controls, and external integrations.
I have also focused on building tools that make complex application behaviour easier to observe, inspect, and validate. The application remains under active development, with particular attention to correctness, reliability, and controlled progression toward automated execution.
Project objectives
- Establish dependable market-data acquisition, validation, and persistence workflows.
- Separate analytical responsibilities from external trading infrastructure.
- Build reusable components for market analysis.
- Develop visual interfaces for inspecting market conditions and application behaviour.
- Incorporate risk-awareness and operational safeguards into the application architecture.
- Create repeatable testing and historical replay workflows.
- Design maintainable components that support future development.
02 / Ownership
My Role and Contributions
As the developer responsible for EstieMetalsBot, I have worked on translating complex functional and technical requirements into a structured software system.
Throughout development, I have prioritized separation of concerns, maintainability, traceability, and reliable system behaviour.
- Designed the C#/.NET application architecture.
- Developed market-data processing components.
- Integrated market-data communication with MetaTrader 5.
- Implemented data validation and PostgreSQL persistence workflows.
- Worked on chart visualization and historical replay capabilities.
- Developed tools for inspecting analytical outputs and system behaviour.
- Implemented and validated rule-based analytical workflows.
- Defined safety-oriented engineering requirements.
- Investigated technical failures and improved validation procedures.
- Organized development into manageable, verifiable engineering milestones.
03 / System design
Architecture and technical approach
I designed EstieMetalsBot around a dedicated C#/.NET engine responsible for application orchestration and analytical logic.
The application integrates with MetaTrader 5 through a thin MQL5 bridge, allowing market information to reach the .NET engine without placing every decision-making responsibility inside the trading terminal.
For market-data management, I worked with broker-native candles across multiple timeframes, validation workflows, and PostgreSQL-backed historical persistence. Charting and replay use persisted market information for visualization, historical inspection, and controlled analytical testing.
Separating these responsibilities makes the application easier to understand, test, maintain, and extend.
C#/.NET Engine
Application orchestration, domain logic, and analytical workflows.
MT5/MQL5 Integration
Market-data communication and external trading-system integration.
PostgreSQL
Historical market-data storage and persistence.
Charting and Replay
Visualization, historical inspection, and diagnostic workflows.
04 / Trade-offs
Implementation decisions
One of my most important architectural decisions was to separate the analytical engine from the trading terminal. This separation allows important application behaviour to be developed, inspected, and validated independently of external execution.
I also chose to maintain validated historical market information instead of relying entirely on transient data. For charting and historical inspection, I worked with broker-native timestamps and persisted candle data to improve consistency between source information and visual representation.
Another important decision was to keep historical replay and analytical validation separate from live trading operations. These architectural boundaries reduce unnecessary coupling and support safer development, debugging, and future extensibility.
05 / Problem solving
Engineering challenges and solutions
Managing complex application responsibilities
Challenge
EstieMetalsBot combines market-data processing, analytical logic, persistence, charting, and external integration. Keeping these responsibilities organized presented an architectural challenge.
My response
I addressed this by separating major responsibilities into distinct components with clearer integration boundaries. This improved the structure of the application and made individual subsystems easier to reason about and validate.
Maintaining market-data consistency
Challenge
Processing financial market data required careful attention to candle timestamps, timeframe consistency, and historical data integrity.
My response
I worked on validation and persistence workflows for broker-native market data, making that information available to charting and historical inspection components. This established a more consistent foundation for visualization and repeatable analysis.
Reliability during extended validation
Challenge
Long-running validation workflows exposed recurring timing-related problems and execution inconsistencies.
My response
I investigated these issues through controlled testing, evidence inspection, and incremental debugging. Rather than treating incomplete runs as successful results, I maintained strict validation boundaries and worked on safer, more traceable continuation procedures. Resolving these issues remains ongoing.
06 / Quality
Testing and validation
I have worked with native MT5 market data, persisted historical candles, chart inspection, and replay-oriented workflows to examine application behaviour under controlled conditions.
I have also used structured validation and debugging to investigate analytical outputs and identify inconsistencies. For complex execution workflows, I emphasize reproducibility, explicit failure reporting, and preserving evidence when mandatory checks cannot be completed.
This approach helps me distinguish verified application behaviour from functionality that still requires further development and testing.
07 / Progress
Engineering outcomes and progress
EstieMetalsBot has allowed me to build a substantial software-engineering foundation for a complex, data-driven application. My work has brought together market-data integration, historical persistence, chart visualization, analytical workflows, and diagnostic tooling within a modular C#/.NET system.
The project has strengthened my experience designing applications around reliability, data integrity, traceability, and validation. Although development is ongoing, this foundation supports further testing, refinement, and integration.
- Modular C#/.NET application architecture
- Broker-native market-data processing
- PostgreSQL-backed historical data workflows
- Chart visualization and historical replay capabilities
- Rule-based analysis and diagnostic tooling
- Structured testing and validation procedures
08 / Reflection
Lessons learned
Building EstieMetalsBot has strengthened my understanding of what it takes to develop complex, interconnected software systems. Reliable applications require clear architectural boundaries, consistent data, dependable communication, and predictable failure handling.
Working with market data reinforced the importance of accurate timestamps, persistence, and data integrity. Developing visual diagnostic tools helped me appreciate the role of observability when investigating complex application behaviour.
The challenges encountered during extended validation strengthened my approach to debugging, reproducible testing, and evidence-based development. Most importantly, the project continues to improve my ability to translate complex requirements into maintainable software through disciplined, incremental engineering.