C2PlatformTransmit MT4 copier errors?

Hi, We recently created a new strategy:-

The C2PlatformTransmit.exe which mirrored the trades to the Collective2 account generally functioned satisfactorily until recently. (It did need to be removed, reloaded and restarted on several occasions as the source account and Collective2 strategy were not in Synch)
The previous 2 days have shown major inconsistencies between ALL the trades sent and the trades received and reported by Collective2.

Obviously there is going to be some variation in spreads between brokers but unlikely to this extent. We are using a Live/Real account as the source account being copied from so the prices reflect what could reasonably be expected from standard broker executions.
It appears there are either some latency/connectivity issues as well as possible mis-pricings.

Another concern is that the C2PlatformTransmit .exe has not been updated since 2020 whilst the MT4 platform has had several major updates to the code library/functionality as well as the architecture so it could simply now just be incompatible. It is a concern that I see trades on Collective2 still open, sometimes for many minutes, whilst closed on the account being copied from. This would suggest something more serious than just latency issues.

I have halted all trading until this is resolved as I see that there are ‘real-life’ brokerage accounts receiving the trades. It also appears that their brokers fills are being used to determine the strategy’s equity curve which is a concern if their brokers fills are causing the issue with extremely pessimistic fills which don’t reflect the general market mid/average/consensus price.

Thank you for any assistance

  1. Okay, easy stuff first:

It also appears that their brokers fills are being used to determine the strategy’s equity curve which is a concern

That’s the rule here in the US. We must and do report the actual fills that your actual subscribers receive in their real life accounts, not some dream-land hypothetical result. Now, if there’s an actual problem where due to broker error a fill is massively delayed or incorrect, we should not include that in results.

  1. Please report to the help desk the specific signal ids you think were incorrectly priced, if you haven’t do so already. Again, however, I need to remind you that if the fill prices reflect what your customers received in their accounts, that is what C2 reports as a matter of policy.

  2. Please report the specific signals that your strategy generated in MT4 which were still open on C2 “sometimes for many minutes.” If that is correct that must be investigated (and hopefully solved) immediately.

Thanks!

Hi Matthew, thank you for your response.

I totally agree that hypothetical results shouldn’t be used to over-ride reality based fills to create a dream-land result, however the source account is a REAL life account (as are 30+ other accounts also receiving the trades).

C2 = STO .89576 then BTC 0.89580 which is -.4 pip loss
Source: STO .89589 then BTC .89555 which is +3.4 pip gain
Source has 0.45 pip RT comm (not sure if C2 is all in px) BUT after comm source makes approx. 3 pips whereas all in C2 has lost 0.4 pips
PX difference on PNL = 3.4 pips
if commission included on source, pnl diff = approx. 3 pips

RE the SEC Reporting Rules: I think important to consider the fact that retail forex is an Over The Counter (OTC) product vs a US based Exchange Traded product which has a single source of truth regarding the prices. As such you are allowing retail forex brokers (eg IG, which had a spread >20X greater than the other 5 major brokers that we use) to determine the quality of a strategy.
Would it not be more in accordance with the SEC reporting rules which are designed to enforce transparency and fairness to use a mid-price/average price from a basket of ‘reasonably’ priced brokers? The IG Bid/Ask is so extreme that it is actually outside the respective high/low of the bar. We cannot in good conscience accept subscribers if they are using brokers with spreads 20X greater than that which is the industry average. They will never be profitable copying our strategy (or likely any others where the frequency of trading is greater than daily) and our strategy equity curve on Collective2 (vs our live accounts) will head south rapidly as it only reflects their fills.

  1. Regarding the delays/non-synching of Collective2 target account with our MT4 source account. (Speaking as someone who has developed in MT4/5 for 15+ years) The C2PlatformTransmit is an executable written in metaquotes MQL language with a .dll presumably built in C++ or C#. It appears to check at regular intervals (1sec?) whether the MT4 terminal account (source) is in synch with the Collective2 target account/server. I suggest you ask your coder to investigate whether the 2020 .exe uses the native Timer() function - it doesn’t work properly anymore, not since the numerous aforementioned MT4 code updates. It is recommended to use custom Time functions or Event driven functions instead.(my apologies for the tech-speak but we’ve also endured many years of torment keeping abreast of the Metaquotes code idiosyncrasies)

  2. RE: possible latency issues
    It would be very useful for reporting/post-trade analytics to have the trade times on your portal include the seconds. Currently it only displays minutes so is impossible to ascertain where in the minute bar the trade was received/executed at your end. Obviously a lot of price changes can occur in a minute. We can however see down to the millisecond from our side.

