Erros, bugs, perguntas - página 1904

 
Artyom Trishkin:

Se existem múltiplas instâncias, porquê duplicar o mesmo cálculo em outras instâncias da mesma classe?

Porque precisa de outras instâncias se só existe um cálculo?


Artyom Trishkin:
Andrey, poderia ser um pouco mais específico? Não compreendo bem.

Melhor dar uma descrição mais detalhada do problema, então a resposta será mais concreta.

 
Artyom Trishkin:

O cálculo não é único - se há uma única instância da classe então o cálculo deve ser, se há múltiplas instâncias então porque duplicar o mesmo cálculo em outras instâncias da mesma classe? É preciso recursos.

Ao mesmo tempo, fazer outro ciclo longo na classe dos pais para calcular estes mesmos dados também não é óptimo (já temos dois ciclos longos), e a classe da criança não será então auto-suficiente.

Sugeri como fazer o que precisamos sem duplicação. Não estamos a falar de descendentes.
 

Boa tarde!

Após 4 anos voltei a uma EA (comprei-a em 2013 e esqueci-me dela). Decidiu tentar novamente. Mas agora o sistema dá um erro numa das linhas de código. Acho que algo mudou em 4 anos com Metatrader, porque antes estava a funcionar bem. Não tenho ideia de como programar, foi por isso que comprei o Expert Advisor). Pode dizer-me qual pode ser o erro?

Aqui está uma parte do código

período de int exterior = 20; // período de média da linha indicadora principal.

Bdeviation int exterior = 2; // Desvio em relação à linha de base.

externamente int Bshift = 0; // Desvio do indicador em relação à tabela de preços.

Exterior int Baprice = 0; // FECHADO=0, OPEN=1, HIGH=2, LOW=3, MEDIAN=4, TYPICAL=5, WEIGHTED=6 .

cordão externo _6 = "========";

bool externo UseAutoDig = true; // If=true->external variables in points are multiplied by 10.

bool externo UseECN\NDD = true; // If=true->orders are set without stops, then modified.

O erro é apresentado na última linha do comando

UseECN\NDD, este comando é repetido muitas vezes na EA e ocorre um erro em cada linha com este comandoExemplos de

erros

'\' - sequência de fuga ilegal e_plat2.mq4 49 22

'NDD' - ponto e vírgula esperado e_plat2.mq4 49 23

UseECN' - identificador não declarado e_plat2.mq4 144 6

'NDD' - identificador não declarado e_plat2.mq4 144 13

NDD' - espera-se algum operador e_plat2.mq4 144 13

UseECN' - identificador não declarado e_plat2.mq4 172 6

'4206' - valor do caso já utilizado e_plat2.mq4 643 8


Se não se importa, qual poderá ser a razão?




 
platoshkasexy:

UseECN\NDD este comando é repetido muitas vezes no Expert Advisor e, em cada linha em que está presente, surge um erro

Substituir em todo o código "UseECN\NDD" por "UseECN_NDD" (Ctrl+H)

 
Andrey Khatimlianskii:

Substituir em todo o código "UseECN\NDD" por "UseECN_NDD" (Ctrl+H)


Muito obrigado! Parece que foi compilado!

Estarei a testar...

 
Andrey Khatimlianskii:

Porque existem outros casos se só existe um cálculo?


É melhor dar uma descrição mais detalhada do problema, então a resposta será mais concreta.

A classe tem um laço que recolhe dados sobre todas as encomendas e posições 1) na conta e 2) apenas aquelas que correspondem ao símbolo m_ e ao filtro m_magic.

Como resultado, uma vez concluído o ciclo, temos dados 1) sobre toda a conta e 2) apenas sobre ordens e posições pertencentes à EA.

Contudo, se uma EA utiliza vários símbolos ou mágicos, precisamos de criar instâncias da classe para recolher estatísticas para cada símbolo/mágico. É aqui que surge a questão: Porque precisamos de recolher estatísticas (1) nestas novas instâncias que já foram recolhidas logo na primeira instância da classe?

