Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 317

 
artmedia70:
//+------------------------------------------------------------------+
//|                                                    trendyxV1.mq5 |
//+------------------------------------------------------------------+
#include <Canvas\Canvas.mqh>
CCanvas LomLine;
int KoorX[4]={100,200,350,480};
int KoorY[4]={100,150,380,150};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   LomLine.Destroy();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   LomLine.CreateBitmapLabel("trendyx",0,0,800,800,COLOR_FORMAT_ARGB_RAW);
   LomLine.PolylineAA(KoorX,KoorY,ColorToARGB(clrRed, 155),STYLE_SOLID);
   LomLine.Update();

  }
//+------------------------------------------------------------------+

,.

 
pako:

,.

 
EA ha smesso di aprire posizioni perché "numero intero non valido come parametro 9 per la funzione 'OrderSend'". Qualcuno può spiegare cos'è questo? Presumibilmente era dovuto a un aggiornamento del terminale MT4.
 
Katerina:
EA ha smesso di aprire posizioni perché "numero intero non valido come parametro 9 per la funzione 'OrderSend'". Qualcuno può spiegare cos'è questo? Presumibilmente è a causa dell'aggiornamento del terminale MT4.
Allega il codice dove viene chiamata la funzione"OrderSend". Presumibilmente il numero magico non è impostato correttamente.
 
Ah, bene, l'ho già sistemato. Grazie per il vostro feedback.
 
Mi chiedo se è possibile aggiungere un'animazione al grafico in MQl5, come un ragazzo che sta battendo sulle candele, sul segnale dell'indicatore o solo perché
 
aleks557:
Mi chiedo se è possibile aggiungere un'animazione al grafico in MQl5, come un ragazzo che sta battendo sulla candela, sul segnale dell'indicatore o proprio così
L'animazione dovrà essere creata manualmente da molte immagini .bmp alternate. Di solito sono disegnati su un kanvas da una serie di punti.
 
barabashkakvn:
L'animazione dovrà essere creata manualmente da molte immagini .bmp successive. O disegnare da una serie di punti su tela.

Saluti, nanetto, dov'è "KANVAS"? So che l' animazione è fatta in Photoshop, ma "KANVAS" non è stato, come faccio a comprare un biglietto lì?

Perché Google mi ha portato a una specie di latticino.

 
aleks557:

Saluti, nanetto, dov'è "KANVAS"? So che l'animazione è fatta in Photoshop, ma "KANVAS" non è stato, come faccio a comprare un biglietto lì?

Non lo so, ma l'ho cercato su Google e ho trovato un caseificio.

CCanvas èuna classe per creare grafica personalizzata.

Esempi di utilizzo, il percorso da MetaEditor: ...\MQL5\Scripts\Examples\Canvas\

 
aleks557:
Mi chiedo se è possibile aggiungere un'animazione in MQl5 a un grafico?

Qui c'è di più:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Domande dai neofiti

Renat, 2012.10.20 14:30

Sapevate del perfetto accenno di backbuffering nei nostri kanvase e del collegamento a un oggetto sullo schermo?

Possiamo disegnare cornici perfettamente, rapidamente e senza artefatti. Date un'occhiata all'esempio video basato sulla generazione di sequenze di fotogrammi in OpenCL Test.

Usa una bella tattica:

  1. Creare un oggetto grafico Bitmap Label sul grafico

       string objname ="OpenCL_"+IntegerToString(ChartID());
       string resname ="::Mandelbrot_"+IntegerToString(ChartID());
    //--- creating the object for graphics display
       ObjectCreate(0,objname,OBJ_BITMAP_LABEL,0,0,0);
       ObjectSetInteger(0,objname,OBJPROP_XDISTANCE,4);
       ObjectSetInteger(0,objname,OBJPROP_YDISTANCE,26);
    

  2. Crea una risorsa grafica vuota in memoria e la lega a un oggetto creato in precedenza:

    //--- create initial empty picture
       uint buf[];
    
       ArrayResize(buf,SIZE_X*SIZE_Y);
       ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
       ObjectSetString(0,objname,OBJPROP_BMPFILE,resname);
    
    È qui che avviene la magia. L'oggetto grafico riceve un collegamento diretto alla risorsa grafica. E questo binding è intelligente con il caching, poiché è stato specificamente creato per una rapida gestione del paging e del backbuffer.

  3. Ora puoi facilmente disegnare nel tuo buffer senza preoccuparti di legarti a un oggetto sullo schermo

    //--- рисуем что хотим в buf
    ....
    
  4. E ora è il momento di visualizzare questa bitmap aggiornata sullo schermo

          //--- saving the frame in memory and drawing it
          ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
          ChartRedraw();
    
    Per fare questo, "ricostruiamo" la risorsa (in realtà non avviene alcuna ricostruzione, perché tutte le dimensioni sono le stesse), copiamo la nuova bitmap su di essa, e i contatori di cambiamento di questa risorsa vengono incrementati.

    Si noti che l'oggetto grafico stesso objname non viene toccato in alcun modo, poiché è già associato alla risorsa.

    Poi chiamiamo Screen Redraw tramite ChartRedraw che richiede il disegno dell'oggetto grafico. È legato alla nostra risorsa che controlla usando il contatore di alterazione della bitmap. Se il contatore delle modifiche della bitmap salvata nell'oggetto grafico non coincide con il contatore della risorsa, la bitmap sarà automaticamente copiata nell'oggetto grafico e visualizzata in modo protetto. Se invece i contatori corrispondono, l'immagine viene resa senza modifiche.

Questo è un metodo semplice di lavoro sicuro (dall'accesso simultaneo da MQL5 e dal sistema di rendering del terminale stesso) e veloce con i frame di rendering.

Dovete provarlo.