[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 212
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Se vogliamo controllare il numero di barre dopo OGNI incrocio di MA, possiamo calcolare il numero di barre dopo l'ultimo, ma non dopo OGNI.
Dipende da quello che ti serve. Per un EA un algoritmo, per un indicatore - un altro.
In generale, approssimativamente come segue: creiamo una variabile in cui memorizzeremo il numero di incroci. Potete creare due variabili - per su e per giù, per esempio Intersection_UP eIntersection_DN.
Prima del ciclo, li inizializziamo con degli zeri.
Creare un ciclo dalla prima barra a Bars: for (int i=1; i<Bars; i++) { // corpo del ciclo dove contiamo le intersezioni ... }.
Ad ogni intersezione sulla barra i ma1 dal basso verso l'alto ma2 aumenta Intersezione_UP, ad ogni intersezione sulla barra i ma1 dall'alto verso il basso ma2 aumenta Intersezione_DN.
Alla fine del ciclo abbiamo in due variabili il numero di incroci su e giù. Aggiungili per ottenere il numero totale di intersezioni
Buon pomeriggio a tutti.Due MA sono incrociate molte volte sul grafico.è possibile contare il numero di barre dopo OGNI incrocio di MA.dopo l'ultimo funziona, ma dopo OGNI MA no.qualcuno sa come fare?
È semplice. Si fissa l'incrocio e si crea un contatore. Quando c'è un crossover, il contatore aggiunge 1 barra per ogni crossover. Quando c'è un incrocio, un altro contatore inizia a contare.
Non ci capiamo, a quanto pare
In generale, la posizione del problema è definita - la variabile statica.
Ma perché una funzione con questa variabile compilata nello stesso file con l'indicatore funziona senza problemi (la reinizializzazione ha successo e tutto funziona bene), ma quando mi rivolgo alla stessa funzione inserita nella libreria, ho problemi?
Forse ci sono delle restrizioni sull'uso di certi tipi nelle funzioni della libreria?
In generale, la posizione del problema è definita - la variabile statica.
Ma perché la funzione con questa variabile, compilata nello stesso file con l'indicatore funziona senza problemi (la reinizializzazione ha successo e tutto funziona bene), ma quando mi rivolgo alla stessa funzione, inserita nella libreria, ci sono problemi?
Forse ci sono delle restrizioni sull'uso di certi tipi nelle funzioni della libreria?
Non sono uno sviluppatore e posso solo fare delle ipotesi. Quindi, presumo che quando si reinizializza dopo aver cambiato i parametri ex4 non viene scaricato dalla memoria, e quindi ad un nuovo avvio si ottiene la stessa copia della libreria di prima, con tutte le statiche e i loro vecchi valori.
In idea tutte le statiche del programma dovrebbero essere inizializzate prima di chiamare init(). Ma la libreria ex4 viene caricata solo immediatamente al momento della prima chiamata della funzione di libreria, quindi nessuna statica di libreria arriva all'heap comune.
Guardando il tutto in questo modo, la spiegazione è abbastanza logica.
Ecco la funzioneStringGetChar https://docs.mql4.com/ru/objects/ObjectFind
Perché è necessario?
Secondo il libro di testo, restituisce il valore di un carattere come numero. Lì,"c" corrisponde al valore 99. Come posso capirlo? Che utilità ha questa funzione?
Quindi restituisce un numero... ...e cosa fa?
Voglio imparare a lavorare con le stringhe, così mi sono imbattuto in questa funzione. Ecco perché lo chiedo.
Non sono uno sviluppatore e posso solo speculare. Quindi, presumo che durante la reinizializzazione dopo le modifiche dei parametri, ex4 non venga scaricato dalla memoria, quindi al nuovo avvio si ottiene la stessa copia della libreria di prima, con tutte le statiche e i loro vecchi valori.
In idea tutte le statiche del programma dovrebbero essere inizializzate prima di chiamare init(). Ma la libreria ex4 viene caricata solo immediatamente al momento della prima chiamata della funzione di libreria, quindi nessuna statica di libreria arriva all'heap comune.
Guardando il tutto in questo modo, la spiegazione è abbastanza logica.
Ho in testa un array di 3000 valori dello stesso tipo.
Ma non capisco bene come inizializzare un array unidimensionale con questi valori.
Non capisco - devo specificare tutti i 3000 valori separati da virgola nell'operatore di assegnazione quando inizializzo un array
int Mas_i[3000]= { (Bid>1.2153)&&(Bid<1.2160) , (Bid>1.2156)&&(Bid<1.2163) ...devo davvero elencare tutte le 3000 espressioni?}
Per favore datemi un suggerimento, o ditemi dove leggere. Non riesco a trovare una risposta a questa domanda nel tutorial di S.Kovalev..... o non lo capisco.
Grazie.
Ecco la funzioneStringGetChar https://docs.mql4.com/ru/objects/ObjectFind
Perché è necessario?
Secondo il libro di testo, restituisce il valore di un carattere come numero. Lì,"c" corrisponde al valore 99. Come posso capirlo? Che utilità ha questa funzione?
Quindi restituisce un numero... ...e cosa fa?
Voglio imparare a lavorare con le stringhe, così mi sono imbattuto in questa funzione. Ecco perché lo chiedo.
Per scrivere nel grafico (da non confondere con il commento) deve codificare un codice numerico. Se scrivi 99, la lettera "s" apparirà sul grafico. Non l'ho ancora fatto, ma puoi trovare come fare tutto nel Dock, e con quale carattere, dimensione, orientamento degli assi X e Y in pixel, ecc. Se è già tutto quello che vi manca, fate pure, ma ci vorrà molto tempo! Buona fortuna!