Daí a questão - como dentro da classe saber se a sua instância é a única, e portanto precisa de recolher estatísticas 1, ou, se a instância não for a única, não recolher estatísticas 1, e transmiti-la desde a primeira instância (aqui também não está claro como dentro da classe, se não for a única instância, redireccionar o pedido para a primeira instância da classe para transmitir estatísticas 1)

 
Artyom Trishkin:

A classe tem um laço que recolhe dados sobre todas as encomendas e posições 1) na conta e 2) apenas aquelas que correspondem ao símbolo m_ e ao filtro m_magic.

Como resultado, uma vez concluído o ciclo, temos dados 1) sobre toda a conta e 2) apenas sobre ordens e posições pertencentes à EA.

Contudo, se uma EA utiliza vários símbolos ou mágicos, precisamos de criar instâncias da classe para recolher estatísticas para cada símbolo/mágico. Aqui surge uma questão: Porque precisamos de recolher estatísticas (1) nestas novas instâncias, que já foram recolhidas na primeira instância da classe?

Daí a questão - como dentro da classe saber que a sua instância é a única, e daí a necessidade de recolher estatísticas 1, ou, se a instância não é a única, então não recolher estatísticas 1, e emiti-la desde a primeira instância (também ainda não está claro como dentro da classe, se não é a única instância, redireccionar o pedido para a primeira instância da classe para a emissão de estatísticas 1)

1) Recolher estatísticas para todos os magos/ferramentas dentro de uma classe. A lista de magos deve ser especificada durante a inicialização e colocada numa matriz.

2) Como já aconselhado, faça os resultados das estatísticas #1 estáticas, e se elas estiverem disponíveis, não comece a recálculo.

 
Artyom Trishkin:

A classe tem um laço que recolhe dados sobre todas as encomendas e posições 1) na conta e 2) apenas aquelas que correspondem ao símbolo m_ e ao filtro m_magic.

Como resultado, uma vez concluído o ciclo, temos dados 1) sobre toda a conta e 2) apenas sobre ordens e posições pertencentes à EA.

Contudo, se uma EA utiliza vários símbolos ou mágicos, precisamos de criar instâncias da classe para recolher estatísticas para cada símbolo/mágico. É aqui que se coloca a questão: Porque devemos recolher estatísticas (1) nestas novas instâncias, que já foram recolhidas na primeira instância da classe?

Daí a questão - como dentro da classe saber se a sua instância é a única, e portanto precisa de recolher estatísticas 1, ou, se a instância não for a única, não recolher estatísticas 1, e transmiti-la desde a primeira instância (aqui também não está claro como dentro da classe, se não for a única instância, redireccionar o pedido para a primeira instância da classe para transmitir estatísticas 1)

Se o inglês não é um problema - publiquei um exemplo de análise de hipercubos no meu blog. Percorrer o histórico uma vez, depois pedir informações ao hipercubo nas fatias (diferentes) desejadas. Existem, claro, selectores tanto por mágico como por símbolo.
 
Artyom Trishkin:

Daí a questão - como saber dentro da classe que a sua instância é a única, o que significa que precisa de recolher estatísticas 1, ou, se a instância não for a única, então não recolha estatísticas 1, e divulgue-a desde a primeira instância

Já vos foi dito:

Melhor ainda, todos os cálculos únicos devem ser colocados numa classe separada e torná-la num só botão.

A primeira vez que se acede a um único botão, lê as estatísticas, depois apenas as recupera.


 

Desenvolvedores, por favor expliquem porque é que o evento do tipoOnTesterPass, ao optimizar o número de variantes superiores a8.6e+18, só é chamado quando se cria uma nova geração?

E porque não há uma única palavra sobre esta característica no ficheiro de Ajuda?

Porque é que eu deveria procurar metade de um Expert Advisor para encontrar uma resposta, porque é que esta função funciona correctamente numa EA, enquanto na outra apenas escreve resultados de optimização no ficheiro de uma nova geração?


Como posso contornar esta limitação?