
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Neither are we yet. We have to start somewhere. Spread out and jump.
Like STALKER2, we'll finish it together.
All vector based, fully scalable and adjustable to any display.
All visual displays work asychronously within a core class which handles and distributes all MQL events to objects, depending on their subscription settings and based on event-priorities.
It also provides an API to access all data and to control trading also from indicators written in MQL (special templates) and from C#.
>400 classes, <>200.000 lines of code, 9 years of ongoing development, MT4 and MT5 - identical code by using conditional compiling and downward-compatibility-base-classes. Main development in MQL5 only.
No original libraries or classes.
Actually the whole code is 99,99% MQL, only pipe-interactions and string-comparisons are done with C#/DLLs.
The screenshot shows a trade with CFD but with the mapped volume of the underlying future. That´s why there is a real orderbook and volume profile as well.
Current stage of VE development:
Looking forward to the next development update.
That sounds awesome, Peter. I think when you use VE to build yourself, it will give you valuable insights into how your UI design works.
Looking forward to the next development update.
UI is still 100% pure MQL.
All vector based, fully scalable and adjustable to any display.
All visual displays work asychronously within a core class which handles and distributes all MQL events to objects, depending on their subscription settings and based on event-priorities.
I hope I'm not stealing the very interesting thread and forgive me Peter if I do, it won't be a discussion just hope for a short answer for the theorethical interest - do you mean you have a kind of static class that knows (keeps track of all the object pointers) all the class objects instansiated in the system and each object has access to subscribe itself to required events on that control static class and that static control singleton class just delivers the events to all object? If so do you view that as correct in terms of OOP or maybe is it acceptable event driven programming? Because you wrote about it, I guess you would want to accept questions about it and if so please let's keep it as short as possible to not hijack this thread, although it is related.
I hope I'm not stealing the very interesting thread and forgive me Peter if I do, it won't be a discussion just hope for a short answer for the theorethical interest - do you mean you have a kind of static class that knows (keeps track of all the object pointers) all the class objects instansiated in the system and each object has access to subscribe itself to required events on that control static class and that static control singleton class just delivers the events to all object? If so do you view that as correct in terms of OOP or maybe is it acceptable event driven programming? Because you wrote about it, I guess you would want to accept questions about it and if so please let's keep it as short as possible to not hijack this thread, although it is related.
Yes, thats exactly what it is.
Brief description:
The core receives all MetaTrader events and any object can subscribe to the core. Therefore the CObject class had to be redesigned/modified as well, so that any object has a function named "public: virtual void OnEACycle(CCycleParams * cpm)". Such a cycle could then be a chart-event, init, deinit etc. Every object can also have an "public: virtual void OnEATick()". Nice side effect is, that you get an extra feature that way, coz u can subscribe to the end of any cycle as well, no matter which it is. Pretty useful to close a file or finish any other stuff, simply at the end of any cycle.
Furhtermore, every CObject object can have childs and also subscribers. Means, an object could trigger its own events like when sth. was clicked or similar. Then you simply perform an object.SubEvent(STH_CLICKED, params). That way the object itself does not care who needs this information, its just distributed to the subscribers, they receive an OnSubEvent(int msg, CSubEventParams * sep) and can do with that whatever they want.
All in all, this way it is more releated to that way of coding we know from C#, where you also just use .Invoke() to fire events and don't care about who gets them.
Its actually not that super-complicated to implement, but of course the details are the challenge in the end, since its a core/base for every single EA or indicator for the future which has to function in every scenario.