Dmitry01110: Olá! Você poderia me dizer como editar um arquivo criado pela função FileOpen, por exemplo, excluir um byte da posição atual e inserir outro em seu lugar!
Também tentando fazer algo semelhante.
Há um arquivo *.csv com apenas uma coluna, ou seja, os dígitos nele vão abaixo um do outro. Estou tentando fazer com que cada vez que um dígito é usado, haja um ícone ao lado dele, indicando que este dígito já foi usado pela EA.
Você pode preparar um arquivo *.csv com duas colunas - [NÚMERO]; [SIGNIFICAR].
Dmitry01110: Olá, você poderia me dizer como editar um arquivo criado com a função FileOpen, por exemplo, excluir um byte da posição atual e inserir outro em seu lugar!
Você chama o texto inteiro do arquivo para uma variável de string, edita-o como uma variável simples, depois chama aquele arquivo apenas para escrever e retorna aquela variável de volta.
Roger: Você chama o texto inteiro de um arquivo para uma variável de string, edita-o como uma variável simples, depois chama aquele arquivo somente para escrita e devolve aquela variável de volta.
E se o número de caracteres no arquivo exceder o tamanho máximo de caracteres na variável string?
Eu descobri um pouco! Para substituir um valor em alguma posição de arquivo, basta colocar um ponteiro no byte anterior usando FileSeek, e então, usando FileWriteInteger, por exemplo, escrever ali um novo valor, que sobregravará o antigo. O principal é que valores antigos e novos devem ser do mesmo tamanho, por exemplo, LONG_VALUE para int.
Tive meu terminal atualizado hoje. Agora não consegue ver os indicadores... O que fazer e coloquei-o corretamente. Na mesma pasta (caminho) como antes.
artmedia70: E se o número de caracteres no arquivo exceder o tamanho máximo de caracteres na variável string?
Não há limite para a variável string. Ou melhor, há, mas é muito grande. Para o MT4 da construção 529 é de 2147483647 caracteres e 2 vezes menos se o MT4 estiver em OS de 32 bits. E nem sempre é assim. Existem chaves e PAE diferentes.
Dmitry01110: Imaginei um pouco! Para substituir um valor em alguma posição de arquivo, basta colocar um ponteiro no byte anterior usando FileSeek e depois, usando FileWriteInteger, por exemplo, escrever ali o novo valor, que sobregravará o antigo. O principal é que os valores antigos e novos devem ser do mesmo tamanho, por exemplo, LONG_VALUE para int.
Sim, e para o CSV o número de caracteres deve corresponder.
Zolotai:
for(int l = StringLen(tfs)-1; l >= 0; l--) { int nChar = StringGetChar(tfs,l); }
Há um erro no código. Por que o "char" faz o juramento? Como e com o que posso substituí-lo?
Ajude a resolver um problema!
A EA no testador fica pendurada quando se usa a função ICustom. Existe alguma solução para o problema?
Também, no Testador de Estratégia, há um erro constante PB Trade EURUSD,H1: OrderSend error 130
Embora as paradas estejam em 300 pontos!
Não funciona assim!
Onde eu errei?
Olá! Você poderia me dizer como editar um arquivo criado pela função FileOpen, por exemplo, excluir um byte da posição atual e inserir outro em seu lugar!
Também tentando fazer algo semelhante.
Há um arquivo *.csv com apenas uma coluna, ou seja, os dígitos nele vão abaixo um do outro. Estou tentando fazer com que cada vez que um dígito é usado, haja um ícone ao lado dele, indicando que este dígito já foi usado pela EA.
Você pode preparar um arquivo *.csv com duas colunas - [NÚMERO]; [SIGNIFICAR].
Também no testador há um erro constante PB Trade EURUSD,H1: OrderSend error 130
Embora as paradas estejam a 300 pips!
Não funciona assim!
Onde eu errei?
Os preços calculados na ordem comercial devem ser normalizados para Dígitos:
Você também precisa verificar a validade dos valores dos pedidos de parada em relação aos requisitos do StopLevel:
Para comprar, aproximadamente como este
Olá, você poderia me dizer como editar um arquivo criado com a função FileOpen, por exemplo, excluir um byte da posição atual e inserir outro em seu lugar!
Você chama o texto inteiro de um arquivo para uma variável de string, edita-o como uma variável simples, depois chama aquele arquivo somente para escrita e devolve aquela variável de volta.
for(int l = StringLen(tfs)-1; l >= 0; l--) { int char = StringGetChar(tfs,l); }
Há um erro no código. Por que o "char" faz o juramento? Como e com o que posso substituí-lo?
E se o número de caracteres no arquivo exceder o tamanho máximo de caracteres na variável string?
Não há limite para a variável string. Ou melhor, há, mas é muito grande. Para o MT4 da construção 529 é de 2147483647 caracteres e 2 vezes menos se o MT4 estiver em OS de 32 bits. E nem sempre é assim. Existem chaves e PAE diferentes.
Imaginei um pouco! Para substituir um valor em alguma posição de arquivo, basta colocar um ponteiro no byte anterior usando FileSeek e depois, usando FileWriteInteger, por exemplo, escrever ali o novo valor, que sobregravará o antigo. O principal é que os valores antigos e novos devem ser do mesmo tamanho, por exemplo, LONG_VALUE para int.
for(int l = StringLen(tfs)-1; l >= 0; l--) { int nChar = StringGetChar(tfs,l); }
Há um erro no código. Por que o "char" faz o juramento? Como e com o que posso substituí-lo?