Here's what you can do with OpenCL directly in MetaTrader 5 without any DLLs - page 6

 
Alexey Volchanskiy:

All great, but! There is a big problem with OCL and in general with all means of parallelization - very few algorithms can be effectively parallelized. Why in the examples of parallel computing so popular are simulation of waves, ball falling on a pyramid with their destruction, i.e. everything that can be broken into small pieces and computed on your own processor.

For fora/bear, of course, these are neural networks, various Fourier transforms, wavelets, filters, etc., all of which are perfectly parallel. But there are linear algorithms that cannot be paralleled at all. As a rule, it is when the result of the next algorithm's step is based on the result of the previous step.

I wrote this for those who are thinking that I'll buy two cool video cards and everything will work fine in my tester.

When I started working with this stuff, I got a feeling that the algorithm will be based on the results of the previous step, so I wrote it for those who think, "I'll buy 2 cool video chips and everything will fly in my tester. If you want to trade with it, you need to have a good relationship with it.

 
Alexey Volchanskiy:

All great, but! There is a big problem with OCL and in general with all means of parallelization - very few algorithms can be effectively parallelized. Why in the examples of parallel computing so popular are simulation of waves, ball falling on a pyramid with their destruction, i.e. everything that can be broken into small pieces and computed on its own processor.

For fora/bear, of course, these are neural networks, various Fourier transforms, wavelets, filters, etc., all of which are perfectly parallel. But there are linear algorithms that cannot be paralleled at all. As a rule, it is when the result of the next algorithm's step is based on the result of the previous step.

I wrote this for those who are eager to buy two cool cool cartridges and everything will go well in my tester.

When the EA's internal logic is not paralleled, the entire EA can be paralleled, one thread - one EA. This is how the cloud and agents in general work - one thread == one EA == one history run, I gave an example of such a paralleling.

