Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL - страница 16

 

Проверю выдачу.

Без double математики в нашей области делать нечего. Тем более в 2020 году.

Если раньше на заре появления OpenCL еще можно было искать компромиссы и самообманываться «ну ведь во float же можно что-то посчитать», то теперь нет.

Любые попытки переконвертировать double -> int -> double полностью убивают производительность и выигрыш, особенно на больших объемах.

Правильный вариант - это использовать родные форматы и более современные карты с новыми драйверами.

 

Поддержка есть:

OpenCL device name: GeForce GTX 1050 Ti with Max-Q Design
OpenCL device ext: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
                   cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_d3d10_sharing
                   cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts cl_nv_create_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics


OpenCL device name: Intel(R) UHD Graphics 630
OpenCL device ext: cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_local_int32_base_atomics 
                   cl_khr_local_int32_extended_atomics cl_intel_subgroups cl_intel_required_subgroup_size cl_intel_subgroups_short cl_khr_spir cl_intel_accelerator 
                   cl_intel_driver_diagnostics cl_khr_priority_hints cl_khr_throttle_hints cl_khr_create_command_queue cl_intel_subgroups_char cl_intel_subgroups_long
                   cl_khr_fp64 cl_khr_subgroups cl_khr_il_progr
 
Спорить о современной модели монетизации в IT не буду. Покупка одной новой железяки, работающей на 25% возможной эффективности по сравнению с использованием оптимизированных алгоритмов, глобальное потепление конечно не спровоцирует :)

Отложим тему OpenCL и MT5 на попозже, когда свободные шальные деньги на стационарный комп в семейном бюджете появятся.

К вам просьба, Ренат. Допишите плз в мануале MQL5 (в разделе OpenCL) дисклеймер, что перед использованием double данных и расчетов в видеокартах/графических сопроцессорах, необходимо убедиться в их поддержке этими устройствами. Чтобы новички MQL5 не питали лишних иллюзий на старом железе.

Спасибо за уделенное время.
 
aim-1:

К вам просьба, Ренат. Допишите плз в мануале MQL5 (в разделе OpenCL) дисклеймер, что перед использованием double данных и расчетов в видеокартах/графических сопроцессорах, необходимо убедиться в их поддержке этими устройствами. Чтобы новички MQL5 не питали лишних иллюзий на старом железе.

Это уже пишется при автоматическом тесте карты и она не выбирается: сделано в последнем релизе

OpenCL  test compilation failed with error: use of type 'double' requires cl_khr_fp64 extension to be enabled 

Про старые карты без поддержки double можно с уверенностью сказать, что они абсолютно бесполезны для математических расчетов.

Такова реальность.

 
Renat Fatkhullin:

Это уже пишется при автоматическом тесте карты и она не выбирается: сделано в последнем релизе

Я с уважением отношусь к MetaQuotes. Очень хорошие платформы вами разработаны и поддерживаются. 

Дисклеймер (системные требования) логичен, если вы хотите следить за репутацией. Т.к. наивные новички (типа меня:) загоревшись интересной фичей, подхваченой в сети и обломавшись при запуске MT5 могут надолго остыть к новой платформе, поскольку сложится впечатление, что потенциально возможны другие обломы при ее использовании. Например, необходимость разбираться с ООП в стандартных библиотеках и т.п.

С ООП кстати неплохо было бы официально выложить (лучше прямо на страницах сайта MT5) шаблон простенького торгующего советника без ООП, чтобы даже младенцы MQL4 могли быстро втянуться в MQL5, при этом полностью контролируя работу кода. В этом смысле новый учебник по MQL5 (желательно покороче - без повторения воды старого) не помешал бы. Тогда торгующее комьюнити (основной двигатель/стопор прогресса) быстрее на новую платформу переползет.

Еще раз спасибо за ваш труд.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
aim-1 : I respect MetaQuotes. Very good platforms are developed and supported by you. 

Disclaimer (system requirements) is logical if you want to monitor your reputation. Because naive newbies (like me :) caught fire of interesting features picked up on the network and broken off when MT5 is launched can cool down for a long time to the new platform, as it seems that other breakdowns are potentially possible when using it. For example, the need to understand OOP in standard libraries , etc.

With OOP, by the way, it would be nice to officially lay out (better, right on the MT5 website pages) a template of a simple trading Expert Advisor without OOP, so that even MQL4 babies can quickly get involved in MQL5, while fully controlling the work of the code. In this sense, a new textbook on MQL5 (preferably shorter - without repeating the old water) would not hurt. Then the trading community (the main engine / stopper of progress) will crawl to the new platform faster.

Thanks again for your hard work.

Some examples come with the MQL5 package. Totally procedure-oriented programming. I'm not sure about MQL4

 
Непонятно
//test.mqh
void f( int ii )
{
        for ( int i = -ii; i <= ii; i++ )
        {
                int j = CLContextCreate( i );
                if ( j != -1 )
                {
                        CLContextFree( j );
                        Print( ii, ":", i, ":", j );
                }
        }
}
#include "test.mqh"
void OnStart() { f( 32765 ); }
Результат:
32765:0:2147352576
32765:1:2147418112

а если

#include "test.mqh"
void OnStart() { f( 32766 ); }

Результат:

32766:0:2147418112

Почему в одном случае одна выдача(строчка), а в другом две?

 
A100:
Непонятно Результат:

а если

Результат:

Почему в одном случае одна выдача(строчка), а в другом две?

Спасибо за сообщение.
Исправлено.

Переполнение значения OpenCL хендла из-за его частого переиспользования, более чем SHORT_MAX раз

 
Видимо решили вопрос кардинально, теперь уже и это не работает
void OnStart()
{
        if ( CLContextCreate( 0 ) == -1 ) Print( GetLastError() ); //5114

}

а неделю назад все работало нормально. Зачем отключать OpenCL если нет поддержки double и оно не используется?

 

Да, приняли решение не использовать старые карты без поддержки double вообще.

У старых карт вообще все очень плохо, включая плохие неотлаженные драйверы, которые часто падают, роняя терминал.

В реальности надо уже явно контролировать версии драйверов, как это делают разработчики компьютерных игр. На дефолтных Microsoft драйверах далеко не уедешь.