Questa variante della funzione non ha alcuna funzione New_bar();
Questa è l'opzione con il maggior risparmio di risorse che ho fornito. Inoltre, ha un altro vantaggio: il nuovo evento barra viene salvato tutte le volte che il codice utente viene eseguito su un evento timer o tick.
In precedenza, si poteva ottenere questo evento solo una volta e il flag veniva cancellato con New_bar(). La funzione speciale ora cancella l'array "event_new_bar[][]" una volta al minuto e viene chiamata solo dopo l'esecuzione del codice personalizzato.
Le funzioni personalizzate possono accedere direttamente all'array e recuperare nuove informazioni sull'evento barra tutte le volte che il codice viene eseguito su un evento timer o tick.
Questo risparmia ancora più risorse.
Anche l'ultimo codice non funziona, ci sono voluti 7 minuti perché la stampa arrivasse
//+------------------------------------------------------------------+//Пример использования событий нового бара в пользовательском функционал.//Просто обращаемся к глобальному массиву "События_нового_бара[a1][a2]" напрямую//и используем событие в наших торговых алгоритмах.//+------------------------------------------------------------------+void Моя_стратегия_торговли_на_новых_барах()
{
for(int a1 = 0; a1 < Всех_символов; a1++)
{
string Этот_символ = Символы[a1];
//----------------------------------for(int a2 = 0; a2 < Всех_таймфреймов; a2++)
{
bool Новый_бар = События_нового_бара[a1][a2];
int Этот_таймфрейм = Таймфреймы[a2];
//----------------------------------if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M5)
{
Print("M5");
}
//---------------------------------- if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M1)
{
Print("M1");
}
//----------------------------------
}
}
}
Anche l'ultimo codice non funziona, ci sono voluti 7 minuti perché la stampa arrivasse.
Questa funzione dovrebbe essere chiamata da OnTick o da un timer.
Potrebbe esserci un piccolo problema, ma non sono ancora riuscito a individuarlo. Date un'occhiata voi stessi al codice e cercate un errore. È semplice come 3 copechi. E anche con i commenti.
Se non lo capite, chiedete. Ho altre cose da fare.
Questa variante della funzione non ha alcuna funzione New_bar();
Questa è l'opzione con il maggior risparmio di risorse che ho fornito. Inoltre, ha un altro vantaggio: il nuovo evento barra viene salvato tutte le volte che il codice utente viene eseguito su un evento timer o tick.
In precedenza, si poteva ottenere questo evento solo una volta e il flag veniva cancellato con New_bar(). La funzione speciale ora cancella l'array "event_new_bar[][]" una volta al minuto e viene chiamata solo dopo l'esecuzione del codice personalizzato.
Le funzioni personalizzate possono accedere direttamente all'array e recuperare nuove informazioni sull'evento barra tutte le volte che il codice viene eseguito su un evento timer o tick.
Le risorse vengono risparmiate ancora di più.
Non capisco l'umorismo. Perché - il debugger non capisce il russo? O sono solo io ad avere questo difetto? Vede le variabili in latino, ma non in cirillico.
Chiunque sia interessato può cercare un bug nel codice.
Il succo del codice:
1. Dichiarare gli array globali:
array unidimensionale per i nomi dei simboli "Symbols[]"
array unidimensionale per timeframes "Timeframes[]"
Un array bidimensionale dove scriviamo il numero attuale di barre "Number_bars[][]".
array bidimensionale "New Bar Events[][]" dove scriveremo le bandiere del nuovo evento barra di ogni simbolo e di ogni timeframe. Quelli che sono negli array "Symbols[]" e "Timeframes[]". Questa matrice sarà riempita nel ciclo dai simboli e dagli intervalli di tempo sull'evento del timer, una volta al minuto. Dopo di che sarà cancellato. Nell'intervallo tra il riempimento e la cancellazione questo array sarà chiamato dalla funzionalità utente e informato delle nuove barre.
2. All'inizializzazione, impostate la dimensione dell'array di simboli e scriveteci i nomi dei simboli dalla revisione del mercato.
3. Imposta la dimensione della prima dimensione dell'array "Number_bars[][]" che equivale al numero di simboli, e la seconda dimensione equivale al numero di timeframes. Questo array è come una tabella. Registrerà il numero attuale di barre di ogni simbolo e di ogni timeframe. Il numero è restituito dalla funzione iBars.
4. Imposta la dimensione della prima dimensione dell'array "Events_new_bar[][]", che è uguale al numero di simboli, e la seconda dimensione è uguale al numero di timeframes. Questo array è come una tabella. Registrerà le bandiere degli eventi delle nuove barre di ogni simbolo su ogni timeframe.
5. All'interno del timer, contiamo alla rovescia il minuto e facciamo un doppio ciclo (annidato) sui simboli (che sono nell'array Symbols[]) e sui timeframe (che sono nell'array Timframes[]). Chiamiamo la funzione iBars e otteniamo il numero corrente di barre di ogni simbolo e ogni timeframe dagli array Symbols e Timeframe. Per prima cosa, confrontiamo il numero attuale di barre con il numero già memorizzato nell'array. Se questi valori non sono uguali, impostiamo il flag del nuovo evento barra nell'array "Event_new_bar[][]". Scriviamo quindi il numero attuale di barre al posto di quello precedente.
L'array globale "events_new_bar[][]" è disponibile in qualsiasi punto del programma e viene riempito automaticamente ogni minuto, e anche cancellato automaticamente. Durante il periodo in cui l'array viene riempito, la funzionalità utente riceve dati freschi sulle nuove barre. L'array viene quindi cancellato automaticamente.
Questa funzione dovrebbe essere chiamata da OnTick o da un timer.
Potrebbe esserci qualche piccolo problema, ma non sono ancora riuscito a localizzarlo. Date un'occhiata voi stessi al codice e cercate un errore. È semplice come 3 copechi. E con i commenti in testa.
Se non lo capite, chiedete pure. Ho altre cose da fare.
Non capisco l'umorismo. Cosa - il debugger non capisce il russo? O sono solo io ad avere questo difetto? Vede le variabili in latino, ma non in cirillico.
Peter, allora come usi il debugger, o non lo usi?
Nikolai, per mia vergogna non ho idea di come usare il debugger. Non l'ho mai usato. ((
Questa funzione dovrebbe essere chiamata da OnTick o da un timer.
Potrebbe esserci qualche piccolo problema, ma non sono ancora riuscito a localizzarlo. Date un'occhiata voi stessi al codice e cercate un errore. È semplice come 3 copechi. E anche con i commenti.
Se non capite, chiedete pure. Ho altre cose da fare.
È così complesso e contorto che non si riesce a capirlo.
Mi dispiace, ma è anche completamente illeggibile.
Questa variante della funzione non ha alcuna funzione New_bar();
Questa è l'opzione con il maggior risparmio di risorse che ho fornito. Inoltre, ha un altro vantaggio: il nuovo evento barra viene salvato tutte le volte che il codice utente viene eseguito su un evento timer o tick.
In precedenza, si poteva ottenere questo evento solo una volta e il flag veniva cancellato con New_bar(). La funzione speciale ora cancella l'array "event_new_bar[][]" una volta al minuto e viene chiamata solo dopo l'esecuzione del codice personalizzato.
Le funzioni personalizzate possono accedere direttamente all'array e recuperare nuove informazioni sull'evento barra tutte le volte che il codice viene eseguito su un evento timer o tick.
Questo risparmia ancora più risorse.
Anche l'ultimo codice non funziona, ci sono voluti 7 minuti perché la stampa arrivasse
Anche l'ultimo codice non funziona, ci sono voluti 7 minuti perché la stampa arrivasse.
Questa funzione dovrebbe essere chiamata da OnTick o da un timer.
Potrebbe esserci un piccolo problema, ma non sono ancora riuscito a individuarlo. Date un'occhiata voi stessi al codice e cercate un errore. È semplice come 3 copechi. E anche con i commenti.
Se non lo capite, chiedete. Ho altre cose da fare.
Questa variante della funzione non ha alcuna funzione New_bar();
Questa è l'opzione con il maggior risparmio di risorse che ho fornito. Inoltre, ha un altro vantaggio: il nuovo evento barra viene salvato tutte le volte che il codice utente viene eseguito su un evento timer o tick.
In precedenza, si poteva ottenere questo evento solo una volta e il flag veniva cancellato con New_bar(). La funzione speciale ora cancella l'array "event_new_bar[][]" una volta al minuto e viene chiamata solo dopo l'esecuzione del codice personalizzato.
Le funzioni personalizzate possono accedere direttamente all'array e recuperare nuove informazioni sull'evento barra tutte le volte che il codice viene eseguito su un evento timer o tick.
Le risorse vengono risparmiate ancora di più.
Non capisco l'umorismo. Perché - il debugger non capisce il russo? O sono solo io ad avere questo difetto? Vede le variabili in latino, ma non in cirillico.
Peter, allora come usi il debugger, o non lo usi?

Chiunque sia interessato può cercare un bug nel codice.
Il succo del codice:
1. Dichiarare gli array globali:
2. All'inizializzazione, impostate la dimensione dell'array di simboli e scriveteci i nomi dei simboli dalla revisione del mercato.
3. Imposta la dimensione della prima dimensione dell'array "Number_bars[][]" che equivale al numero di simboli, e la seconda dimensione equivale al numero di timeframes. Questo array è come una tabella. Registrerà il numero attuale di barre di ogni simbolo e di ogni timeframe. Il numero è restituito dalla funzione iBars.
4. Imposta la dimensione della prima dimensione dell'array "Events_new_bar[][]", che è uguale al numero di simboli, e la seconda dimensione è uguale al numero di timeframes. Questo array è come una tabella. Registrerà le bandiere degli eventi delle nuove barre di ogni simbolo su ogni timeframe.
5. All'interno del timer, contiamo alla rovescia il minuto e facciamo un doppio ciclo (annidato) sui simboli (che sono nell'array Symbols[]) e sui timeframe (che sono nell'array Timframes[]). Chiamiamo la funzione iBars e otteniamo il numero corrente di barre di ogni simbolo e ogni timeframe dagli array Symbols e Timeframe. Per prima cosa, confrontiamo il numero attuale di barre con il numero già memorizzato nell'array. Se questi valori non sono uguali, impostiamo il flag del nuovo evento barra nell'array "Event_new_bar[][]". Scriviamo quindi il numero attuale di barre al posto di quello precedente.
L'array globale "events_new_bar[][]" è disponibile in qualsiasi punto del programma e viene riempito automaticamente ogni minuto, e anche cancellato automaticamente. Durante il periodo in cui l'array viene riempito, la funzionalità utente riceve dati freschi sulle nuove barre. L'array viene quindi cancellato automaticamente.
Questo è tutto.
Questa funzione dovrebbe essere chiamata da OnTick o da un timer.
Potrebbe esserci qualche piccolo problema, ma non sono ancora riuscito a localizzarlo. Date un'occhiata voi stessi al codice e cercate un errore. È semplice come 3 copechi. E con i commenti in testa.
Se non lo capite, chiedete pure. Ho altre cose da fare.
risposta professionale
Non capisco l'umorismo. Cosa - il debugger non capisce il russo? O sono solo io ad avere questo difetto? Vede le variabili in latino, ma non in cirillico.
Peter, allora come usi il debugger, o non lo usi?
risposta professionale
Questa funzione dovrebbe essere chiamata da OnTick o da un timer.
Potrebbe esserci qualche piccolo problema, ma non sono ancora riuscito a localizzarlo. Date un'occhiata voi stessi al codice e cercate un errore. È semplice come 3 copechi. E anche con i commenti.
Se non capite, chiedete pure. Ho altre cose da fare.
È così complesso e contorto che non si riesce a capirlo.
Mi dispiace, ma è anche completamente illeggibile.
È così complicato e contorto che è un casino.
Mi dispiace, ma è anche completamente illeggibile.
Sapete cosa si dice di "non si può... non torturare..."? Penso che sia una buona.
Conoscete il detto "non si può... non torturare..."? Penso che sia una buona.
Esatto, è così che hai portato avanti il compito in modo definitivo, bene, o non ho capito bene la tua soluzione.