To ensure your logs are accepted by a broker's dealing desk, your CSV export functions must contain these exact columns:
Ticket ID: The unique server transaction number.
Server Timestamp: To the exact second (or millisecond if your broker bridge supports it).
Requested Price: The terminal's Top of Book (Bid/Ask) at the exact microsecond of the request.
Executed Price: The final fill price returned by the server.
Slippage (Pips): Standardized distance between requested and filled price.
Latency (ms): The calculated execution delay.
When a dispute arises, providing a filtered CSV containing dozens of trades showing a clear statistical bias—such as 100% negative slippage on limit orders or severe latency spikes solely during winning trades—forces an internal bridge audit.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Capturing the network ping precisely at the moment of the order request isolates the delay. If your execution latency is 1,200ms but your VPS ping is 2ms, the math proves the delay occurred entirely within the broker’s routing bridge, internal queue, or liquidity provider matching engine.
MetaTrader 5 (MQL5) Implementation
In MQL5, the terminal continuously measures the connection quality. You can retrieve the last known ping in microseconds using TERMINAL_PING_LAST right before firing the OrderSend command.
1. Update the Global Variables
Add a variable to hold the network ping.
Since you are running C# inside cTrader, you can leverage the Server.Latency property. This property returns a TimeSpan representing the current round-trip time between your instance and the cTrader server.
Update the Execution Logic
Capture Server.Latency.TotalMilliseconds right alongside your Stopwatch initialization.
With this data, you isolate the exact variable dealing desks use to deflect blame. If you log a trade where:
TotalExecutionMs = 850 ms
NetworkPingMs = 3 ms
The BrokerInternalDelayMs is 847 ms. Because your network overhead was negligible, that 847 ms was entirely consumed by the broker's system—either waiting in an overwhelmed FIX bridge queue, or being intentionally throttled by an execution plugin analyzing the toxicity of the order flow before confirming the fill. Presenting these exact three columns together is what escalates the ticket past tier-1 support directly to the dealing desk.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
In January 2015, the Swiss National Bank removed its minimum exchange rate against the euro without warning. EURCHF fell by around twenty percent within minutes. Quotes vanished. Some brokers went bankrupt, and many traders ended with negative balances.
A decade later, the event still shapes how experienced traders view the franc. The lesson wasn't that the SNB is unreliable. It was that a market held in place by a policy can break in a moment, and that stops give no protection when no price exists.
CHF pairs today don't have a floor, but the central bank still intervenes at times, and the franc moves as a safe haven during stress. Spread behaviour is a good gauge. Brokers widen CHF spreads before risk events, and sometimes restrict leverage.
For scalping, the practical points are modest. Don't leave positions or pending orders in CHF crosses around SNB meetings. Expect larger-than-normal slippage on stops. And treat any currency that has a managed or policy-supported level as having a hidden tail risk.
None of that means avoiding the franc. It means sizing and timing with the memory of what a missing market looks like.
Which central bank events get avoided entirely, and which ones get traded?