Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 169

 

Boa tarde. Não consigo ler os dados do arquivo e imediatamente os escrevo de volta. Se eu descomentar um fragmento de código com loops e MathRand(), o arquivo fica como deve ser. Mas se as linhas forem comentadas (já há confusão no arquivo), na próxima vez que eu ativar/desativar o Expert Advisor, o arquivo conterá zeros. As matrizes de leitura-escrita são dupla ROM1[128][128] e dupla ROM2[3][128]. As matrizes não são alteradas em nenhum outro lugar do código, apenas lidas. Aqui está um pedaço de código:

int init()                                     
   {
   Print ("Сработала ф-ия init"); // Сообщение
   Handle=FileOpen("Neuro",FILE_BIN|FILE_READ|FILE_WRITE);// Открытие файла на чтение и запись   
   FileSeek(Handle, 0, SEEK_SET); //указатель на начало файла
   FileReadArray(Handle, ROM1);
   FileSeek(Handle, 131073, SEEK_SET); //указатель на конец первого массива
   FileReadArray(Handle, ROM2);

/*
   for(i=0; i<128; i++) //заполнение памяти первого слоя кашей
      {
      for(k=0; k<128; k++)
         {
         ROM1[i][k] = (MathRand()-16383)/3200;
         }
      }
   for(i=0; i<3; i++) //заполнение памяти второго слоя кашей
      {
      for(k=0; k<128; k++)
         {
         ROM1[i][k] = (MathRand()-16383)/3200;
         }
      }
*/         
   return(0);                                       
   }   
//--------------------------------------------------------------------
int deinit()                                   
   {
   FileSeek(Handle, 0, SEEK_SET);
   FileWriteArray(Handle, ROM1);
   FileSeek(Handle, 131073, SEEK_SET);
   FileWriteArray(Handle, ROM2);
   FileClose(Handle);
   return(0);                                     
   }

Por favor, ajude-me a entender isto. Obrigado.
 
Olá, você poderia me dizer como escrever no código EA
condição para a busca de um sinal

Por exemplo:
Há uma ordem no mercado com o mágico 565 aberto às 13:00
Na EA há uma condição de que, para abrir a ordem
no mercado uma ordem com um número mágico 565, como posso em meu Consultor Especialista adiar a busca do sinal por um
A busca de um sinal para começar às 14:00 horas.

Vejo atualmente uma situação em que às 13:00, um pedido com Magic 565 é aberto
e a coruja abre seu pedido às 13:00:02.

duas ordens idênticas.


Obrigado.

 
var58:
Olá, você poderia me dizer como escrever no código EA
condição para a busca de um sinal

Por exemplo:
Há uma ordem no mercado com o mágico 565 aberto às 13:00
Na EA há uma condição de que, para abrir a ordem
no mercado uma ordem com um número mágico 565, como posso em meu Consultor Especialista adiar a busca do sinal por um
A busca de um sinal para começar às 14:00 horas.

Vejo atualmente uma situação em que às 13:00, um pedido com Magic 565 é aberto
e a coruja abre seu pedido às 13:00:02.

duas ordens idênticas.


Obrigado.

Você pode procurar um sinal quando quiser, mas tem que abrir uma posição por tempo.

Observe a hora de abertura de uma posição com o mágico 565 e observe a hora atual. Se o tempo atual for maior que o tempo de abertura de uma posição com magia 565 pelo número de minutos especificado, então você pode abrir uma posição.

 
Artyom Trishkin:

Você pode procurar um sinal sempre que quiser, mas deve permitir que uma posição seja aberta a tempo.

Veja a hora de abrir uma posição com o mágico 565 e veja a hora atual. Se o tempo atual for maior do que o tempo de abertura da Magik 565 por um determinado número de minutos, então a posição pode ser aberta.


Muito obrigado. Qual é a aparência do código?
 
