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

 
ANDREY:

Sono contento di essere stato d'aiuto per te :=) :=) :=)

Ora riguardo al mio codice, che probabilmente è così brutto che è sgradevole frugarci dentro. Ma ditemi almeno quale sarebbe il vantaggio del mio codice, se avessi scritto un unico array (con i valori dei prezzi) di questo codice in un file e poi il programma lo leggesse da questo file e usasse i suoi valori in ulteriori calcoli, con un array di soli 60 elementi. Cosa esattamente nel mio codice sarebbe ottimale?
Grazie per il tuo aiuto.

Non si tratta della qualità del codice. Non guardo il codice degli altri. Tranne quello di cui ho bisogno o nell'agonia di un attacco di carità, :=))) ma questo succede sempre meno spesso...

Se volete, potete descrivere a parole ciò che è necessario come risultato e ciò che avete fatto per questo. Allora sarà chiaro quanto il problema vada nella giusta direzione.

 
Alexey Viktorov:

o nell'agonia di un attacco di carità, :=))) ....

Ho letto che le ricadute possono verificarsi all'inizio della primavera, vorrei che la tua remissione fosse finita prima :=))).

E vorrei che i tuoi attacchi fossero così frequenti come possibile..... :=)) :=)))

 
ANDREY:

Grazie per il suggerimento. Ho già iniziato a leggere la sezione OPERAZIONI DI FILE del libro di testo di Kovalev. Infatti... qualcosa comincia a diventare chiaro. Ho capito che tutti gli EA che provo leggono i file di testo con i prezzi delle barre (anche se non creati dal mio programma) con estensione .cvv nella directory del terminale Tester.
In altre parole, le informazioni (dati) di qualsiasi programma vengono scritte nel file e leggere questi dati dal file, anche da qualsiasi programma. Mi sembra che i file memorizzino una grande quantità di dati che non è ragionevole memorizzare nel programma. Qualcosa come il file mqh.
Se volete spiegarmi cosa significa la frase di Alexey Victorov : "....Vuoi scrivere .csv e leggere array....." dal post con riferimento al mio codice dal post
. Pensavo intendesse il file di testo .cvv, con i prezzi delle barre dalla directory del tester. Ma cosa intenda esattamente, ancora non lo capisco. Non sono io a scrivere questi file .cvv, ma il programma del rivenditore Alpari... Come il programma legge da un array - in generale capisco un po' ... Accede a una cella di una matrice tramite il suo indirizzo, entra nella cella e accede al valore della cella (cioè lo legge). Come può un programma leggere in un array invece che da esso? Questa è una contraddizione irrisolvibile .... mi sembra nella mia opinione di profano. Credo, per qualche ragione, che in un array si possano scrivere solo alcuni valori. E si può leggere solo da un array.

Scrivere un array in binario non ha Kovalev. Il libro di testo è del 2009. C'erano solo binfile. E l'array di file bin è apparso più tardi. I file Bin vengono scritti e letti più velocemente. Non hanno un'alimentazione di linea. Ma non sono leggibili per gli umani).

 
Valeriy Yastremskiy:

Kovalev non ha un record di matrice bifilare. Il libro di testo è del 2009. C'erano solo binfile. E l'array di file bin è apparso più tardi. I file Bin vengono scritti e letti più velocemente. Non hanno un'alimentazione di linea. Ma non sono leggibili per gli umani).

Grazie mille per le informazioni, che sono nuove per me. E lo capisco al 50%.... Studierò questo tema in profondità, se sono sicuro di averne bisogno nella mia attuale fase di sviluppo.
Al momento mi sono concentrato sul mio piccolo codice , cercando di trovare il minimo di prezzo tra 2 ordini adiacenti aperti su una candela di un minuto con 2 punti di differenza, usando un tempo minimo e altre risorse del computer. Per questo ho creato un array. Alcune persone cercano di convincermi che questo array deve essere scritto in un file usando una funzione e poi un'altra funzione deve essere usata per ottenere i dati dal file (cioè dall'array) per ulteriori calcoli.

Ma dove sarebbe un vantaggio se scrivessi un unico array (con i valori dei prezzi) di questo codice in un file, e poi il programma lo leggesse da questo file e usasse i suoi valori nei calcoli successivi? E l'array conterrebbe solo 60 elementi. Cosa sarebbe ottimale nel mio codice, esattamente?

Naturalmente nel corso dei test, Ci saranno molti ordini di questo tipo all'interno delle candele dei minuti, tra le quali dovremo calcolare il minimo, ce ne saranno molti.. Il mio codice è solo un'illustrazione di un'idea che mi è venuta.
Alexey Viktorov non può rispondere a questa domanda perché non ha ancora avuto un attacco di carità .... e non ha avuto l'agonia e le convulsioni in relazione ad essa :=).
Forse hai già tutti i presupposti per aiutarmi ad andare avanti.


Grazie per il vostro aiuto.

 
ANDREY:

è difficile capire il creatore del Graal. È possibile passare tutti i calcoli all'indicatore e ottenere un segnale nell'Expert Advisor.

 
ANDREY:

Grazie mille per le informazioni che sono nuove per me. E ne ho capito il 50%.... E se sono sicuro di averne bisogno in questa fase del mio sviluppo, studierò a fondo questo argomento.
Al momento mi sono concentrato sul mio codice , cercando di trovare il minimo di prezzo tra 2 ordini adiacenti aperti su una candela di un minuto con 2 punti di differenza, utilizzando un tempo minimo e altre risorse del computer. Per questo ho creato un array. Alcune persone cercano di convincermi che questo array deve essere scritto in un file usando una funzione e poi un'altra funzione deve essere usata per ottenere i dati dal file (cioè dall'array) per ulteriori calcoli.

Ma dove sarebbe un vantaggio se scrivessi un unico array (con i valori dei prezzi) di questo codice in un file, e poi il programma lo leggesse da questo file e usasse i suoi valori nei calcoli successivi? E l'array conterrebbe solo 60 elementi. Cosa sarebbe ottimale nel mio codice, esattamente?

Naturalmente, durante i test, Ci saranno molti ordini di questo tipo all'interno dei candelieri minuti tra i quali dovremo calcolare il minimo, ce ne saranno molti.. Il mio codice è solo un'illustrazione di un'idea che mi è venuta.
Alexei Viktorov non può rispondere a questa domanda, perché non ha ancora avuto un attacco caritatevole .... e non ha avuto l'agonia e le convulsioni in relazione ad essa :=).
Forse hai già tutti i presupposti per aiutarmi ad andare avanti.


Grazie per il vostro aiuto.

Non capisco un po' la logica. Perché dovreste scrivere una coppia di dati in un array? Potete scriverli in variabili. Un array è quando ci sono molte variabili dello stesso tipo. E se ce ne sono meno di 5, potete memorizzarli in variabili. Perché i dati memorizzati nell'array dovrebbero essere scritti in un file che può essere letto in seguito nello stesso Expert Advisor? Sono comunque disponibili. Sono scritti nel file per lo scambio tra diversi Expert Advisors o per ulteriori elaborazioni, non in questo EA. Inoltre, l'array è sempre globale, se non mi sbaglio.

 
ANDREY:

Grazie mille per le informazioni che sono nuove per me. E ne ho capito il 50%.... E se sono sicuro di averne bisogno in questa fase del mio sviluppo, studierò a fondo questo argomento.
Al momento mi sono concentrato sul mio codice , cercando di trovare il minimo di prezzo tra 2 ordini adiacenti aperti su una candela di un minuto con 2 punti di differenza, utilizzando un tempo minimo e altre risorse del computer. Per questo ho creato un array. Alcune persone cercano di convincermi che questo array deve essere scritto in un file usando una funzione e poi un'altra funzione deve essere usata per ottenere i dati dal file (cioè dall'array) per ulteriori calcoli.

Ma dove sarebbe un vantaggio se scrivessi un unico array (con i valori dei prezzi) di questo codice in un file, e poi il programma lo leggesse da questo file e usasse i suoi valori nei calcoli successivi? E l'array conterrebbe solo 60 elementi. Cosa sarebbe ottimale nel mio codice, esattamente?

Naturalmente, durante i test, Ci saranno molti ordini di questo tipo all'interno dei candelieri minuti tra i quali dovremo calcolare il minimo, ce ne saranno molti.. Il mio codice è solo un'illustrazione di un'idea che mi è venuta.
Alexei Viktorov non può rispondere a questa domanda, perché non ha ancora avuto un attacco caritatevole .... e non ha avuto l'agonia e le convulsioni in relazione ad essa :=).
Forse hai già tutti i presupposti per aiutarmi ad andare avanti.


Grazie per l'aiuto.

L'inizio è così lontano, che è difficile rispondere nei dettagli... Ma cercherò comunque di essere intelligente...

