Domanda su Objectget e objectgetvaluebyshift - pagina 2

 
honest_knave:

Ciao, per favore usa il tasto SRC quando posti il codice.

Tutto il codice in giallo è FUORI dal ciclo 'for'.

Quindi il valore di 'name' è sempre il nome dell'oggetto finale.


Forse prova questo (presumendo che prezzo1 e prezzo2 siano già dichiarati da qualche altra parte):

Molte grazie per il vostro aiuto. Come stampare per vedere il prezzo1... nel giornale per assicurarsi che funzioni.
 
Rajakumar1:
Molte grazie per il vostro aiuto. Come stampare per vedere il prezzo1... nel giornale per assicurarsi che funzioni.
Nello stesso modo in cui si stampa il nome...
int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
         Print("price1: ", price1);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
         Print("price2: ", price2);
        }
     }
 
honest_knave:
Nello stesso modo in cui si stampa il nome...
Grazie. Ho il comando di stampa nell'EA. Non viene stampato nel giornale. Dove stampa l'output?
 
Rajakumar1:
Grazie. Ho il comando di stampa nell'EA. Non viene stampato nel giornale. Dove viene stampato l'output?

Esperti (scheda a sinistra di Journal)
 
honest_knave:

Esperti (scheda a sinistra di Journal)
Ho un indicatore che disegna linee di tendenza. L'EA si basa sulle linee di tendenza disegnate dall'indicatore. C'è un modo per controllare perché non stampa i valori. Allego i file. Scusate il disturbo. Grazie per il vostro aiuto.
 
Rajakumar1:
Ho un indicatore che disegna linee di tendenza. L'EA si basa sulle linee di tendenza disegnate dall'indicatore. C'è un modo per verificare perché non stampa i valori. Allego i file. Scusate il disturbo. Grazie per il tuo aiuto.


Dovrai passare attraverso il tuo codice aggiungendo dichiarazioni di stampa in vari punti.

In questo modo puoi rintracciare il tuo problema.

Dovete cercare le funzioni che non vengono chiamate, o i valori inaspettati delle variabili.

Ci vorrà un po' di tempo, ma è qualcosa che puoi fare da solo.

Per esempio, ho un EA con una variabile che aumenta di 1 ogni tick.

Non so perché a volte la variabile viene riportata a 0


#property strict

int myVariable;

int OnInit()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
   EventSetTimer(5);
   return(INIT_SUCCEEDED);
  }

void OnTimer()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }

void OnTick()
  {
   myVariable++;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }


E l'output:




Posso vedere che myVariable sta aumentando di 1 ogni tick, ma OnTimer() lo sta resettando a zero.

Ora so dov'è il problema.

----

Oppure puoi provare a usare la funzione di debug incorporata in MetaEditor, anche se alcuni utenti hanno segnalato problemi con questo... YMMV

 
honest_knave:


Dovrai passare attraverso il tuo codice aggiungendo dichiarazioni di stampa in vari punti.

In questo modo puoi rintracciare il tuo problema.

Dovete cercare le funzioni che non vengono chiamate, o i valori inaspettati delle variabili.

Ci vorrà un po' di tempo, ma è qualcosa che puoi fare da solo.

Per esempio, ho un EA con una variabile che aumenta di 1 ogni tick.

Non so perché a volte la variabile viene riportata a 0



E l'output:

Grazie. Devo cancellare i file ?.



Posso vedere che la myVariable sta aumentando di 1 ogni tick, ma OnTimer() la sta resettando a zero.

Ora so dov'è il problema.

----

Oppure puoi provare a usare la funzione di debug integrata in MetaEditor, anche se alcuni utenti hanno segnalato problemi con questa funzione... YMMV

 
Rajakumar1:
Grazie. Devo cancellare i file.
 
Rajakumar1:
Grazie. Devo cancellare i file?


Questa è una tua decisione - ci sono quasi 800 linee di codice tra questi 2 indicatori... qualcuno potrebbe avere il tempo di esaminarlo per te.

Ma potresti ottenere una soluzione più rapida restringendo prima il problema.

Buona fortuna.


 
honest_knave:


Questa è una tua decisione - ci sono quasi 800 linee di codice tra questi 2 indicatori... qualcuno potrebbe avere il tempo di esaminarlo per te.

Ma potresti ottenere una soluzione più rapida restringendo prima il problema da solo.

Buona fortuna


Molte grazie per il vostro aiuto. Qualche area dove guardare prima? Il Meta editor mostra solo avvertimenti. Nessun errore.