Boa tarde. Não consigo ler os dados do arquivo e imediatamente os escrevo de volta. Se eu descomentar um fragmento de código com loops e MathRand(), o arquivo fica como deve ser. Mas se as linhas forem comentadas (já há confusão no arquivo), na próxima vez que eu ativar/desativar o Expert Advisor, o arquivo conterá zeros. As matrizes de leitura-escrita são dupla ROM1[128][128] e dupla ROM2[3][128]. As matrizes não são alteradas em nenhum outro lugar do código, apenas lidas. Aqui está um pouco de código:

Um pouco disso. A função não lerá uma matriz bidimensional dupla em nenhum caso, embora ela a escreva bem.

Fiz um loop para a leitura elemento por elemento. Pode ser, pode ser útil para alguém.

{
FileSeek(Handle, n,  SEEK_SET); //изменение позиции файлового курсора        
Neuron[k][i].rom[l] = FileReadDouble(Handle, DOUBLE_VALUE); //загрузка из файла
n=n+8;
}
 
var58:

Muito obrigado. O que parece em código?

E isto não é escrita de código livre, mas ajuda para aqueles que estão tentando escrevê-los eles mesmos, mas não conseguem acertar.

Mostre-nos o que você não pode fazer em seu código - nós o ajudaremos.

 
Tamul:

Eu já resolvi isso um pouco. A função bidimensional da matriz dupla não quer ler, embora escreva bem.

Fiz uma leitura loop-by-loop. Talvez alguém venha a precisar.

{
FileSeek(Handle, n,  SEEK_SET); //изменение позиции файлового курсора        
Neuron[k][i].rom[l] = FileReadDouble(Handle, DOUBLE_VALUE); //загрузка из файла
n=n+8;
}

Por que eu deveria oferecer tais muletas às pessoas, só porque eu mesmo ainda não lidei com a tarefa?

Para ler uma matriz bidimensional de um arquivo, ela deve ser uma matriz bidimensional preparada para isso.

Se eu me lembro corretamente dessa amostra de código, não vi que o arquivo está fechado depois de ter sido escrito. Um arquivo vazio é criado e os dados são escritos nele, mas este arquivo preenchido é armazenado na memória principal e os dados do arquivo só podem ser lidos a partir do disco. Como resultado, o arquivo parece ter sido escrito, mas fisicamente não está no disco. A fim de salvar os dados em disco, deve-se fechar o arquivo ou salvá-lo à força em disco.

 
Artyom Trishkin:

E isto não é escrita de código livre, mas ajuda para aqueles que estão tentando escrevê-los eles mesmos, mas não conseguem acertar.

Mostre-nos o que você não pode fazer em seu código e nós lhe ajudaremos.


obrigado
 

Olá! Por favor, escreva um exemplo simples (muito simples) em mql4. Eu sou apenas um iniciante completo.

1) abrir uma ordem pendente quando ela atingir um determinado valor (ou seja, se o preço for 0,7777, então abra uma ordem pendente)

2) Fechar uma ordem de mercado quando esta tiver atingido qualquer valor (isto é, se o preço for 0,6666, então feche a ordem).

Eu não posso nem mesmo fechar um pedido usando um número de pedido único. Eu quero tentar mudar o estado atual do meu robô comercial, mas não entendo nada.

Eu tentei ler um tutorial deste site, mas nenhum efeito (talvez eu seja tão estúpido), e os exemplos elementares não estão, de alguma forma, na Internet. Obrigado de antemão

 
maxon777:

Olá! Por favor, escreva um exemplo simples (muito simples) em mql4. Eu sou apenas um iniciante completo.

1) abrir uma ordem pendente quando ela atingir qualquer valor (isto é, se o preço for 0,7777, então abra uma ordem pendente)

2) Fechar uma ordem (de mercado) quando esta tiver atingido qualquer valor (isto é, se o preço for 0,6666, então feche a ordem).

Eu não posso nem mesmo fechar um pedido usando um número de pedido único. Eu quero tentar mudar o estado atual do meu robô comercial, mas não entendo nada.

Eu tentei ler um tutorial deste site, mas nenhum efeito (talvez eu seja tão estúpido), e os exemplos elementares não estão, de alguma forma, na Internet. Obrigado de antemão


Se você tiver problemas com pedidos pendentes, procure-os no CodeBase e veja como o código está escrito.