Se ricordo bene, devi determinare quando si è formato il minimo sulla candela in cui l'ordine è stato aperto. Quando questa candela è in corso, non è un problema: mettiamo il più piccolo dei due numeri nella variabile e lo facciamo fino alla chiusura della candela. Ma se dobbiamo determinarlo quando questa candela è già la decima, allora è già un problema per mql4. È molto facile farlo in mql5, basta copiare "da e verso" i tick di tempo selezionati, e l'array conterrà tutto quello che ti serve. Ma per mql4, ti è stato suggerito di scrivere i tick in un file, in modo che più tardi tu possa ottenere questi tick e usare questo array per determinare se il Low di quella candela è inferiore al valore minimo nell'array, significa che Low era prima che l'ordine fosse aperto. Se sono uguali, significa che Low si è formato dopo l'apertura dell'ordine.

Tuttavia... se l'EA funziona, è sufficiente determinarlo in una variabile, come è descritto qui; c'è una funzione per questo scopo che potete leggere nella documentazione nella sezione Funzioni Matematiche; se l'EA non funziona per qualche motivo, non registrerà i tick e non li otterrà nemmeno.

 
Alexey Viktorov:

L'inizio è così lontano che è difficile rispondere in dettaglio... Ma cercherò di essere intelligente...

Se ricordo bene, bisogna determinare quando si è formato il Low della candela su cui si è aperto l'ordine. Quando questa candela è in corso, non è un problema: mettiamo il più piccolo dei due numeri nella variabile e lo facciamo fino alla chiusura della candela. Ma se dobbiamo determinarlo quando questa candela è già la decima, allora è già un problema per mql4. È molto facile farlo in mql5, basta copiare "da e verso" i tick di tempo selezionati, e l'array conterrà tutto quello che ti serve. Ma per mql4, ti è stato suggerito di scrivere i tick in un file, in modo che più tardi tu possa ottenere questi tick e usare questo array per determinare se il Low di quella candela è inferiore al valore minimo nell'array, significa che Low era prima che l'ordine fosse aperto. Se sono uguali, significa che Low si è formato dopo l'apertura dell'ordine.

Tuttavia... se l'EA funziona, è sufficiente memorizzarlo in una variabile, come è descritto qui, c'è una funzione per questo scopo che si può leggere nella documentazione nella sezione Funzioni Matematiche.

Grazie mille per le nuove informazioni per me.... specialmente sulle capacità di mql4 rispetto a mql5 in questo caso. Tuttavia, per quanto strano possa sembrare, il compito che descrivi, l'ho risolto io stesso e il modo in cui è stato risolto mi ha sorpreso per la sua originalità e ottimalità.
Dopo di che ho affrontato un altro problema simile
Mi è stato detto di scrivere i tick in un file,

Invece di scrivere ticks in un file, ho creato un codice che risolve il mio compito senza scrivere ticks in un fileUsando questo codice, cerco di trovare il prezzo minimo tra 2 ordini adiacenti aperti a una candela di un minuto con 2 punti di differenza usando ilminor tempo e altre risorse del computer. Naturalmente, ci saranno molti ordini di questo tipoall'interno di candele di un minuto tra i quali dovremo calcolare il minimo. Questa è solo un'illustrazione della mia idea.

E ora mi interessa la risposta alla domanda Quale sarebbe il vantaggio del mio codice se avessi scritto i tick in un file, come mi hai consigliato?Cosa sarebbe esattamente ottimale nel mio codice?


Su questa domanda è stata fatta luce da Valeriy Yastremskiy Ma mi piacerebbe ascoltare il feedback di qualcuno che mi ha consigliato di mettere le zecche in un file.
Grazie per l'aiuto.

 
Valeriy Yastremskiy:

La logica è un po' poco chiara. Perché scrivere coppie di dati in un array, si possono scrivere in variabili. Un array è quando ci sono molte variabili dello stesso tipo. E se ce ne sono meno di 5, potete memorizzarli in variabili. Perché i dati memorizzati nell'array dovrebbero essere scritti in un file che può essere letto in seguito nello stesso Expert Advisor? Sono comunque disponibili. Sono scritti nel file per lo scambio tra diversi Expert Advisors o per ulteriori elaborazioni, non in questo EA. Inoltre, l'array è sempre globale, se non mi sbaglio.

Grazie per il suggerimento. Sono d'accordo, a volte ci possono essere 5 o meno zecche. Ma in una candela di un minuto ci possono essere molti più tick che secondi e il loro numero tra ordini adiacenti può anche essere molto più di 5.
Ero particolarmente contento che i miei pensieri coincidessero con il rosso evidenziato. Ma non ero sicuro di loro mentre compagni più esperti rafforzavano la mia incertezza.

 
ANDREY:

Grazie mille per le nuove informazioni per me.... specialmente sulle capacità di mql4 rispetto a mql5 in questo caso. Tuttavia, per quanto possa sembrare strano, ho risolto io stesso il problema descritto sopra e sono rimasto sorpreso dalla sua originalità e ottimalità .
Poi ho affrontato un altro problema simile formulato in questo post.

ogni tick. So anche come farlo con un ciclo al tempo di X+2. E come farlo tutto in una volta al tempo di X+2 come nel caso di iLow eiLowest.
Vi sarei molto grato se poteste insegnarmi come fare.
Grazie


Mi è stato consigliato di registrare le zecche in un file

Forum sul trading, sui sistemi di trading automatico e sulla verifica delle strategie di trading.

Tutte le domande dei neofiti su MQL4 e MQL5, aiuto e discussione di algoritmi e codici

Alexey Viktorov, 2021.04.09 18:33

Si può. Dovreste scrivere nel vostro file .bin usando il comando

uint  FileWriteArray( 
   int          file_handle,         // handle файла 
   const void&  array[],             // массив 
   int          start=0,             // начальный индекс в массиве 
   int          count=WHOLE_ARRAY    // количество элементов 
   );

e leggere

uint  FileReadArray( 
   int    file_handle,               // handle файла 
   void&  array[],                   // массив для записи 
   int    start=0,                   // стартовая позиция для записи в массив 
   int    count=WHOLE_ARRAY          // сколько читать 
   );

Ho creato un codice che risolve il mio problema senza scrivere i tick in un file invece di scriverli in un file

scriverla su un file? Come nel mio codice. Questo non è un codice funzionante ma per illustrare la mia idea di come trovare il minimo tra due ordini adiacenti aperti su una candela al minuto
Grazie per l'aiuto.

double P[60],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick()
{
Tick++;

if (OrdersTotal()==1&&Tick<2189)
{
P[x]=Bid;
Print("------------------------P[x]=Bid------------------------=", DoubleToString(P[x],5), "  x ",  x);
x++;
}
if (OrdersTotal()==2&&Tick==2189)
{
x1=x;
x=0;
ArraySort(P,WHOLE_ARRAY,0,MODE_ASCEND);
T=(60-x1);
Print("------------------------МИНИМУМ=------------------------=",DoubleToString(P[T],5), "  Tick ",  Tick, "  x1 ",  x);
}

if (Tick==2176||Tick==2188)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+300*Point,Ask-100*Point,"300",0);
G2=G;
G=Tick;
}
}

Significa che ho scritto i prezzi di ogni tick direttamente in un array, non in un file.


Conquesto codice, cerco di trovare il prezzo minimo tra due ordini adiacenti aperti su una candela di un minuto con una differenza di 2 puntiusando il minor tempo e altre risorse del computer. Naturalmente, ci saranno molti ordini di questo tipoall'interno di candele di un minuto tra i quali dovremo calcolare il minimo. Questa è solo un'illustrazione della mia idea.

E ora mi interessa la risposta alla domanda Quale sarebbe il vantaggio del mio codice se avessi scritto i tick in un file, come mi hai consigliato?Cosa sarebbe esattamente ottimale nel mio codice?


Su questa domanda è stata fatta luce da Valeriy Yastremskiy Ma mi piacerebbe ascoltare il feedback di qualcuno che mi ha consigliato di mettere le zecche in un file.
Grazie per l'aiuto.

Per non affaticarsi cercando di aiutare, in particolare me, è meglio mettere il messaggio "in tasca" e incollarlo invece di linkarlo.

Ora riguardo a questo problema: l'ordine #1 si è aperto... a questo punto Low è ovviamente inferiore al prezzo aperto dell'ordine. Beh, ammettiamolo...

L'ordine numero 2 è aperto e dobbiamo controllare il prezzo a ........., usando la funzione matematica fmin() scriviamo nuovamente nella variabile il valore prima della chiusura della candela. Una volta che la candela è chiusa, smettiamo di controllare i prezzi, non ne abbiamo più bisogno. Il valore ottenuto sarà il prezzo minimo nell'intervallo di tempo tra l'apertura del secondo ordine e la chiusura della candela. O forse mi sono sbagliato...

Motivazione: