Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 47

 
Potete dirmi se la visualizzazione su agenti remoti è, credo, categoricamente impossibile? O è possibile?
 
Dimka-novitsek:
Per favore ditemi, la visualizzazione su agenti remoti, immagino, non è possibile? O è possibile?

Non è possibile perché non è necessario, l'agente remoto è in modalità processo, non ha finestre (tranne la finestra delle impostazioni).

Può essere visto solo attraverso il task manager (ma solo il processo, non quello che sta facendo).

 
Ecco le stampe che ho letto direttamente che non escono... Che peccato. In generale, se non c'è nemmeno un piccolo punto sulla linea grigia del corso di ottimizzazione dopo un periodo di tempo sufficientemente lungo, cosa significa che semplicemente non ci sono risultati positivi? Allora anche le stampe e la visualizzazione sono necessarie! Ma perché non va? I carri armati vanno, e le navi sono in guerra, e la memoria come 4 gig, e super scheda video, 1375 MHz qualcosa del genere, e testarlo completamente non può!!! Almeno lentamente... Il computer va subito in blocco con uno schermo vuoto.
 
Urain:
Non è possibile perché non ne hai bisogno, l'agente remoto è in modalità processo, non ha finestre (a parte la finestra delle impostazioni).Grazie! Capito! Certo!
 
Vladon:
Per l'orologio, mi piacerebbe usare un font non standard, se fosse possibile memorizzarlo direttamente nelle risorse per esempio.
sergeev:
il testo significa non trascinarsi dietro un file ttf separato, ma incorporarlo direttamente in ex5 come risorsa.

Cioè, solo per disegnare in una bitmap/canvas grafica?

I font non saranno sicuramente incorporati, ma potremmo permettere di usare i font standard di Windows per disegnare nel kanvas.

 
Renat:

Intendi esclusivamente per disegnare in una bitmap/canvas grafica?

No, per un disegno efficiente dell'etichetta. La questione è che il terminale sia in grado di prendere un font dalle risorse e impostarlo in modo indipendente.
 
TheXpert:
No, per un disegno efficiente dell'etichetta. Il problema è permettere al terminale di prendere un font dalle risorse e installarlo da solo.
Purtroppo no.
 
Renat:

Quindi, esclusivamente per disegnare in una bitmap/canvas grafica?

Sicuramente non incorporeremo i font, ma possiamo permettervi di usare i normali font di Windows per disegnare nella tela.

Ho capito che aprirete alcuni GDI per Kanvas. È fantastico.

ma c'è un problema, credo, che si trova a livello ideologico nei principi del disegno delle carte.

Lasciatemi spiegare con due esempi.

Per utilizzare la tela in modo più attivo, è necessario un cambio di cornice. Ma nel terminale qualsiasi oggetto non sarà disegnato a meno che non sia nascosto da tutti i timeframe(OBJ_NO_PERIODS). Questo porta al fatto che non posso preparare la posizione e la dimensione dell'oggetto se non è ancora disegnato.

Ho sollevato questo argomento sia per la dimensione del testo statico in uscita che per la dimensione del bmp in uscita - la risposta è stata questa - si disegna con width=-1, e poi si chiede la dimensione all'oggetto stesso e si saprà esattamente. E aggiungere qui una pausa minima e la necessità di chiamare ChartRedraw... Sarete d'accordo che questa è una stampella.

E abbiamo bisogno di rimpolpare non solo una statica o bmp, ma decine di esse. E se c'è molta attività, bisogna fare attenzione alle pause nel rendering.

--------------------

Per quanto riguarda i kanvas onnipresenti come alternativa agli oggetti esistenti- questa è utopia // anche se sarebbe bello in un mondo ideale

Nessuno sano di mente disegnerebbe una bitmap di 10 megabyte e la rallenterebbe solo per una linea diagonale attraverso un grafico di 2096 per 1080 pixel


Sostengo pienamente lo sviluppo di kanvas // Sostengo qualsiasi sviluppo.

Ma gli oggetti esistenti coprono il 95% di tutte le esigenze di business nell'interfaccia. Kanvas è un'appendice di complicate strutture di business // molto ben dimostrato da Kohonen Maps. Ma non vogliono sostituire completamente gli oggetti.

( -5% è lo sforzo degli sviluppatori per evitare di introdurre una linea di coordinate. :) // ma un dialogo è già iniziato, speriamo di arrivare a un accordo)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

2012.10.20 14:21:46 Tester esperto file C:\Users\Micha\AppData\Roaming\MetaQuotes\Terminal\FF783873B20D7FA177754FFD85AFB6\MQL5\Experts\Final.ex5 allocare errore

2012.10.20 14:21:31 Core 2 autorizzato (agent build 695)

2012.10.20 14:21:16 Core 2 in connessione con 127.0.0.1:3001

2012.10.20 14:11:10 Core 1 Dispositivo OpenCL: NVIDIA Corporation GeForce 9600 GSO 1GB GPU con OpenCL 1.0 (12 unità, 1375 MHz, 2048MB, versione 301.42)

Mi scusi, cosa dice questo? Capisco che l'errore. Cosa gli manca? ??

In generale, il test si blocca quasi completamente. Spesso si spegne... Ma quella stessa sera, ci sono giochi molto vivaci e belli, serbatoi-mondo, stalker, ecc. !


 
sergeev:

Ma c'è un problema, mi sembra, posto a livello ideologico nei principi di resa di un grafico.

Per utilizzare kanvas in modo più attivo, è necessario cambiare le cornici. E qualsiasi oggetto nel terminale non è disegnato finché non è nascosto da tutti i timeframe(OBJ_NO_PERIODS). Questo porta al fatto che non posso preparare la posizione dell' oggetto e conoscere la sua dimensione, se non è ancora disegnato.

Conoscete il perfetto accenno di backbuffering nelle nostre tele e il collegamento a un oggetto sullo schermo?

Possiamo disegnare cornici perfettamente, velocemente 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 ad 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 di cambiamento 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 i contatori sono gli stessi, allora l'immagine viene mostrata senza alcuna modifica.

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

Motivazione: