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

 
Ciao a tutti, la domanda è questa:
Sto facendo un netmaker con martin, ma non uno alla volta, ma uno generale (tutti gli ordini e le griglie aperte come segnali, non uno alla volta)! Mi sono imbattuto in un problema .... quando un ordine o la sua griglia si attiva, tutto funziona bene, ma quando un ordine o la sua griglia si apre e poi allo stesso tempo (o dopo) un altro ordine e la sua griglia si apre, il martin inizia a continuare la prima griglia! Quale potrebbe essere il problema?
 
Artyom Trishkin:

Ok. Ma posso guardarlo solo nel mio tempo libero - lavoro, casa, famiglia, gatto e figli/nipoti... Suocera, sì...

Sì, i gatti...

Oggi sono andato da qualche parte a fare una lettiera.

Una bella bambina scozzese a cui piace dormire sulla schiena :)

 
Artyom Trishkin:

Beh, guardate il codice - Vitaly l'ha postato direttamente

La mia domanda non ha niente a che fare con il codice di Vitaly. Ora l'ho capito da solo... si scopre che il codice della libreria controlla la profondità di ricalcolo stessa. Cioè, la prima corsa ricalcola l'intero buffer, e su quelle successive solo la giusta quantità... Questo è quello che volevo sentire da te. Sono così pigro. È più facile chiedere che capire da solo... Ma a volte devo............

 
Alexey Viktorov:

La mia domanda non ha niente a che fare con il codice di Vitaly. Ora l'ho capito da solo... si scopre che il codice della libreria controlla la profondità di ricalcolo stessa. Cioè, la prima corsa ricalcola l'intero buffer, e su quelle successive solo la giusta quantità... Questo è quello che volevo sentire da te. Sono così pigro. È più facile chiedere che capire da solo... Ma a volte devo............

Quindi, il codice di Vitali ha duplicato questa funzione di SB, che hai chiesto - e tutto è proprio lì in bella vista - basta uno sguardo per capire la risposta alla tua domanda.

 
Artyom Trishkin:

Quindi il codice di Vitaly ha duplicato questa funzione dalla SB che hai chiesto - e tutto è proprio lì in bella vista - basta un'occhiata per capire la risposta alla tua domanda.

Avete visto la piccolezza nell'originale?

 
Vitaly Muzichenko:

Hai visto quanto è duro l'originale?

Non l'ho proprio paragonato. A mio parere, c'è minuzia in entrambi i file. E la logica non è affatto chiara - quando la condizione è vuota e riempire il buffer con un valore vuoto è tolto dalle parentesi della condizione. Beh, il mio compito è quello di arrivare ad una A. Non mi interessa come funziona - lasciamolo così com'è.

 
Artyom Trishkin:

Non ho fatto molti confronti. Penso che sia un casino in entrambi i file. E la logica non è affatto chiara - quando la condizione è vuota e riempire il buffer con un valore vuoto è tolto dalle parentesi della condizione. Beh, il mio compito è quello di arrivare ad una A. Lo lascerò così com'è.

Il mio compito è capire in questo codice come sostituireiMAOnArray

Cioè, fare meno modifiche possibili al codice esistente e fare
 
Artyom Trishkin:

Così nel codice di Vitaly questa funzione è stata duplicata da SB che stavi chiedendo - e tutto è proprio lì in bella vista - basta uno sguardo per capire la risposta alla tua domanda.

Beh, l'hai afferrato... Non so come si fa. Devo esaminare a fondo tutto il codice con comprensione.

 
Vitaly Muzichenko:

Il mio compito è capire come sostituireiMAOnArray in questo codice.

Cioè, fare meno modifiche possibili al codice esistente e usarlo per

Cercando di capire questa domanda, vedo la seguente situazione.

Nel tuo codice c'è scritto questo

buf_3[i] = iMAOnArray(Array_1, 0, per, 0, MODE_SMMA, i);

e nella documentazione

double  iMAOnArray( 
   double       array[],          // массив 
   int          total,            // количество элементов 
   int          ma_period,        // период 
   int          ma_shift,         // сдвиг средней 
   int          ma_method,        // метод усреднения 
   int          shift             // сдвиг 
   );
iMAOnArray

totale

[in] Numero di elementi da calcolare. 0 significa tutti gli elementi dell'array.

Si scopre che ogni volta che la funzione viene chiamata, l'intero array viene ricalcolato. Questo è esattamente quello che ho chiesto ad Artem... Ma si scopre che mql5 fornisce tutto per l'accelerazione, mentre in mql4 devi occupartene tu. Ma non vedo nessuna informazione su come farlo correttamente.


Per quanto riguarda il rifarlo con cambiamenti minimi, ti sbagli. È più facile prendere l'algoritmo e rifarlo.

 

Buon pomeriggio, per favore aiutatemi a capire...

   HighForFutureSession=MathMax(high[rates_total-1],high[rates_total-2]);

MathMax restituisce il massimo di due valori numerici, cioè restituisce il massimo valore numerico da due array identici high[rates_total] con una differenza di -1 e -2 barre?

In parole semplici: nel primo array 12345 e nel secondo 1234 la funzione restituirà 5?

Motivazione: