Erros, bugs, perguntas - página 3040

 
Andrei Trukhanovich:

Isto tem sido o caso há muito tempo. cordas mql não gostam realmente de caracteres nulos dentro de uma corda e, literalmente, também em funções.

A única forma normal é traduzir três cordas com um terminando nulo em uma matriz.

Isto é, este comportamento, tal como é agora, foi feito deliberadamente há alguns anos atrás. Não conheço as razões.

E que função para além de StringToCharArray não funciona correctamente com os nulos internos?

Por exemplo StringToShortArray - funciona sem erros.

StringCompare costumava funcionar incorrectamente, mas isto foi corrigido há muito tempo.

Quanto a StringLen, não funciona correctamente.

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Insectos, insectos, perguntas

A100, 2019.05.15 13:45

Erros apenas parcialmente corrigidos .... porque não!? Na minha memória StringLen sempre funcionou correctamente (pelo menos em x32)

 
A100:

Não me lembro exactamente, a certa altura uma corda com um interior nulo foi truncado a zero, talvez com uma simples operação de corda.

 

Grande fórum, começou a enviar uma resposta esta tarde. A própria resposta perdeu-se.

Segunda-feira, a meio da tarde...


 

Vários terminais são minimizados. No entanto, cada terminal dá alertas para a sua própria janela de alerta - não colapsada.

Como posso saber qual a janela de alerta que corresponde a que terminal?

 
fxsaber:

Vários terminais são minimizados. No entanto, cada terminal dá alertas para a sua própria janela de alerta - não colapsada.

Como posso compreender que janela de alerta corresponde a que terminal?

Não sei nada sobre ID de terminal único, mas pode acrescentar para alertarAccountInfoString(ACCOUNT_COMPANY). Não creio que alguém tenha várias instâncias MT5 registadas simultaneamente numa mesma corretora, embora hipoteticamente ainda possa ser razoável se for necessário sentar-se em contas diferentes da mesma corretora. Neste caso (na pior das hipóteses)AccountInfoInteger(ACCOUNT_LOGIN) ouAccountInfoString(ACCOUNT_SERVER) poderão funcionar.

 
x572intraday:

Não sei nada sobre ID de terminal único, mas pode adicionarAccountInfoString(ACCOUNT_COMPANY) ao alerta. Penso que ninguém terá várias instâncias MT5 ligadas à mesma corretora ao mesmo tempo, embora hipoteticamente ainda possa valer a pena se tiver de se sentar em contas diferentes da mesma corretora. Neste caso (no pior dos casos)AccountInfoInteger(ACCOUNT_LOGIN) ouAccountInfoString(ACCOUNT_SERVER) fariam.

Sim, pode colocar quaisquer dados de identificação nos seus Alertas. Mas a questão é sobre o caso geral.

 
A100:

Que função para além de StringToCharArray não funciona correctamente com os zeros internos?

Por exemplo, StringToShortArray funciona sem erros.

StringCompare costumava funcionar incorrectamente, mas isto foi corrigido há muito tempo.

Quanto a StringLen


Tem razão, mudou o comportamento do StringToCharArray, agora é todo o comprimento da corda, não até ao primeiro carácter '\0'.

 
Ilyas:

Tem razão, mudou o comportamento do StringToCharArray, agora para o comprimento total da corda, não até ao primeiro carácter '\0'.

Então existe apenas uma diferençaentre StringToCharArray eStringToShortArray:

Forum on Trading, Automated Trading Systems and Strategy Testing

Errors, Bugs, Issues

A100

, 2021.05.25 00:16
void OnStart()
{
    string text = "ABC";
    const int start = 0, count = 0;
    uchar array1[]; int n1 = StringToCharArray(  text, array1, start, count );
    short array2[]; int n2 = StringToShortArray( text, array2, start, count );
    Print( n1, ":", n2 );
}

Resultado: 4:0

Esperado: 0:0

 
A100:
Depois sóresta uma diferença entreStringToCharArray eStringToShortArray:

Fez com que o comportamento fosse o mesmo.


Além disso: num futuro próximo, as matrizes e cordas serão complementadas com métodos, por exemplo

str.ToCharArray(char_arr, from_position, symbol_count);
str.Length();

arr.Size();
string str = char_arr.ToString( code_page );

if(!obj_arr.Push( constructor_parameters ))
   CriticalError("failed to add element");

obj_arr.Sort( compare_func_ptr, context );

obj_arr.Select( uint_result_index_array, filter_func_ptr, context );
 
Ilyas:

num futuro próximo, arrays e cordas serão complementados por métodos

Cada vez menos em comum com a MQL4...