Substituição de funções dos arquivos MT4. - página 10

 

Substituição de arquivo

Quero testar um EA que faz uso de sinais externos no Testador de Estratégia e o tópico afirma que o tratamento de arquivos nativos não funciona no testador de estratégia. Por isso, tentei usar a dll fornecida nesta thread. A entrada que eu quero processar está em um arquivo com este aspecto:

2007-01-02;EURUSD;2.InstPipDown;;Yes

2007-01-02;USDJPY;1.InstPipUp;;Yes

2007-01-02;USDCHF;1.InstPipUp;;Yes

2007-01-03;EURUSD;2.InstPipDown;;Yes

2007-01-03;EURUSD;4.PipMax1Down;;Yes

2007-01-03;GBPUSD;4.PipMax1Down;;Yes

2007-01-04;USDJPY;8.PipRevBear;;Yes

2007-01-05;EURUSD;5.PipMax2Up;;Yes

2007-01-05;USDJPY;1.InstPipUp;;Yes

Eu mesmo crio o arquivo para poder usar outros tipos de delimitadores.

Como posso usar a dll para obter um "registro" no momento? Eu posso fazer a análise dos campos individuais.

Como posso saber quando cheguei à EOF?

Tentei algumas variações, mas obtive resultados inconsistentes e, às vezes, lixo. Escrever dados como no exemplo funciona bem, mas eu quero ler os dados.

 

Bem, regras de perserverança!

Após várias horas eu descobri isto:

O manipulador de arquivos se recusa a abrir um arquivo que eu criei com outro programa. Retornos abertos -1. Se eu usar o arquivo que foi criado pelo demo (mt4.log) e copiar meu conteúdo para ele, abrir trabalhos. Cant descobrir por quê. Estranho

Eu fiz meus "records" de comprimento fixo e li o comprimento do "record" mais 2 para acomodar para "CRLF" no final de cada record. Consegui o comprimento do arquivo, dividido pelo comprimento do registro e fiz um loop para colocar todos os meus registros em um array:

Aqui está o código:

int init()

{

cordão emArr[500];

int file;

int file; int file;

registros int;

int i;

file = gFileOpen("c:\mt4.log",READ);

// Print(file);

filesize = gFileSize(file);

// Print(fileize);

records = filesize/25;

// Print(records);

for(i=1;i<=records;i++)

{

inArr = gFileRead(arquivo,25);

}

gFileClose(arquivo);

Print(inArr[filesize-1]); //Check the last one

retorno(0);

}

 

indicador com fileoutput

olá comerciantes e programadores.

preciso de ajuda com um códigoegemnt para um novo indicador.

o indicador deve ser capaz de escrever um arquivo com informações relevantes, mas só deve escrever depois de abrir uma vela nova. nem todo carrapato.

como isto poderia ser feito? o que eu tento fazer é, em cada vela nova, escrever OHCL das últimas 1000 barras para treinar um PNN. isto deve ser feito fora com RAPID-I.

e com algumas outras informações para saber qual seria a probabilidade do fechamento de uma vela.

por favor, ajude. seria um grande projeto, mas coisas tão simples que eu tenho que fazer de estúpido (ou preguiçoso) :-)

PriNova

 

data/hora timeprev=0; antes do init()

e

if(timeprev==Time[0])

retorno(0);

timeprev=Tempo[0]; logo abaixo do início()

e é isso.

 

bom, esta foi uma resposta muito rápida.

obrigado elite

 

Por que a função de movimentação foi removida da biblioteca

CodificadoresGuru,

Não posso dizer o quanto você é valioso para mim, Você merece muito dos elogios que recebo de meus clientes, pois sem você eu não seria capaz de fazer meu trabalho em apoio a eles.

Existe alguma razão para que a função Mover não tenha sido implementada como está referenciado em seu tutorial?

Muito obrigado mais uma vez quatro seus serviços

John McGlaughlin

 

gFileReadir

Olá,

Olhando o código fonte da mtguru1.dll, descobri que a função gFileRead() não deve funcionar. Estou Errado?

O gFileRead() usa uma variável local para armazenar a string lida do arquivo. Quando a função retorna, ela retorna um ponteiro para aquela variável, mas este ponteiro pode ser válido porque o pbuffer da variável local sai do escopo.

Assim, a partir de uma MQL4 EA, uma instrução como esta deve falhar :

string buffer = gFileRead( handle, 50 );

e se funcionar, é estranho ...

P.S.: Já coloquei isto no tópico errado, antes. https://www.mql5.com/en/forum/172885.

 

Errata Corrige:

.... mas este ponteiro pode ser um ponteiro válido ....

mas este ponteiro NÃO PODE ser um válido

 

Executar um arquivo exe

Hi,

Eu quero fazer uma coisa simples (assim pensei). Eu quero simplesmente abrir (lançar) um programa externo de um EA. (não no EA)

Portanto, apenas para fins de exame. Digamos que eu queria abrir a palavra Microsoft quando uma determinada coisa acontece na EA.

Já fiz isso antes, mas não consigo encontrar o roteiro, passei 2 horas pesquisando na web. Da próxima vez eu guardarei o código em algum lugar seguro!

 

alguma pergunta?

Eu recebi este erro "2008.10.21 01:54:34Fundamental Trader DailyFX_MQL4 v0.02: handle 2 does not exist in FileClose"

Como posso fazer ?