Erros, bugs, perguntas - página 738

 
MetaDriver:

Pergunta:

É necessário passar um conjunto de apontadores de objectos para uma função. Por referência, é claro (uma matriz).

Qual a sintaxe a utilizar?

Ou devo utilizá-lo de outra forma?

Declaração do ponteiro (tipo, tipo variável): MyObject* hobject

Declaração deum conjunto de indicadores (tipo, conjunto de variáveis de tipo): MyObject* hobject[].

Acontece que, quando passado por referência (tipo, tipo passado por matriz variável): MyObject* &hobject[]

O que é confuso é que não encontrei informação sobre ponteiros de passagem e conjuntos de apontadores como parâmetros de função. Mas nem sequer é uma pergunta, apenas uma exoneração de responsabilidade.

 
Karlson:
Enfrentei uma tal necessidade. Torto e brutal, mas o resultado correcto é obtido. As bandeiras são activadas nos três dados de entrada.e depois bloqueadas a falsos.

Não sou muito de explicar. Deixe-me tentar novamente. A tarefa consiste em formar uma carteira de moedas, cada moeda com os seus próprios parâmetros. Numa carteira optimizada, uma moeda não pode participar. Calculei seis moedas em 21 etapas de optimização para cada moeda, e a soma total é em milhares de milhões.

Agora a questão. Se proibirmos uma moeda de negociar com uma bandeira então não faz sentido optimizar os seus parâmetros, de qualquer forma eles não afectarão o resultado de forma alguma, mas o optimizador continuará a tentar encaixar parâmetros que não afectem o resultado. Como se eu próprio soubesse que não se pode, mas a esperança ainda está a prosperar.

 
ivandurak:

Não sou muito de explicar. Deixe-me tentar novamente. A tarefa consiste em formar uma carteira de moedas, cada moeda com os seus próprios parâmetros. Numa carteira optimizada, uma moeda não pode participar. Calculei seis moedas em 21 etapas de optimização para cada moeda, e a soma total é em milhares de milhões.

Agora a questão. Se proibirmos uma moeda de negociar com uma bandeira então não faz sentido optimizar os seus parâmetros, de qualquer forma eles não afectarão o resultado de forma alguma, mas o optimizador continuará a tentar encaixar parâmetros que não afectem o resultado. Como eu sei que não podem, mas a esperança ainda está a aquecer.

Por isso, ainda vos disse o mesmo direito da primeira vez.

Não se deve verificar estes parâmetros no testador.

Para que os parâmetros estejam envolvidos na optimização, é necessário marcar estas caixas de verificação. Se as caixas de verificação não forem seleccionadas, estes parâmetros não serão optimizados.

P.S. Ou pode efectuar a optimização separadamente para cada ferramenta. Agora percebo o que quer dizer. :) E depois de todas as optimizações, ligue todas as ferramentas e veja o resultado cumulativo.

 
tol64:

Por isso, afinal, acertei à primeira.

Não, não o fez. A julgar por mais explicações, o autor começa a optimização por todos os seus parâmetros de entrada de uma só vez, e ao mesmo tempo pergunta-se se de alguma forma pode saltar alguns dos passes se trpair2==false.Não há aqui "caixas de verificação manuais no testador".
 
Yedelkin:
Não, não está certo. A julgar por mais explicações, o autor começa a optimizar todos os seus parâmetros de entrada ao mesmo tempo, e pergunta-se se alguns dos passes podem de alguma forma ser saltados se trpair2==false.Não é possível definir manualmente "caixas de verificação no testador" aqui.
Bem, então eu próprio estou curioso em saber se existe tal solução. Lembro-me de enviar um pedido ao Service Desk para parâmetros programáveis. Ou seja, dependendo do parâmetro seleccionado (por exemplo, na lista suspensa) é uma lista comum de todos os parâmetros externos. Não houve resposta, por isso não é assim tão simples. E esta questão é do mesmo fio. Dependendo do parâmetro seleccionado para optimização, é definida uma lista (caixas de verificação) de parâmetros optimizados na lista geral.
 
tol64:
Bem, então eu próprio estou curioso em saber se existe tal solução.
Também ainda não encontrei nenhuma solução para esta situação. Claro que é possível aparafusar no OnInit() alguns blocos que armazenariam valores de parâmetros optimizáveis para outros símbolos ao definir o parâmetro trpair2 como falso, e em caso de repetição com trpair2==falso e com 'valores armazenados de parâmetros optimizáveis para outros símbolos', geraria um código de retorno não zero (ou seja, geraria o evento Deinit com o código da razão REAS_INIT).geraria um evento de Deinit com o código de razão de desinicialização REASON_INITFAILED). Mas tudo isto parece um pouco incómodo.
 
Yedelkin:
Não, não está certo. A julgar por mais explicações, o autor começa a optimizar todos os seus parâmetros de entrada ao mesmo tempo, e pergunta-se se alguns dos passes podem de alguma forma ser saltados se trpair2==false.Não é possível assinalar manualmente as caixas de verificação no testador aqui.
Exactamente assim. Só que se esqueceu de escrever o veredicto, quer seja possível ou não.
 
Yedelkin:
Também ainda não encontrei nenhuma solução para esta situação. Naturalmente, é possível combinar em int OnInit() algum bloco que armazenaria valores de parâmetros optimizáveis por outros símbolos ao atribuir ao parâmetro trpair2 falso, e em caso de segunda passagem com trpair2==falso e com 'valores armazenados de parâmetros optimizáveis por outros símbolos' geraria código de retorno não zero (ou seja, geraria evento Deinit com código de razão de desinicialização.ou seja, geraria um evento de Deinit com código de razão de desinicialização REASON_INITFAILED). Mas tudo isto parece bastante enfadonho.
É muito mais simples. Quando uma condição é executada, o Expert Advisor pode simplesmente apagá-la - ExpertRemove(). Implementei-o no caso de um levantamento de crédito. Se o drawdown tiver atingido o valor estabelecido, por exemplo, durante a optimização, removemo-lo e iniciamos a próxima passagem.
 
ivandurak:
Exactamente. Só que se esqueceu de escrever o veredicto, quer possa ou não.
Pode. Como no post anterior, experimente-o.
 
tol64:
É muito mais simples. Quando uma condição é executada, pode simplesmente apagar o Expert Advisor - ExpertRemove(). Implementei-o no caso de um levantamento de crédito. Se o drawdown tiver atingido o valor estabelecido, por exemplo, durante a optimização, removemo-lo e iniciamos a próxima passagem.

Como pode ser "mais fácil"? :) As condições para apagar uma EA ou para REASON_INITFAILED ainda têm de ser seguidas. Isto é o que é tão problemático.