Thanks again Matthew

Hi Matthew,
it’s been almost a week and still waiting to see if there is a resolution before reactivating strategy.

It doesn’t look good when the strategy has gaps / flat-lining on performance charts due to inactivity.

![FuguSTMGold|690x339](upload://mBjotbg2G20OQ0U1GI5AKAeNfwz.png

We have paying subscribers who have/had AUM attached to the strategy and we would appreciate some resolution so we can act appropriately.

Could you please advise?
Thank you

A couple different issues:

  1. I have asked my colleague Lorant to reach out to you and get exact details about which trades happened in your MT4 account but were seemingly slow to replicate at C2. Once we have specific data, we can analyze and fix as needed.

  2. We publish the VWAP fill prices of all brokers that work with us. We can’t ignore some brokers’ fills. For USA traders, in addition to IG we also support StoneX forex, so perhaps as you get subscribers who use StoneX, you’ll see spreads more in line with expectations.

After Lorant reaches out and gets more information about slow fills, we’ll know more.

Matthew

Hi Matthew,

In reviewing Lorant’s recommendations it would definitely appear that the C2PlatformTransmit executable is unsuitable for MT4 copytrading without some major workarounds.

Stepping through Lorants recommendations

My recommendations

· Please stop trading with microlots to avoid any lost lot sizes.

· Please wait approximately 5 minutes after the last placed order, to let the position sync engine do its job automatically.

Firstly, we were NOT using microlots, rather full Lots which the Collective2 C2PlatformTransmit application was unable to round down past 2 decimal places when it converted into its format. This is a HUGE problem as MT4 accounts use 4 decimal places for most pairs and up to 5 decimal places for the exotics.
It is therefore impossible to correctly position size unless you have a very large account with equally large positions being taken. 1Lot = $100,000
We were trading 1.55 Lots of AUDCAD which Lorant said was an ‘unsupported’ lot size, however every MT4 broker supports a minimum of 0.01 Lot size.

The ignored residual which left an orphan open position on the Collective2 side leads me to Lorants second recommendation. I have to admit having to doing a double take on this recommendation as it conflicted with everything technologically related to latency in trading. I’m hoping it was a typo and that he meant to say wait 5 seconds (still a long time) and not 5 minutes between the synching of the source account with the Collective2 target account/s.

You cannot have a lag of 5 minutes in forex trading. That is even longer than the duration of some of our trades.

News events, market openings, etc occur over milliseconds and the difference between getting out with a big win vs a huge loss can be sub-second in many cases.

Re the fills issue, much easier to explain. The investigation just happened to trigger the previous enlightenments.

IG has wide spreads on AUDCAD. It’s that simple.

I’ve included a snapshot of current spread comparison between IG and the widest spread from one of our live/real broker accounts so as to remove any appearance of bias.
40 vs 5, or 8X wider in relative terms.

Re the C2PlatformTransmit application, are there any plans to perform an upgrade? Possibly rectify its issues?

Regards

My understanding is that you cant trade Micros on C2. My robot rounds to the nearest 0.10 which is equal to ‘1’ C2 FX unit. So 1.5 Lots would be 15 FX units on C2. (you get weird rounding or No-Trade if using micro units)

It appears that it might have been built to trade stocks with 2 decimal places , not forex with 5 decimal places. Just repurposed possibly.

I struggle to understand why the rounding hasn’t been corrected since it’s release 5+ years ago given that 90%+ of retail traders start with 2/3k accounts and would be forced to either accept trade sizes massively rounded up 10X or have trades rejected.

Hi,

Let me clarify some of these issues.

Lot Size

Let me clarify what I mean: at C2, the smallest unit on MT4 that we support is 0.1

When your MT4 issues a trade to “Buy 0.1” we multiply that by 10 and send it to C2 as “buy 1”. This gets sent to the broker as “Buy 10,000 currency units.”

In table form:
Smallest Unit Currently Tradable at C2
———————————————————————
MT4 | becomes at C2 | becomes at broker
———————————————————————
0.1 | 1 | 10,000 currency units

If you try to trade 0.12 on your MT4 this will cause a rounding issue where C2 will not stay synced with your MT4. The implication is that, to use C2 for forex, you should multiply trades by 10 on the MT4 side so that 1.11 becomes 11.1 (i.e. so that you only use 1 decimal position).

5-minute latency

In my email to you, I tried to explain (badly, I fear), that our position-syncing process - in which position discrepancies between what we see in your MT4 and in the C2 Model account are fixed, happens every 5 minutes. I did not intend to suggest that there is five minute latency for trades generally. That would obviously be unacceptable. There is no such latency.

The reason “position sync” was needed to clean up incorrect quantities in your strategy was because you were trading with units with two decimal places. For now, you must trade with only one decimal place. See point #1.

Broker Spreads

Some of our broker partners have better or worse spreads than others. We display the fill prices customers receive in real brokerage accounts. This necessarily includes the spreads of brokers. I do wish that there were more U.S.-based brokers that supported forex trading, but the reality is that U.S. regulators have driven most retail forex trading out of the U.S. Since we are a U.S. based company and a majority of our users are U.S. based, we do our best to find broker partners that work with U.S. clients. In the world of forex trading, those are surprisingly few. That’s why we value our current forex broker partners so much!

Future enhancements

We’re looking into making some changes so that C2 will support the buying and selling of 1,000-unit quantities at forex brokers. If we are able to make this change, then we would be able to support MT4 trading strategies that trade things like 0.01 units (i.e. 2 decimal places). This is large development effort, though, and may take some time. So for now, I encourage you to work with the current constraints: one decimal place only.

Conclusion

I understand not every strategy or trader is right for C2. We try to support many different instruments and trading styles, but there are many great traders whose trading style is not a good fit for C2, which is a distributed replication system — and especially right now, when the smallest unit we support at brokers is buying or selling 10,000 units. That may change in the future. But for now I hope you can try to adjust your strategy a bit so that it works on C2 (i.e. perhaps by multiplying quantities so that only one decimal place is used). Hopefully, later this summer we may be able to roll out support for 2-decimal-place units on MT4.

Lorant

Thanks for that information Lorant, much appreciated, will make the required alterations.

Another thing which might potentially cause some headaches for MT4 applications (generally) is that Metaquotes is cutting off support for older versions of MT4 on the upcoming July 1. After this date, older versions of desktop terminals will no longer be able to connect to broker servers.

Whether that will also cause backward compatibility issues is likely to be ex4 application specific, but it might be worth giving users a heads-up to update their terminals and test and advise they monitor their trading connectivity over that period. Prepare for the inevitable blame gaming in June with users of the older non-updated terminals. The Metaquotes spaghetti ecosystem now has so many opaque moving parts that it will likely be difficult to identify the issues, especially when integrated with 3rd party components.

Might be a good excuse to go fishing instead of trading over those 2 days, if using MT4.

Thank you again for your assistance

Its a REQUIRED MT4/MT5 Update:

On July 1, 2025, MetaQuotes will discontinue support for older versions of MetaTrader 4 and MetaTrader 5. From that date, the minimum supported versions will be MT4 build 1440 (released February 21, 2025) and MT5 build 4755 (released December 13, 2024).

Elaboration:
Support Discontinuation:
MetaQuotes, the company behind MetaTrader, will end support for older builds of both MT4 and MT5.

Minimum Supported Versions:
Users will need to upgrade to at least build 1440 of MT4 and build 4755 of MT5 to maintain functionality.