Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1473

 
Alexander Sevastyanov #:

Credo che le possibilità di un rimborso di qualsiasi importo in questo caso siano quasi nulle.
Tutti qui hanno già risposto molto correttamente.

Ma è comunque meglio provare.

Alexander, grazie per il tuo aiuto. Il successo nella programmazione e nel trading. Ti faccio i miei migliori auguri.
 
Valeriy Yastremskiy #:

Prima di fare qualsiasi cosa con il vostro denaro, fate almeno un minimo di controlli.

Allo stesso modo.

Speriamo che non si tratti di credito... Andate sicuramente alla polizia.

Grazie a tutti per i consigli pratici e l'aiuto. I moderatori mi perdonano per aver infranto le regole del forum. Sono un nuovo arrivato e non sapevo che non fosse consentito discutere di broker. Leggerò attentamente le regole e mi impegnerò a non violarle. Grazie ancora a tutti coloro che hanno risposto al mio appello e buona fortuna.
 

Ho provato a fare un analogo del commento, ma le lettere erano più grandi.

In generale, ha funzionato, le lettere sono leggibili ora.

Ma a causa della mia ignoranza in materia di OOP, il mio commento non influisce molto bene sul lavoro del computer,

Qualche tempo dopo aver eseguito l'Expert Advisor con un commento su diversi grafici, succede qualcosa di brutto, fino alla dissolvenza dello schermo e al riavvio del server)))))

Nel terminale registra un sacco di questi record.

MQL5  VirtualAlloc failed in large allocator, size=101104
MemoryException 101142 bytes not available, 0 heapmin result

Aiutate chi sa come fare, in modo che la memoria non si disperda.

Il file di commento del plug-in si presenta così:

#include <Canvas\Canvas.mqh>
void Comm(string txt, color clr = clrYellow, int FontSize = 20, string Font = "Consolas", int flag = FW_BOLD)
  {
   CCanvas canvas;

   int shift = 0;
   if(ChartGetInteger(0, CHART_SHOW_ONE_CLICK))
      shift = 60;
   canvas.Erase(0x00FFFFFF);
   canvas.FontNameSet(Font);
   canvas.FontFlagsSet(flag);
   canvas.FontSizeSet(FontSize);

   int width = 0, height = 0;
   string result[];
   int size = StringSplit(txt, StringGetCharacter("\n", 0), result);
   height = (int)(FontSize * 1.8 * size);

   for(int i = 0; i < size; i++)
     {
      int w = canvas.TextWidth(result[i]);
      if(width < w)
         width = w;
     }

   canvas.CreateBitmapLabel(0, 0, "Comment", 5, 20 + shift, width, height, COLOR_FORMAT_ARGB_NORMALIZE);
   for(int i = 0; i < size; i++)
      canvas.TextOut(0, (int)(FontSize * 0.8 * i), result[i], ColorToARGB(clr, 255));

   canvas.Update(true);
  }

Esempio di utilizzo in questo modo:

#include <Comm.mqh>
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   SymbolInfoTick(_Symbol, tick);
   if(tick.ask != 0 && tick.bid != 0)
      Comm(StringFormat("ask = %.5f\nbid = %.5f\ntime = %s", tick.ask, tick.bid, TimeToString(tick.time, TIME_DATE | TIME_SECONDS)));
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0, "Comment");
   ChartRedraw();
  }
//+------------------------------------------------------------------+


È chiaro che sto facendo qualcosa di sbagliato con la classe CCanvas, ma che cosa esattamente è sbagliato, non capisco.

File:
Comm.mq5  2 kb
Comm.mqh  2 kb
 
Aleksandr Slavskii #:

Ho provato a fare un analogo del commento, ma le lettere erano più grandi.

Ora le lettere sono leggibili.

Ma poiché non conosco l'OOP, il mio commento non influisce molto sul lavoro del computer,

Qualche tempo dopo aver eseguito l'Expert Advisor con un commento su diversi grafici, succede qualcosa di brutto, fino allo schermo in dissolvenza e al riavvio del server))))))

Nel terminale viene registrato un mucchio di questi record.

Aiutare coloro che sanno come fare, in modo che la memoria non perdere.

Il file di commento allegato si presenta così:

Esempio di utilizzo come questo:


È chiaro che sto facendo qualcosa di sbagliato con la classe CCanvas, ma non capisco cosa sia esattamente sbagliato.

Se siete interessati al codice senza la libreria CCanvas, ma con l'oggetto OBJ_BITMAP_LABEL, guardate il mio codice ...

ClosingLots
ClosingLots
  • www.mql5.com
Индикатор информер.
 
Alexey Viktorov #:

Se ti interessa il codice senza la libreria CCanvas ma con l'oggetto OBJ_BITMAP_LABEL guarda il mio codice ...

Grazie, bella soluzione, mi piace.


Ma, "un samurai non ha una meta , solo un percorso ", la soluzione di come fare un commento è meno importante per me che scoprire qual è il mio errore nell'uso della classe.

 
Aleksandr Slavskii #:

Grazie, bella soluzione, mi è piaciuta.


Ma, "un samurai non ha una meta , solo un percorso ", mi interessa meno capire come fare un commento che scoprire qual è stato il mio errore nell'usare la classe.

Quante, in quante BitmapLabel vengono create? (Ctrl+B --> Tutti).

 
Artyom Trishkin #:

Quante e quali quantità di BitmapLabel vengono create? (Ctrl+B --> Tutti).

Su un grafico, un solo oggetto.

E come può essercene più di uno? Il nome di tutti gli oggetti creati è lo stesso: "Commento".


Ho dimenticato di scrivere.

Il problema si presenta su un server molto povero con un solo core e 1gb di memoria. E non subito, ma dopo qualche tempo.

Ma penso che se tutto fosse normale con il codice, non ci sarebbe alcun problema. C'è qualcosa che intasa la RAM, ma non riesco a capire cosa sia.

Perché è importante che io lo sappia?

Si può comprare la capacità del server, si può comprare la memoria, si può fare l'upgrade all'infinito, ma questo non renderà il mio codice corretto.

 
Aleksandr Slavskii #:

Su un grafico, un oggetto.

Come può essercene più di uno? Il nome di tutti gli oggetti creati è lo stesso: "Commento".


Ho dimenticato di scrivere.

Il problema si presenta su un server molto povero con un core e 1gb di memoria. E non immediatamente, ma dopo qualche tempo.

Ma penso che se tutto fosse normale con il codice, non ci sarebbe alcun problema. C'è qualcosa che intasa la RAM, ma non riesco a capire cosa sia.

Perché è importante per me capire ?

Si può acquistare una maggiore capacità del server, si può acquistare più memoria, si può fare un upgrade infinito, ma questo non renderà il mio codice corretto.

Cosa c'è nel log quando un Expert Advisor viene rimosso dal grafico? Di solito indica quali sono gli oggetti che perdono, fornendo così una direzione di ricerca.

 
Artyom Trishkin #:

Cosa c'è nel log quando l'EA viene rimosso dal grafico? Di solito vi dice quali oggetti stanno perdendo, il che vi dà una direzione di ricerca.

Ho cancellato i log. Ma non c'è problema, non ci vorrà molto per rifarlo. Ora avvierò l'Expert Advisor sul server, domattina (forse prima) ci saranno i log.

Ma per quanto mi ricordo, non sono riuscito a trovare in essi un'indicazione del punto in cui la memoria si sta perdendo.

E l'Expert Advisor non viene rimosso dal grafico, molto probabilmente si limita a riavviare il server, dato che nei log non c'è traccia della chiusura del terminale. Ma questo non è certo.

 
Aleksandr Slavskii #:

Ho cancellato i registri. Ma non c'è problema, non ci vorrà molto per rifarlo. Avvio ora l'Expert Advisor sul server, avrò i log in mattinata (forse prima).

Ma per quanto mi ricordo, non sono riuscito a trovare in essi un'indicazione del punto in cui la memoria si sta perdendo.

E l'Expert Advisor non viene rimosso dal grafico, molto probabilmente riavvia solo il server, dato che nei log non c'è traccia di chiusura del terminale. Ma questo non è certo.

Non avete capito il senso della mia domanda. Non è necessario attendere il server quando esaurisce la memoria e scoppia.

Se c'è una perdita di oggetti nel codice, ricompilatelo sul vostro computer locale quando l'Expert Advisor è in esecuzione - un messaggio sul numero e sul tipo di oggetti fuoriusciti dovrebbe essere visualizzato nei log. In alternativa, eseguitelo su un grafico e toglietelo subito: anche in questo caso dovrebbe comparire un messaggio relativo alla perdita di oggetti, se presente.

Motivazione: