MetaTrader 4 Build 529 beta rilasciato con un nuovo compilatore - pagina 98

 
evillive:
Quali orrori sono scritti qui, mi asterrò dall'aggiornare oltre il 553 per il momento...

Ho iniziato ad avere problemi con l'output degli oggetti grafici. A un certo punto del codice, una funzione

//+----------------------------------------------------------------------------+
void SetTLine(color cl, int wnd, string nm="",
              datetime t1=0, double p1=0, datetime t2=0, double p2=0,
              bool ry=False, int st=0, int wd=1) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, wnd, 0,0, 0,0);
   ObjectSet(nm, OBJPROP_TIME1 , t1);
   ObjectSet(nm, OBJPROP_PRICE1, p1);
   ObjectSet(nm, OBJPROP_TIME2 , t2);
   ObjectSet(nm, OBJPROP_PRICE2, p2);
   ObjectSet(nm, OBJPROP_COLOR , cl);
   ObjectSet(nm, OBJPROP_RAY   , ry);
   ObjectSet(nm, OBJPROP_STYLE , st);
   ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//+----------------------------------------------------------------------------+

chiamato come segue:

//==============================================================================
// --------------------------------- Данные -----------------------------------+
//==============================================================================
   if(DrawGraphics) {                           // если рисуем графические объекты
      wnd=WindowFind("i_StdDev("+sdperiod+")"); // номер окна индикатора
      if(wnd>0) {                               // если индикатор на графике, нарисуем метку
         nm=Prefix+"_Текущий бар";
         p1=WindowPriceMax(wnd); p2=WindowPriceMin(wnd);
         SetTLine(Blue,wnd,nm,Time[0],p1,Time[0],p2,false,2);
         }
      }
//-----------------------------------------------------------------------------+   

emette una linea di tendenza verticale nella finestra dell'indicatore senza problemi (segnalo la barra zero per facilitare la percezione visiva dei punti dell'indicatore durante il debug):


Quando chiamo la stessa funzione da un altro posto nel codice come questo

   if(op==OP_SELLSTOP) {
      pp=MathMin(Low[x],Low[x-1])-distanceSetOrders*PointX;
      b=iLowest(sy,tf,MODE_LOW,2,(x-1));
      if(pb-level*Point>pp) {
         ll=LotsS;
         if(StopLoss==0) sl=0;
         else sl=NormalizeDouble(MathMax(pp+StopLoss*PointX, pp+(level+1)*Point),dg);
         if(TakeProfit==0) tp=0;
         else tp=NormalizeDouble(MathMin(pp-TakeProfit*PointX, pp-(level+1)*Point),dg);
         co="Отложенный";
         Message("Кто звал? Чё..., ставить? Ставлю SellStop относительно бара "+b+
                 ", от "+DoubleToStr(pp,dg)+" до "+DoubleToStr(Low[b],dg)+" рисую линию");
         SetOrder(sy, OP_SELLSTOP, ll, pp, sl, tp, mn1, co);
         if(DrawGraphics) {
            nm=Prefix+"_Наименьшая цена_"+TimeToStr(Time[b]);
            SetTLine(FireBrick,0,nm,Time[b],Low[b],Time[b],pp,false,3);
            }
         }
      }

segna sul grafico la barra da cui viene calcolato il livello dell'ordine pendente, poi, per quanto possa sembrare strano, i parametri passati ad essa mostrano valori veri e corretti; il tempo della barra viene scritto nel nome della linea di tendenza, ma la linea stessa ha tutti valori zero e inoltre viene visualizzata come un "Raggio", anche se passo "falso" al parametro della funzione, responsabile di questa opzione - non un raggio:


Non vedo un errore nel codice. Potrebbe essere un problema tecnico?
 
La grafica sembra essere stata completamente eliminata... Nessun pulsante che appare sullo schermo. Non ho fatto nulla, ho solo ricaricato il terminale, e gli EA che si libravano sui grafici e disegnavano tutti gli oggetti grafici sono morti normalmente. Aspettando qualche giorno per sistemare gli oggetti grafici.... hmmm.... In attesa di.... Quindi, credo che dovrò subire lo stesso destino. :) Dovrà aspettare la nuova costruzione.
 
Avete ricompilato i programmi con la nuova build?
 
artmedia70:

Ho iniziato ad avere problemi con l'output degli oggetti grafici. A un certo punto del codice, una funzione

chiamato come segue:

emette una linea di tendenza verticale nella finestra dell'indicatore senza problemi (segnalo la barra zero per facilitare la percezione visiva dei punti dell'indicatore durante il debug):


Quando chiamo la stessa funzione da un altro posto nel codice come questo

Posso usarla per marcare la barra nel grafico, da cui viene calcolato il livello dell'ordine pendente, poi, per quanto possa sembrare strano, i parametri passati ad essa mostrano valori veri e corretti, il tempo della barra viene scritto nel nome della linea di tendenza, ma la linea stessa ha tutti valori zero e viene visualizzata come un "raggio", anche se passo false - non un raggio - al parametro della funzione responsabile di questa opzione:


Non vedo un errore nel codice. Potrebbe essere un problema tecnico?
Aggiungere una stampa di tutti i parametri all'interno della funzione SetTLine.
 

E ancora una volta, una domanda sui tempi... Quando sarà lanciato completamente il mercato? Quando ci sarà un aggiornamento globale?

Si è parlato di un mese di test alla fine di novembre, ma dicembre è già in pieno svolgimento ....

 

Renat,

Ci sono piani nel prossimo futuro per il nuovo ME4 per supportare

ENUM_ANCHOR_POINT e ENUM_LINE_STYLE ?

Grazie.

 
Wahoo:

Renat,

ci sono piani per il supporto nel prossimo futuro nel nuovo ME4

ENUM_ANCHOR_POINT e ENUM_LINE_STYLE ?

Sì, lo sono. Il modello grafico sarà lo stesso di MQL5.

Aggiungiamo e miglioriamo le funzioni grafiche con ogni build.

 

Uno dei broker (almeno uno) quando vengono rilasciate nuove build di MT4, specialmente con innovazioni significative, le prova prima su una demo, e poi le implementa su un conto reale.

A causa del fatto che alcuni beta-tester aggiornano involontariamente in modo semiautomatico i terminali vicini, possiamo essere sicuri che la demo e i terminali reali, essendo su un computer (o VPS), saranno in grado di osservare queste tattiche durante l'introduzione di questi cambiamenti? O una cartella, che serve a gestire gli aggiornamenti di tutti i terminali del sistema e che si raccomanda di rimuovere "per evitare", lascia solo due scelte: tutto o niente?

 

Non eseguire test o aggiornamenti su computer con copie funzionanti dei terminali.

Si aggiorneranno tutti automaticamente non appena almeno una copia sul computer riceve un aggiornamento.