For example, this approach allows not only to achieve significant speedup in homemade optimizers without much trouble, but also makes it possible to perform internal self-motivated optimization as part of general optimization in the cloud (e.g. optimization with internal roll-forward). And of course nobody forbids using additional parallelization inside each thread (I didn't do it in my example, though it is possible). Thus, when it comes to optimization we can say that there is always something you can parallelize, always.

 
Andrey Dik:

When the EA's internal logic is not parallelized, you can parallel the entire EA, one thread - one EA. This is how the cloud and agents work in general, one thread == one EA == one history run, I gave an example of such paralleling.

For example, this approach allows not only to achieve significant speedup in homemade optimizers without much trouble, but also makes it possible to perform internal self-motivated optimization as part of general optimization in the cloud (e.g. optimization with internal roll-forward). And of course nobody forbids using additional parallelization inside each thread (I didn't do it in my example, though it is possible). Thus, when it comes to optimization we can say that there is always something you can parallelize, always.

All true, but what does highlighting have to do with OCL? It's up to the optimizer's developers to provide optimization on the GPU, as on the cloud, which I understand is not there yet. Or are you talking about writing a wrapper around the EA, inside which they executed as OCL threads? Today's optimizer would not understand such a move.

All you have to do now is write your own optimizer yourself, you can do anything you like.

In general, the purpose of the post was to sober up non-programmers or novice programmers in order to eliminate unnecessary illusions.

 
Alexey Volchanskiy:

All true, but what does highlighted have to do with OCL? It's the job of the optimizer developers to provide optimization on the GPU, as on the cloud, which I gather is not the case yet. Or are you talking about writing a wrapper around the EA, inside which they executed as OCL threads? Today's optimizer would not understand such a move.

All you have to do now is write your own optimizer yourself, you can do anything you like.

Actually the point of the post was to sober up non-programmers or novices in general and strip them of unnecessary illusions.

I gave an example where the entire logic of the EA together with the tested history is sent to the OCL device(one thread == one EA == one history run). This solution is understood by the tester and the optimizer. Of course, this solution is for programmers.

But for ordinary users - yes, they will not get any speed from innovations in their EAs. This can only be done when developers manage to send an entire EA to OCL in the form of a recompiled specific program similar to shaders, but so far this is not the case.

 
Andrey Dik:

I gave an example where the entire EA logic is sent to the OCL device together with the tested history(one thread == one EA == one history run). This solution is understood by the tester and the optimizer. Of course, this solution is for programmers.

But for ordinary users - yes, they will not get any speed from innovations in their EAs. This can only be done when developers manage to send an entire EA to OCL in the form of a recompiled specific program similar to shaders, but so far we are not talking about that.

I cannot yet say anything about the example; I have to go and check OCL in person, but it seems to be working.

On the other hand, I don't really believe in the highlighted ones. MQ will have to write some bridges allowing to pull MQL API from OCL, especially trading functions, access to timeseries and indicators... This is complete gloom, MT5 still has a lot of childhood diseases that are still being fixed, usually through a reference to SD.

 
Alexey Volchanskiy:

I can't judge about the example yet, I have to feel the OCL in person, but it seems to be a live one.

But I don't really believe in the highlighted one. MQ will have to write some bridges to be able to pull MQL API from OCL, especially trading functions, access to timeseries, indicators... This is a total gloom, MT5 still has plenty of childish side effects which are still being corrected, usually via SD.

That's ok, but the fact that the meta-editor remains at the level of "Notepad" from 1995 is quite sad, and with the fact that it's 2017. They're doing something, but to write something for it, you have to write in an ancient editor.

Gentlemen DEVELOPERS, make at least a match highlighting at last, like in Notepad!

 
Alexey Volchanskiy:

It's great, but there's a big problem with OCL and all parallelisation tools in general - very few algorithms can be effectively parallelised.



Tyu, it's simple. You don't have to think whether an algorithm is parallel or not. The approach is the following: when you look at the algorithm - you see a loop -> consider that it can already be paralleled (a good probability). No loops - no reason to worry.

 
Vitaly Muzichenko:

That's fine, but the fact that the meta-editor remains at the level of 1995's Notepad is quite sad, even though it's 2017. They're doing something, but to write something for it, you have to write in an ancient editor.

Gentlemen DEVELOPERS, make at least a match highlighting at last, like in Notepad!

Yes I've already written two posts here about how crude the ticks are. They got deleted. And your post will be deleted. No need for admins/moderators in this thread to mention MQ flaws. Feast during the plague...
 
Alexey Kozitsyn:
Yeah I've already written 2 posts here about the ticks being raw. Deleted. And your post will be deleted. No need for admins/moderators in this thread to mention the flaws in MQ. Feast during the plague...

Somehow it reminds of when they paint a car, put titanium wheels and all sorts of unnecessary trinkets on it, but the engine on the car before that is "knocked out" and jammed, that is all unnecessary because the car is broken.

And here, a bunch of all sorts of gimmicks for writing, but where it all needs to be written, is at the level of 1995, in it, to write - a torture, if the code consists of more than 200 lines

and at the same time Renat writes:

Renat Fatkhullin:

Unfortunately, you have to forget about OpenCL on Windows XP. And 32-bit operating systems in general - 2017 is coming.

Where is meta-editor of 2016 then?

Please make at least code highlighting, and eventually if possible - folding!

 
Vitaly Muzichenko:

Somehow it reminds of when they paint a car, put titanium wheels and all sorts of unnecessary trinkets on it, but the engine on the car before that "knocked" and jammed, that is all unnecessary, because the car is broken.

And here, a bunch of all sorts of gimmicks for writing, but where it all needs to be written, is at the level of 1995, in it, to write - a torture, if the code consists of more than 200 lines

and at the same time Renat writes:

Where is the 2016 meta-editor then?

Please, make at least code highlighting, and eventually if possible - folding!

I too sometimes wonder about the direction MT is taking. But the developers know best...
Reason: