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

 
alex_xss:

1) Personalmente, sono d'accordo, e se fosse per me, lo disattiverei semplicemente e vieterei di includerlo nel codice. Ma non si può)

2) Grazie, ma non ho trovato nessuna soluzione (è risolto ovunque tramite l'oggetto OBJ_VLINE, non mi piace), sto scavando la mia strada

Si può fare una griglia su alcuni Canvas che piacciono ad alcune persone. Mettete la tela come sfondo (o fronte) del grafico, disegnateci sopra e seguite la relazione geometria/prezzo/tempo.

È una sofferenza, ma con un po' di gusto e di tempo, può essere bellissimo.

 
Maxim Kuznetsov:

si può fare una griglia su alcuni Canvas preferiti. Disponi la tela come sfondo (o fronte) del grafico, disegnaci sopra e segui le relazioni geometria/prezzo/tempo.

È doloroso, ma con un po' di gusto e di tempo può essere bello.

Puoi scrivere un semplice esempio su kanvas? per favore

Non ne so un accidente, ho solo bisogno di un rettangolo delle dimensioni di un grafico e di una linea verticale su di esso

 
alex_xss:

Puoi scrivere un semplice esempio su kanvas? per favore

Non ne so un accidente, ho solo bisogno di un rettangolo delle dimensioni di un grafico e di una linea verticale su di esso.

Dovresti chiamare @Nikolai Semko che è molto meglio con i kanvas. E mentre è in viaggio - guarda il suo profilo ci sono molte cose sulla tela

 
alex_xss:

Puoi scrivere un semplice esempio su kanvas? per favore

Non ne so un accidente, ho solo bisogno di un rettangolo delle dimensioni di un grafico e di una linea verticale su di esso

Divertente. Un tale inconveniente solo in MT4 e solo con linee verticali.

L'unico mistero è perché interferisce. Non l'avrei notato nella mia vita.

Puoi formulare il problema in modo più dettagliato per capire il modo migliore per risolverlo. L'interazione degli oggetti grafici con la tela ha delle sfumature.
A proposito, uno dei modi possibili per risolverlo è cambiare il manager. ))
Se lui/lei crede che il cambio di colore sia una stampella, tanto più che il kanvas sarà una stampella per lui/lei.
Anche se ammetto che il tuo manager è un personaggio di fantasia o un'allegoria. ))

 

alex_xss
:

Puoi scrivere un semplice esempio su kanvas? per favore

Non ne so un accidente, vorrei solo un rettangolo delle dimensioni di un grafico e una linea verticale su di esso.


Non è ottimale in termini di prestazioni (il ridisegno avviene più spesso di quanto dovrebbe - solo pigro per complicare il codice), ma funziona.

Potete implementare una tela per la dimensione dello schermo (non la finestra, per esempio 1920x1080) e non ridisegnarla affatto. Ci vorranno solo 8 Mbyte di memoria.
A proposito, cambiare il colore della griglia non aiuta.

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/en/code/23840

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_CHART_CHANGE) DrawGrid();
  }
//+------------------------------------------------------------------+
void DrawGrid() {
  Canvas.Erase(0);
  if (ChartGetInteger(0,CHART_SHOW_GRID)) {
      Canvas.SetBack(false);
      ChartSetInteger(0,CHART_FOREGROUND,0,true);
      uint clr = ColorToARGB((color)ChartGetInteger(0,CHART_COLOR_GRID),255);
      for (int y=0;y<W.Height;y++)
      if (y%6<2 || y%6>4) {
         for (int x=32;x<W.Width;x+=32)
         Canvas.m_pixels[y*W.Width+x]=clr;
      } 
  }
  Canvas.Update();
}
File:
 
Qualcuno ha una funzione per ordinare un array (stringa) in ordine alfabetico?
 
Aleksey Vyazmikin:
Forse qualcuno ha una funzione per ordinare un array (stringa) in ordine alfabetico?

Ho uno di questi, una volta la sciabola ha scritto

//===============================================================================================
//--------------------------------- Сортирует строковой массив ---------------------------------+
//===============================================================================================
void ArraySortStr(string &Str[]) {
 string Min;
 int jMin, Size = ArraySize(Str);
  for(int i=0; i<Size-1;i++) {
   Min = Str[i];
   jMin = i;
    for(int j=i+1; j<Size; j++)
     if(Str[j] < Min) {
       Min = Str[j];
       jMin = j;
      }
     if(jMin > i) {
       Str[jMin] = Str[i];
       Str[i] = Min;
     }
   }
 }
 
Vitaly Muzichenko:

Ho uno di questi, una volta una sciabola ha scritto

Grazie.

 
Maxim Kuznetsov:

Dovremmo chiamare linee verticali.

È un mistero perché mi impedisce di usarlo. Non l'avrei mai notato.

Puoi formulare il problema in modo più dettagliato per capire il modo migliore per risolverlo. L'interazione degli oggetti grafici con la tela ha delle sfumature.
A proposito, uno dei modi possibili per risolverlo è cambiare il manager. ))
Se lui/lei crede che il cambio di colore sia una stampella, tanto più che il kanvas sarà una stampella per lui/lei.
Anche se ammetto che il tuo manager è un personaggio di fantasia o un'allegoria. ))

Sì, una bella trovata su cui ho passato quasi una settimana) Il mio culo è in fiamme)

Beh, perché dovrebbe essere un ostacolo. C'è un indicatore che usa i triangoli per disegnare. Tutto è venuto bene, i colori sono stati ripresi, e ora avete notato un tale insetto.
L'indicatore non è per uso personale e non ha senso rilasciarlo con questo bug. Devo cambiare l'intero disegno, il che è piuttosto complicato perché sono un principiante, o risolvere il bug.

Cambiare la griglia dei colori non aiuta, come avete notato, ci sono arrivato anch'io) Inizialmente, alcune combinazioni di colori sembravano aiutare

Cambiare il colore della griglia (se servisse) è una stampella inaccettabile, dato che l'utente può avere un'influenza su di essa, nel caso in cui voglia cambiare il colore.
Anche l'opzione per disabilitare questa funzione per l'utente non è adatta, penso sia chiaro il perché)))

Il compito: fare in modo che un utente veda la griglia, se è abilitata, sempre dello stesso colore. Tenendo conto dei bug di MT4 con griglia verticale + oggetto riempito. Non so cos'altro aggiungere)

Fondamentalmente il varic che hai scritto sopra va bene. Posso lucidarlo. Sei un uomo d'oro!!! Non ci sono semplicemente parole per esprimere la mia gratitudine. Ti darò cinque dollari per il tuo aiuto.

Solo un paio di piccole domande:
Quanto lag avrò su PC deboli? So che è una domanda astratta, ma sarei felice di sentirla.
"Mangerà solo 8 MB di memoria" - immagino che tu non stia parlando di RAM?)) Se è così, 8MB non è niente come
iCanvas è un must, uno normale non va bene? È solo un altro utente che dice "questo file qui, questo file lì". Sono così stupidi che non sapranno dove metterlo).

 
Buon giorno

Si prega di consigliare - rispondere alla domanda

C'è un indicatore Bulls.mq4 in Metatrader.
Perché ha bisogno di un buffer aggiuntivo, e perché non si può semplicemente usare una variabile intermedia
dd = iMA(NULL,0,InpBullsPeriod,0,MODE_EMA,PRICE_CLOSE,i);
ExtBullsBuffer[i]=dd;

La questione è che ExtBullsBuffer[i] viene usato solo per memorizzare il valore calcolato del risultato della funzione iMA e nella riga successiva questo valore viene assegnato all'elemento buffer indicatore. ExtBullsBuffer non è usato da nessun'altra parte. Perché questo buffer intermedio ExtBullsBuffer è necessario qui e non solo una variabile, come è segnato in verde nella figura
***