Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 169

 

Buon pomeriggio. Non posso leggere i dati dal file e riscriverli immediatamente. Se decommento un frammento di codice con loop e MathRand(), il file diventa poltiglia come dovrebbe essere. Ma se le linee vengono lasciate commentate (già c'è disordine nel file), allora la prossima volta che abilito/disabilito l'Expert Advisor, il file conterrà degli zeri. Gli array di lettura-scrittura sono doppio ROM1[128][128] e doppio ROM2[3][128]. Gli array non vengono cambiati da nessun'altra parte nel codice, solo letti. Ecco un pezzo di codice:

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);                                     
   }

Per favore, aiutatemi a capire questo. Grazie.
 
Ciao, potresti dirmi come scrivere nel codice EA
condizione per cercare un segnale

Per esempio:
C'è un ordine nel mercato con magic 565 aperto alle 13:00
Nell'EA c'è una condizione che per aprire l'ordine
nel mercato un ordine con un numero magico 565, come posso nel mio Expert Advisor posticipare la ricerca del segnale di uno
La ricerca di un segnale per iniziare alle 14:00.

Attualmente vedo una situazione in cui alle 13:00 viene aperto un ordine con un numero magico 565
e il gufo apre il suo ordine alle 13:00:02.

due ordini identici.


Grazie.

 
var58:
Ciao, potresti dirmi come scrivere nel codice EA
condizione per cercare un segnale

Per esempio:
C'è un ordine nel mercato con magic 565 aperto alle 13:00
Nell'EA c'è una condizione che per aprire l'ordine
nel mercato un ordine con un numero magico 565, come posso nel mio Expert Advisor posporre la ricerca del segnale di uno
La ricerca di un segnale per iniziare alle 14:00.

Attualmente vedo una situazione in cui alle 13:00 viene aperto un ordine con Magic 565
e il gufo apre il suo ordine alle 13:00:02.

due ordini identici.


Grazie.

Puoi cercare un segnale quando vuoi, ma l'apertura di una posizione deve essere temporizzata.

Guarda il tempo di apertura di una posizione con magic 565 e guarda il tempo attuale. Se il tempo corrente è più lungo del tempo di apertura di una posizione con magic 565 del numero di minuti specificato, allora potete aprire una posizione.

 
Artyom Trishkin:

Puoi cercare un segnale quando vuoi, ma devi permettere l'apertura di una posizione per tempo.

Vedere il tempo di apertura di una posizione con magic 565 e vedere il tempo attuale. Se l'ora corrente è più lunga dell'ora di apertura di Magik 565 di un determinato numero di minuti, allora la posizione può essere aperta.


Grazie mille. Come appare nel codice?
 
Buon pomeriggio. Non posso leggere i dati dal file e riscriverli immediatamente. Se decommento un frammento di codice con loop e MathRand(), il file diventa poltiglia come dovrebbe essere. Ma se le linee vengono lasciate commentate (già c'è disordine nel file), allora la prossima volta che abilito/disabilito l'Expert Advisor, il file conterrà degli zeri. Gli array di lettura-scrittura sono doppio ROM1[128][128] e doppio ROM2[3][128]. Gli array non vengono cambiati da nessun'altra parte nel codice, solo letti. Ecco un po' di codice:

Un po' di tutto. La funzione non leggerà una matrice bidimensionale doppia, anche se la scriverà correttamente.

Ho fatto un ciclo per la lettura elemento per elemento. Forse può essere utile a qualcuno.

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

Grazie mille. Come appare nel codice?

Non è scrivere codice gratis, è aiutare coloro che stanno cercando di scriverlo da soli, ma hanno difficoltà.

Mostraci cosa non puoi fare nel tuo codice - ti aiuteremo.

 
Tamul:

Ho lavorato un po'. La funzione doppio array bidimensionale non vuole leggere, anche se scrive bene.

Ho fatto una lettura ciclo per ciclo. Forse qualcuno ne avrà bisogno.

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

Perché dovrei offrire tali stampelle alla gente, solo perché non ho affrontato il compito da solo?

Per leggere un array bidimensionale da un file, dovrebbe essere un array bidimensionale preparato per questo.

Se ricordo bene quell'esempio di codice, non ho visto che il file viene chiuso dopo essere stato scritto. Un file vuoto viene creato e i dati vengono scritti in esso, ma questo file riempito viene memorizzato nella memoria principale e i dati del file possono essere letti solo dal disco. Come risultato, il file sembra che sia stato scritto ma fisicamente non è sul disco... Per salvare i dati su disco, si deve chiudere il file o salvarlo forzatamente su disco.

 
Artyom Trishkin:

E questo non è scrivere codice libero, ma un aiuto per coloro che stanno cercando di scriverlo da soli, ma non riescono a farlo bene.

Mostraci cosa non puoi fare nel tuo codice e ti aiuteremo.


grazie
 

Per favore, scrivi un semplice (molto semplice) esempio in mql4. Sono solo un principiante assoluto.

1) aprire un ordine pendente quando raggiunge qualsiasi valore (cioè se il prezzo è 0,7777, allora aprire un ordine pendente)

2) Chiudere un ordine (a mercato) quando ha raggiunto qualsiasi valore (cioè se il prezzo è 0,6666, allora chiudere l'ordine).

Non posso nemmeno chiudere un ordine usando un numero d'ordine unico. Voglio provare a cambiare lo stato attuale del mio robot di trading, ma non ci capisco niente.

Ho provato a leggere un tutorial da questo sito, ma nessun effetto (forse sono così stupido), e gli esempi elementari non sono in qualche modo su Internet. Grazie in anticipo

 
maxon777:

Per favore, scrivi un semplice (molto semplice) esempio in mql4. Sono solo un principiante assoluto.

1) aprire un ordine pendente quando raggiunge qualsiasi valore (cioè se il prezzo è 0,7777, allora aprire un ordine pendente)

2) Chiudere un ordine a mercato quando ha raggiunto qualsiasi valore (cioè se il prezzo è 0,6666, allora chiudere l'ordine).

Non posso nemmeno chiudere un ordine usando un numero d'ordine unico. Voglio provare a cambiare lo stato attuale del mio robot di trading, ma non ci capisco niente.

Ho provato a leggere un tutorial da questo sito, ma nessun effetto (forse sono così stupido), e gli esempi elementari non sono in qualche modo su Internet. Grazie in anticipo


Se hai problemi con gli ordini pendenti, cercali sul CodeBase e vedi come è scritto il codice.