Per favore, consigliatemi come farlo correttamente.
C'è una collezione globale di oggetti:
CArrayObj array;
C'è una classe aggiuntiva dove vengono fatti molti calcoli e questo include la creazione di oggetti e la loro aggiunta alla collezione:
class CCheck : public CArrayObj
{
}
bool CCheck::SomeMethod(void)
{
CSample *sample_object=new CSample();
array.Add(sample_object);
}
Questo oggetto supplementare della classe CCheck lo creo regolarmente in un ciclo. Ma non posso distruggerlo, perché ho bisogno di oggetti CSample nella collezione di array. Se distruggo CCheck, perdo anche i sample_objects nell'array.
Ora spingo questi oggetti CCheck in un altro array di oggetti garbage, che cancello quando non ho più bisogno degli oggetti corrispondenti nell'array. Ma ottengo un errore di esaurimento della memoria perché devo tenere molti oggetti CCheck pesanti nell'array. Ma non ho bisogno dell'intero oggetto, ho solo bisogno dell'oggetto CSample creato. Potresti per favore dirmi come farlo correttamente, così posso salvare solo l'oggetto CSample e cancellare quello CCheck. Non riesco a capirlo.
La soluzione è stata su un forum da qualche parte, ma non riesco a trovare la risposta.
Che ha trovato un "antidoto" contro questo:
Il codice è standard:
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create application dialogif(!ExtDialog.Create(0,"For Example ",0,40,40,760,400))
//return(INIT_FAILED);return(false); // исключительно для того, чтобы продемонстрировать наложение "панелей"//---//--- run application
ExtDialog.Run();
//--- succeed//-----return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy dialog
ExtDialog.Destroy(reason);
//---
}
//+------------------------------------------------------------------+//| Expert chart event function |//+------------------------------------------------------------------+voidOnChartEvent(constint id, // event ID constlong& lparam, // event parameter of the long typeconstdouble& dparam, // event parameter of the double typeconststring& sparam) // event parameter of the string type
{
ExtDialog.ChartEvent(id,lparam,dparam,sparam);
ChartRedraw();
}
L'essenza: Expert Advisor si blocca quando si passa da un timeframe all'altro. In mt5 non c'è questo problema.
C'è una soluzione? Oppure è meglio dimenticare i pannelli in mt4 :)
Non capisco cosa bisogna fare per risolvere il problema:
4030 è "il grafico non risponde".
Ieri ha funzionato :( L'unica differenza è che MT5 viene ottimizzato in parallelo (usa anche il timer), ma ci sono risorse libere. Il grafico con questo Expert Advisor è assolutamente "pulito", non c'è niente attaccato.
L'unica differenza è che MT5 è ottimizzato in parallelo (usa anche il timer), ma ci sono risorse libere. Il grafico con questo Expert Advisor è "pulito", niente è attaccato ad esso.
Ho fermato l'ottimizzazione in 5 e funziona. Non dovrebbe esserci una connessione?
secret: La mia domanda su Unicode era qui. Perché è stato cancellato?
Lasciate che vi dia un po' di background:
Un po' meno espressione nelle domande e non verranno cancellate. È semplice: fare una domanda non significa scaricare la propria negatività sugli altri. Sei in una comunità. Rispettate il luogo dove fate le vostre domande e vi aspettate di ottenere una risposta, non la reazione di un moderatore.
Salve.
Per favore, consigliatemi come farlo correttamente.
C'è una collezione globale di oggetti:
C'è una classe aggiuntiva dove vengono fatti molti calcoli e questo include la creazione di oggetti e la loro aggiunta alla collezione:
class CCheck : public CArrayObj { } bool CCheck::SomeMethod(void) { CSample *sample_object=new CSample(); array.Add(sample_object); }Questo oggetto supplementare della classe CCheck lo creo regolarmente in un ciclo. Ma non posso distruggerlo, perché ho bisogno di oggetti CSample nella collezione di array. Se distruggo CCheck, perdo anche i sample_objects nell'array.
Ora spingo questi oggetti CCheck in un altro array di oggetti garbage, che cancello quando non ho più bisogno degli oggetti corrispondenti nell'array. Ma ottengo un errore di esaurimento della memoria perché devo tenere molti oggetti CCheck pesanti nell'array. Ma non ho bisogno dell'intero oggetto, ho solo bisogno dell'oggetto CSample creato. Potresti per favore dirmi come farlo correttamente, così posso salvare solo l'oggetto CSample e cancellare quello CCheck. Non riesco a capirlo.
Il codice è così:
La soluzione è stata su un forum da qualche parte, ma non riesco a trovare la risposta.

Che ha trovato un "antidoto" contro questo:
Il codice è standard:
L'essenza: Expert Advisor si blocca quando si passa da un timeframe all'altro. In mt5 non c'è questo problema.
C'è una soluzione? Oppure è meglio dimenticare i pannelli in mt4 :)
La soluzione era già da qualche parte sul forum, ma non riesco a trovare la risposta.
Chi ha trovato "l'antidoto" contro questo:
Il codice è standard:
L'essenza: Expert Advisor si blocca quando passo da un timeframe all'altro. In mt5 non c'è questo problema.
C'è una soluzione? Oppure è meglio dimenticare i pannelli in mt4 :)
Forse qualcuno potrebbe usarlo. In sostanza, c'era un Expert, l'ho salvato come Indicatore, tutto funziona. Intendo il codice del pannello.
Buon pomeriggio!
Pensavo fosse possibile stampare semplicemente un array, ma non ricordo e non riesco a trovare come farlo. Come?
Buon pomeriggio!
Pensavo fosse possibile stampare semplicemente un array, ma non ricordo e non riesco a trovare come farlo. Come?
ArrayPrint
Ah, era in MQL5, grazie chiaramente!
Non capisco cosa bisogna fare per risolvere il problema:
4030 è "il grafico non risponde".
Ieri ha funzionato :( L'unica differenza è che MT5 viene ottimizzato in parallelo (usa anche il timer), ma ci sono risorse libere. Il grafico con questo Expert Advisor è assolutamente "pulito", non c'è niente attaccato.
L'unica differenza è che MT5 è ottimizzato in parallelo (usa anche il timer), ma ci sono risorse libere. Il grafico con questo Expert Advisor è "pulito", niente è attaccato ad esso.
Ho fermato l'ottimizzazione in 5 e funziona. Non dovrebbe esserci una connessione?
La mia domanda su Unicode era qui. Perché è stato cancellato?
Lasciate che vi dia un po' di background:
Un po' meno espressione nelle domande e non verranno cancellate. È semplice: fare una domanda non significa scaricare la propria negatività sugli altri. Sei in una comunità.
Rispettate il luogo dove fate le vostre domande e vi aspettate di ottenere una risposta, non la reazione di un moderatore.