Erros, bugs, perguntas - página 2574

 
Aleksei Beliakov:
Banal se imprimir os resultados destas funções em ontick então é pelo tempo 1970.01.01.01 pelo preço 0
Costumava ser tempo de bar ou tempo de preço.
Por isso, agora é assim.

Talvez tenha um bug no seu computador? Tenho este código na construção 1220.

 Print("iHigh ", iHigh(NULL, PERIOD_W1, 0));
 Print("iTime ", iTime(NULL, PERIOD_W1, 0));

gravuras

2019.09.23 09:41:27.560 00 EURUSD,M5: iTime 2019.09.22 00:00:00
2019.09.23 09:41:27.560 00 EURUSD,M5: iHigh 1.10245
 
Aleksei Beliakov:
Se imprimir os resultados destas funções em ontick, é pelo tempo 1970.01.01.01 pelo preço 0.
Costumava ser tempo de bar ou tempo de preço.
Então agora é assim

O que éo código de erro?

Quais são os parâmetros do teste?

Os dados estão carregados durante semanas e meses? Quantos são no total?

 
Slava:

O que éo código de erro?

Quais são os parâmetros do teste?

Os dados são carregados por semanas e meses? Quantos são no total?

Verifiquei novamente e tudo está a funcionar agora.

Descarreguei a história.

Obrigado.

 
Tenho a certeza que este tópico já foi levantado: deveria ser possível coexistir duas versões diferentes do MT5 num só computador (desactivar a actualização automática e o rollback). Ou pelo menos beta e release. Ou é possível (sem virtualização).
 

Observação da memória.

Tenho copyRates executados cerca de mil vezes no meu código.

Depois, o conjunto de citações é de alguma forma processado, e no final deste chamo:

ArrayRemove(ArrayQuotes,0,ArraySize);

ArrayFree(ArrayQuotes);

ArrayResize(ArrayQuotes,0);

ArrayFree(ArrayQuotes);

ZeroMemória(ArrayQuotes);

(apenas experimentado de forma diferente)

Resultado - a memória ainda cresce geometricamente e fica entupida, juntamente com a sua carga nos processadores - o processador i7 fica entupido em 80% no total em todos os núcleos lógicos, a memória é mais do que o Giga.

Até agora, consegui limitar o consumo de recursos com um programa de terceiros - CPU não superior a 15% e memória não superior a Giga.

Pergunta - isto é um bug ou uma característica da plataforma?

 
É possível seleccionar rigidamente a codificação da fonte? Sei que quando as personagens são apenas ascii, é um byte único, caso contrário utf-16. Pode o utf-8?
 

A propósito, o estranho comportamento de meta-editor, deve ser corrigido:

fn_call();/////////////////////

Clicando duas vezes nas barras destaca as barras com o carácter anterior (se não for um número/letra aí).

Porquê inconveniente? Fez uma edição temporária no código, espaço destacado desta forma, depois precisa de destacar e apagar rapidamente cortes únicos.

 

Ainda de volta à questão de passar os fios da dll, wchar_t* como ponteiro.
Do artigo de Renat sobre o trabalho com cordas na dll, é claro que a string do tipo mql leva um ponteiro a string wchar_t* da dll externa.
Por outras palavras, enviamoswchar_t* para a dll e recebemo-la como string & em mql.
Mas a função C

wcscpy_s(wchar_t *dest, rsize_t  dest_size, const wchar_t *src);

não funciona correctamente, ou seja, um ponteiro para owchar_t* dest é recebido em mql, mas falha e entra e sai.
Por vezes, o terminal trava e o programa é terminado.

Com a função

wcscpy(wchar_t *dest,  const wchar_t *src);

O terminal não cai, mas as cordas também chegam de forma intermitente.
Por favor, corrigir na próxima construção.

ZS. Esqueci-me de especificar que o ponteirowchar_t* é passado a partir de outro fio.
Ou seja, wcscpy_s ou função wcscpy é chamada num fio separado.

 
Roman:

Ainda de volta à questão de passar os fios da dll, wichar_t* como ponteiro.
Do artigo de Renat sobre o trabalho com cordas na dll, é claro que a string do tipo mql leva um ponteiro para a string wichar_t* da dll externa.
Por outras palavras, enviamos wichar_t* para a dll e recebemo-la como string & em mql.
Mas a função C

não funciona correctamente, ou seja, um ponteiro para a cordaque_t* dest é recebido em mql mas falha e entra e sai.
Por vezes, o terminal trava e o programa é terminado.

Com a função

O terminal não cai, mas as cordas também chegam de forma intermitente.
Por favor, corrigir na próxima construção.

ZS. Esqueci-me de mencionar que o ponteiro wichar_t* é passado a partir de outro fio.
Ou seja, wcscpy_s ou função wcscpy é chamada num fio separado.

Quem vai atribuir a memória para o destino das cordas?
 
Vladimir Simakov:
E quem vai atribuir a memória para o destino das cordas?

A memória é atribuída no código mql como

#import "Dll.dll"
   void Func(string task, string & out);
#import 

string оut;
StringInit(out, 165, 32);

para fora e passado como um ponteiro para a memória alocada, porque string em mql é wchar_t* em dll

Func("Task", out);