Os registos do testador e dos agentes (os primeiros 24 são suficientes) podem ser visualizados?
Sim, é claro. MT5 (construir 2045) o mesmo problema. E MT5 (construir 2009) - tudo está bem. Talvez tenha havido algumas alterações em relação ao MT5 (construir 2009), em particular na lógica de determinar se um agente local está ou não a funcionar (por exemplo, levá-lo à lógica de detecção de agentes de rede)...
MT5. construir 2055. ChartGetDouble(0,CHART_PRICE_MAX) e ChartGetDouble(0,CHART_PRICE_MIN) função é executada incorrectamente (escreve zeros) quando se altera a TF. E escreve correctamente a primeira vez ao iniciar o indicador. Depois, quando a TF é transferida para a TF mensal é sempre zeros, noutras vezes no início, depois é normalizada.
offsetof – это специальная команда, которая непосредственно связана в атрибутом pack. Она позволяет получить смещение члена от начала структуры.
struct Parent{
char c; // sizeof(char)=1
};
struct Children pack(2) : Parent{
short s; // sizeof(short)=2
};
voidOnStart(){
//--- объявим переменную типа Children
Children child;
//--- узнаем смещения от начала структуры Print("offsetof(child.c)=",offsetof(child.c));
Print("offsetof(child.s)=",offsetof(child.s));
}
No início fiquei surpreendido, porque não sabia que existia um offsetof. Mas a realidade coloca tudo no seu lugar:
Se abrir um sinal da secção Sinais, pode ver um exemplo de um infográfico:
Normalmente, o objectivo de um infográfico é transmitir ao utilizador final os prós e os contras de um conjunto de propriedades do objecto a ser analisado. No entanto, a essência desta infografia não é clara, quando um desenho a 100% é exibido como resultado a 100% no gráfico. Também o mesmo indicador é utilizado duas vezes dentro do mesmo gráfico: uma vez em termos positivos e a segunda vez em termos negativos (indicadores de "Transacções Rentáveis" e "Transacções Perdidas").
Alterações propostas: 1. Introduzir uma contagem decrescente para os indicadores "Levantamento máximo", "Carga máxima de depósito", "Perder negócios" (quanto menor é o valor - quanto maior é o valor do indicador no gráfico); 2. Substituir um dos indicadores duplicados ("Comércios rentáveis" ou "Comércios perdedores") por um novo indicador (por exemplo, desvio médio do montante da compra para vender, ou outra coisa qualquer); 3. Para certos indicadores, tais como "Máximo levantamento" e "Carga máxima de depósito", substituir a omnipresente escala % no gráfico por uma escala logarítmica ou outra escala de visualização. O objectivo é aumentar o impacto do indicador na atractividade do sinal.
boolArrayInsert(
void& dst_array[], // receiving array constvoid& src_array[], // source array uintdst_start, // receiver array index to be inserted uint src_start=0, // source array index to be copied uint count=WHOLE_ARRAY// number of elements to insert
);
intArrayCopy(
void& dst_array[], // destination array constvoid& src_array[], // source array intdst_start=0, // index starting from which write into destination array int src_start=0, // first index of a source array int count=WHOLE_ARRAY// number of elements
);
Diferenças em funções quase "idênticas": 1. nenhum parâmetro padrão para o ArrayInsert. 2. falta de uma descrição do parâmetro "padrão".
A utilização de diferentes tipos de dados para os mesmos parâmetros (int, uint) pode ser entendida, referindo-se à compatibilidade.
Os registos do testador e dos agentes (os primeiros 24 são suficientes) podem ser visualizados?
Sim, é claro. MT5 (construir 2045) o mesmo problema.
E MT5 (construir 2009) - tudo está bem.
Talvez tenha havido algumas alterações em relação ao MT5 (construir 2009), em particular na lógica de determinar se um agente local está ou não a funcionar (por exemplo, levá-lo à lógica de detecção de agentes de rede)...
MT5. construir 2055.
ChartGetDouble(0,CHART_PRICE_MAX) e ChartGetDouble(0,CHART_PRICE_MIN) função é executada incorrectamente (escreve zeros) quando se altera a TF.
E escreve correctamente a primeira vez ao iniciar o indicador. Depois, quando a TF é transferida para a TF mensal é sempre zeros, noutras vezes no início, depois é normalizada.
resultado:
https://www.mql5.com/ru/docs/basis/types/classes
offsetof – это специальная команда, которая непосредственно связана в атрибутом pack. Она позволяет получить смещение члена от начала структуры.
Mas a realidade coloca tudo no seu lugar:
https://www.mql5.com/ru/docs/basis/types/classes
No início fiquei surpreendido porque não estava ciente da existência de offsetof.Mas a realidade coloca tudo no seu lugar:
O senhor mesmo escreveu
Se abrir um sinal da secção Sinais, pode ver um exemplo de um infográfico:
Normalmente, o objectivo de um infográfico é transmitir ao utilizador final os prós e os contras de um conjunto de propriedades do objecto a ser analisado.
No entanto, a essência desta infografia não é clara, quando um desenho a 100% é exibido como resultado a 100% no gráfico.
Também o mesmo indicador é utilizado duas vezes dentro do mesmo gráfico: uma vez em termos positivos e a segunda vez em termos negativos (indicadores de "Transacções Rentáveis" e "Transacções Perdidas").
Alterações propostas:
1. Introduzir uma contagem decrescente para os indicadores "Levantamento máximo", "Carga máxima de depósito", "Perder negócios" (quanto menor é o valor - quanto maior é o valor do indicador no gráfico);
2. Substituir um dos indicadores duplicados ("Comércios rentáveis" ou "Comércios perdedores") por um novo indicador (por exemplo, desvio médio do montante da compra para vender, ou outra coisa qualquer);
3. Para certos indicadores, tais como "Máximo levantamento" e "Carga máxima de depósito", substituir a omnipresente escala % no gráfico por uma escala logarítmica ou outra escala de visualização. O objectivo é aumentar o impacto do indicador na atractividade do sinal.
Porque é que as estruturas podem fazer cópias profundas, maso ArrayCopy, mesmo quando a classe tem um construtor de cópias, não pode fazer nada e dá um erro de compilação?
"Não é normal, não é justo!" ©
Diferenças em funções quase "idênticas":
1. nenhum parâmetro padrão para o ArrayInsert.
2. falta de uma descrição do parâmetro "padrão".
A utilização de diferentes tipos de dados para os mesmos parâmetros (int, uint) pode ser entendida, referindo-se à compatibilidade.
Nenhum parâmetro padrão para o ArrayInsert.
Porque é que as estruturas podem fazer cópias profundas, maso ArrayCopy, mesmo quando a classe tem um construtor de cópias, não pode fazer nada e dá um erro de compilação?
"Não é normal, não é justo!" ©
Eu próprio tive de implementar um ArrayCopy de pleno direito.
Não me parece, mas talvez alguém o considere útil.
Resultado: