Eis o que você pode fazer com OpenCL diretamente no MetaTrader 5 sem DLLs - página 16

 

Vou verificar a rendição.

Sem matemática dupla, não há nada a fazer em nosso campo. Ainda mais em 2020.

Enquanto nos primeiros tempos do OpenCL ainda se podia procurar compromissos e ser enganado pela noção de "bem, você pode calcular algo em flutuação", hoje não é assim.

Qualquer tentativa de conversão dupla -> int -> dupla mata completamente o desempenho e o lucro, especialmente em tamanhos grandes.

A opção correta é usar formatos nativos e cartões mais modernos com novos drivers.

 

O apoio está lá:

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
 
Não vou discutir sobre o modelo moderno de monetização em TI. Comprar um novo hardware que seja 25% mais eficiente do que usar algoritmos otimizados não causará o aquecimento global :)

Adiaremos o assunto do OpenCL e MT5 para uma data posterior, quando houver algum dinheiro de sobra para um computador desktop no orçamento familiar.

Eu tenho um favor a lhe pedir, Renat. No manual MQL5 (seção OpenCL) acrescente um aviso dizendo que antes de usar dados e cálculos duplos em placas gráficas/ coprocessadores gráficos, você tem que ter certeza de que eles são suportados por estes dispositivos. Para que os novatos da MQL5 não tenham nenhuma ilusão sobre hardware antigo.

Obrigado por seu tempo.
 
aim-1:

Um pedido para você Renat. Favor adicionar no manual MQL5 (seção OpenCL) um termo de responsabilidade declarando que antes de usar dados e cálculos duplos em placas gráficas/ coprocessadores gráficos, você deve verificar se eles são suportados por estes dispositivos. Para que os novatos da MQL5 não tenham nenhuma ilusão sobre hardware antigo.

Isto já está escrito no teste de mapa automático e não pode ser selecionado: feito no último lançamento

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

É seguro dizer sobre mapas antigos sem duplo suporte que eles são absolutamente inúteis para cálculos matemáticos.

Esta é a realidade.

 
Renat Fatkhullin:

Isto já está escrito no teste de mapa automático e não pode ser selecionado: feito no último lançamento

Tenho muito respeito pela MetaQuotes. Muito boas plataformas são desenvolvidas e mantidas por você.

Disclamer (requisitos do sistema) é lógico se você quiser manter o controle da reputação. Porque os iniciantes ingênuos (como eu:) se entusiasmam com um recurso interessante, captado na rede, e tendo falhado no lançamento do MT5, podem se resfriar para uma nova plataforma, porque ficam com a impressão de que há outras falhas potenciais enquanto o utilizam. Por exemplo, a necessidade de compreender o OOP em bibliotecas padrão, etc.

A propósito, seria útil ter um modelo de um simples Expert Advisor comercial sem OOP (de preferência diretamente no site MT5), para que mesmo os bebês MQL4 pudessem se acostumar rapidamente com a MQL5, ao mesmo tempo em que teriam controle total sobre o código. Neste sentido, um novo tutorial de MQL5 (de preferência mais curto - sem refazer os antigos) seria uma boa idéia. Então a comunidade comercial (o principal motor do progresso) rastejaria para uma nova plataforma mais rapidamente.

Mais uma vez, obrigado por seu trabalho árduo.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
aim-1 : Respeito as Metaquotas. Muito boas plataformas são desenvolvidas e apoiadas por você.

A isenção de responsabilidade (requisitos do sistema) é lógica se você quiser monitorar sua reputação. Porque os novatos ingênuos (como eu :) pegaram fogo de características interessantes pegadas na rede e quebradas quando o MT5 é lançado podem esfriar por muito tempo até a nova plataforma, pois parece que outras quebras são potencialmente possíveis ao usá-la. Por exemplo, a necessidade de compreender o OOP em bibliotecas padrão, etc.

Com o OOP, a propósito, seria bom estabelecer oficialmente (melhor, diretamente nas páginas do site MT5) um modelo de um simples Expert Advisor comercial sem OOP, para que até mesmo os bebês MQL4 possam se envolver rapidamente na MQL5, enquanto controlam totalmente o trabalho do código. Neste sentido, um novo livro didático sobre MQL5 (de preferência mais curto - sem repetir a água velha) não faria mal. Então, a comunidade comercial (o motor principal / rolha do progresso) rastejará para a nova plataforma mais rapidamente.

Mais uma vez, obrigado por seu trabalho árduo.

Alguns exemplos vêm com o pacote MQL5. Programação totalmente orientada a procedimentos. Não tenho certeza sobre a MQL4

 
Não está claro
//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 ); }
Resultado:
32765:0:2147352576
32765:1:2147418112

e se

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

Resultado:

32766:0:2147418112

Por que existe uma saída (linha) em um caso e duas no outro?

 
A100:
Resultado não claro:

e se

Resultado:

Por que existe uma saída (linha) em um caso e duas no outro?

Obrigado pela mensagem.
Fixo.

OpenCL handle overflow devido ao uso frequente do handle, mais do que SHORT_MAX vezes

 
Aparentemente eles resolveram o problema drasticamente, agora ele também não funciona
void OnStart()
{
        if ( CLContextCreate( 0 ) == -1 ) Print( GetLastError() ); //5114

}

e há uma semana estava funcionando bem. Por que desativar o OpenCL se não há suporte para o dobro e ele não é usado?

 

Sim, decidiu não utilizar cartões antigos sem duplo suporte.

Os cartões antigos em geral são muito ruins, incluindo os motoristas ruins não reparados que muitas vezes se chocam, derrubando o terminal.

A realidade é que você já deve controlar explicitamente as versões dos drivers, como fazem os desenvolvedores de jogos para PC. Os drivers padrão da Microsoft não vão levá-lo muito longe.