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

 
Candid:

Le versioni demo degli indicatori non partono. Facendo clic con il tasto destro del mouse il test non viene offerto affatto, facendo doppio clic e poi premendo il pulsante "Test" il tester viene caricato, ma non risponde affatto al pulsante "Start". Il diario dello Strategy Tester rimane vuoto. Vengono lanciati gli Expert Advisors. Costruire 555.


Nella 558 c'è un piccolo cambiamento, se prima della procedura descritta con un doppio clic appariva nel giornale generale il record di carico e quello successivo di scarico dell'indicatore, ora il record di scarico non appare. Inoltre, l'indicatore viene ora mostrato nel tester senza menzionare la cartella "mercato". Ma il registro del tester è ancora intatto.

Per quanto ho capito, nessuno si occupa del problema di testare le versioni demo degli indicatori, sembra essere un'eco della ricerca di errori nei test degli Expert Advisors. Forse, sarà più facile trovare l'errore testando gli indicatori?

 
stringo:

La funzione IndicatorCounted() era originariamente una stampella. Chi ha programmato indicatori in tre, capirà cosa intendo.

In cinque, abbiamo trovato una soluzione elegante con il parametro prev_calculated e il ritorno del numero di barre calcolate nella funzione OnCalculate. E questa soluzione è ora passata ai nuovi quattro



Molto tempo fa, ma ancora bello :)
 
Candid:
Testare gli indicatori renderebbe più facile trovare un guasto?
Ci saranno deitest sugli indicatori, ma non in questo momento. Ma lo farà.
 
La funzione di creazione di oggetti di Kim sembra essere obsoleta a causa dell'input OBJPROP_ANCHOR. Ora lo controllo, ma ci sono ancora alcuni problemi con la grafica. Cercherò di postare tutti i dettagli con esempi più tardi.
 
stringo:

Ripeto. Stiamo facendo come in Cinque. Sii così gentile da applicare un altro punto di ancoraggio - specifica dove nell'oggetto si trova il punto di "ancoraggio" dell'oggetto. Nel vostro caso, l'angolo superiore destro dell'oggetto.




Quindi, la funzione ObjectSet funziona diversamente nella nuova versione del terminale rispetto alla vecchia. E dovremo cambiare un po' tutti gli Expert Advisors che usano l'output su un grafico.

Nella versione precedente, se selezioniamo ObjectSet(Name,OBJPROP_CORNER, 1);
, il punto di "ancoraggio" diventa automaticamente nell'angolo superiore destro dell'oggetto. Hai intenzione di lasciare questo, per la compatibilità?

 
alexvd:

Hai provato a lanciare un EA su un grafico (non nello strategy tester)? Qualche messaggio nel diario di bordo?


PS. Il problema è stato risolto. Aspetteremo la prossima build con una correzione.

1. No, non ho cercato di allegare un EA a un grafico. Non ho visto nessuna voce nel diario del Tester, tranne l'output standard delle sue impostazioni. Pertanto, ho ottenuto l'output da init() dell'EA, ma non c'era alcun output da start() dell'EA nel diario.

2. prontamente. Grazie, non vediamo l'ora.

 
Lion.Fx:

Si scopre che la funzione ObjectSet funziona diversamente nella nuova versione del terminale rispetto alla vecchia. E dovremo cambiare un po' tutti gli Expert Advisors che usano l'output di informazioni sul grafico.

Nella versione precedente, se facciamo: ObjectSet(Name,OBJPROP_CORNER, 1);
Il punto di ancoraggio è stato collocato automaticamente nell'angolo superiore destro dell'oggetto. Non hai intenzione di lasciare questo, per la compatibilità?

Beh, sì, è auspicabile lasciare l'ancoraggio di default come nelle vecchie build.
 
Ho appena controllato la funzione di Kim, che ha servito fedelmente per molti anni :) (grazie ancora a lui).
L'aggiunta del parametro OBJPROP_ANCHOR ha permesso di mettere gli oggetti al loro posto (nessuno spostamento di coordinate poco chiaro).

Grazie per aver aggiunto ANCHOR. È più comodo, anche se dovrete aggiustare molte cose con esso.

Ecco la funzione:

//+------------------------------------------------------------------+
void SetLabel(string nm, string tx, string ft,color cl, int xd, int yd, int cr=0, int anch=0, int fs=9) {
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
  ObjectSetText(nm, tx, fs,ft);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_XDISTANCE, xd);
  ObjectSet(nm, OBJPROP_YDISTANCE, yd);
  ObjectSet(nm, OBJPROP_ANCHOR, anch);   //<----------------
  ObjectSet(nm, OBJPROP_CORNER   , cr);
  ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+------------------------------------------------------------------+

e chiamare:

  SetLabel("Hello",  "Hello" ,  FontType, FontColor,  20, 20, 3, 1, FontSize);

 
Lion.Fx:

Si scopre che la funzione ObjectSet funziona diversamente nella nuova versione del terminale rispetto alla vecchia. E dovremo modificare un po' tutti gli EA che utilizzano le informazioni emesse sul grafico.

Nella versione precedente, se facciamo: ObjectSet(Name,OBJPROP_CORNER, 1);
Il punto di "ancoraggio" è stato collocato automaticamente nell'angolo in alto a destra dell'oggetto. Hai intenzione di lasciare questo, per la compatibilità?

Ha senso. Vediamo cosa possiamo fare.

PS. Hanno fatto esattamente questo.

 
Ho fatto un'aggiunta alla domanda aperta in ServiceDesk #907205 e ho allegato un codice per controllarla.