Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Não, não se trata apenas de um problema de um terminal de 32 bits. Mas a solução para o terminal de 32 bits está pronta para hoje enquanto que no terminal de 64 bits ainda existe uma limitação de pilha em 256Kb.
Mas se o programador não especificar manualmente o tamanho da pilha necessária utilizando uma propriedade, o EX5 no terminal funcionará com o tamanho de pilha predefinido ( 256Kb).
Sobre o grande tamanho.
Cada declaração de variável dentro de uma função (excepto para variáveis estáticas) atribui espaço na pilha, e a atribuição de espaço na pilha para variáveis locais ocorre em cada chamada.
Portanto, se uma função tem 64Kb variáveis locais, o espaço da pilha é suficiente para 3 chamadas, e o transbordo da pilha ocorre em 4 chamadas (como parte da pilha é utilizada para as necessidades internas do terminal). Portanto, se houver necessidade de grandes dados locais, é melhor usar memória dinâmica - quando se entra na função, a memória para necessidades locais é atribuída no sistema (novo, ArrayResize) e quando se sai da função, a memória é apagada (delete, ArrayFree).
Obrigado pela explicação detalhada. Mas esse não é definitivamente o meu problema. Tentarei escrever um consultor de testes para detectar este erro, uma vez que a função onde as pernas estão a crescer já é encontrada e não existem tais volumes (64Kb - 256Kb). Enviarei então um perito ao Service Desk com a função de problema à noite.
Mais uma pergunta (e um pedido de explicação na ajuda) sobre o trabalho da mesma função(CLBufferWrite()).
Se eu escrever informação directamente do buffer de indicadores com a bandeira ArrayIsSeries (==verdadeiro), em que direcção será lida a matriz de entrada?
Suspeito que a bandeira será ignorada, e além disso não é claro de que lugar será lida? O turno será contado a partir do fim físico da matriz ou desde o início?
Claro, vou soprar na água por precaução (vou trabalhar com o ArrayIsSeries== falso), mas mesmo assim ?
offset - estas funções são realmente offsets em bytes desde o início do buffer OpenCL e o array passado para a função será copiado do item nulo sem ter em conta a bandeira ArrayIsSeries.
1) Actualmente, a funcionalidade de trabalhar com o buffer OpenCL não está completa e será adicionada/actualizada.
2. offset - estas funções são na realidade um offset em bytes desde o início do buffer OpenCL enquanto um array passado para a função será copiado do elemento zero sem ter em conta a bandeira ArrayIsSeries.
1. Eu suspeito assim... :)
Portanto, não há maneira de escrever directamente do tampão indicador em partes (por agora).
Uma boa ideia é, evidentemente, tornar as posições de partida móveis tanto na fonte como no receptor. Como aqui:
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
Com indexação (direcção e unidades (bytes/elementos)) por favor tenha mais cuidado na ajuda. :)))
--
Obrigado pela resposta, aprecio muito os vossos esforços para melhorar a funcionalidade.
Aguardarei com paciência a continuação do banquete. Entretanto, terei de dançar na borda de uma adaga. :)
Construir 597 x64, acabado de instalar.
2012.02.23 21:43:24 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
Isto nunca tinha acontecido antes.
// Win7 x64
Construir 597 x64, acabado de instalar.
Não era assim antes.// Win7 x64.
Tente recompilar o exemplo. Verifiquei-o - funciona para mim.
Já o recompilei uma centena de vezes. Vou reiniciar novamente.
... Vou reiniciar novamente.
Não, não ajudou.
Renat:
...... Verifiquei - funciona para mim.
Também funciona para mim, mas a cada dez ou quarenta ciclos recebo a mesma porcaria:
2012.02.23 23 16:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 23 16:16:42 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
2012.02.23 23 16:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile abertura de erro 'Mandelbrot.bmp
Não, não ajudou.
Isto também funciona para mim, mas a cada dez ou quarenta ciclos recebo esta porcaria:
Também descoberto.
Isto porque o ficheiro especificado é tratado em dois tópicos diferentes sem sincronização e ocasionalmente o ficheiro fica bloqueado:
Uma vez que o exemplo com a imagem foi feito apenas para demonstrar o princípio de trabalhar com OpenCL, não é um problema.
Uma vez que o exemplo com o quadro foi feito apenas para demonstrar o princípio de trabalhar com OpenCL, não é um problema.