01 / Case study
The challenge
The central problem was the dependence of terminal-based MetaTrader copying tools on an always-on computer or server. The terminal and copying bot must keep running; shutting down the machine or losing its connection can interrupt copying. Users must also arrange and maintain a VPS or computer and configure and monitor the terminal. This project moved copying into a cloud service connected directly to the broker, so users do not need to keep their own device or MetaTrader terminal running to copy trades. Account-specific rules address the additional differences in capital, account type and risk preferences, including capital at risk and stop loss requirements.
My contribution
I was the primary developer and built the entire system in C# and ASP.NET Core, including direct broker integration, trader and bot connections, subscriptions and account-specific copying rules. The copying engine is not built around MQL or an Expert Advisor running inside MetaTrader. Services run in the cloud without installing MetaTrader on the server. The project's name and identifying information are omitted to respect confidentiality.
Providers & subscriptions
Trader & bot connections
Traders and bot owners connect their account or bot information so their trades can serve as a source for the copying service.
Subscription to a chosen provider
Users purchase a subscription and connect to a chosen trader or bot. Transactions are copied according to each subscriber's own settings.
Independent account rules
Following the same source does not require identical execution. Each subscriber can define different trade acceptance and capital-risk rules.
Risk controls before entry
A source trade is evaluated against each subscriber's rules before it is copied.
Capital at risk
Configure acceptable capital risk and adapt entry size to the subscriber's settings rather than repeating one fixed volume across all accounts.
Account type & position size
Account for destination account type and trade size. Examples show trades across ECN and Standard accounts and differing position volumes.
Stop loss requirements
Configure stop loss rules and size, including rejecting positions without a stop loss.
Trade acceptance filters
Accept only positions matching the subscriber's selected criteria. Suitability refers to those rules, rather than guaranteed profitability.
Direct connectivity & cloud execution
Direct broker integration
The service connects directly to the broker to manage account communication and trading operations.
C# engine independent of MQL
Copying and risk logic are implemented in C# and .NET Core, without relying on MQL code running in a MetaTrader terminal.
No server-side terminal
MetaTrader does not need to be installed or launched on the server. Services and trade processing run in the cloud.
Service implementation
The supplied source samples show broker connectivity, order execution and a background task queue.
Multiple account connections in C#
The connection sample creates an API client for each account, connects to the broker and reads account balances using an MT5 connectivity library.
Quotes & order submission
Read a symbol quote and use its Ask price to submit a buy order. The sample also shows order results and Immediate Or Cancel execution policy.
Background task queue
The infrastructure sample uses ConcurrentQueue for tasks, SemaphoreSlim to limit concurrent execution and BackgroundService to process queued work.
Service hosting & lifecycle
The sample builds a .NET Host, registers the background service through dependency injection and passes CancellationToken to work items for independent service execution.
Execution examples & trade tracking
Trade times & volumes
The supplied examples compare transaction times and volumes across accounts, including different position sizes for the same trade.
Reading account history
Example service output shows trade-history retrieval and individual trade details and results.
Operation responses
Execution output includes opened orders and responses such as a closed market, making the outcome of trading requests visible to the service.