inizializzazione globale fallita!!!!!!! - pagina 3

 

Grazie per i suggerimenti!

Dal 646 succedono cose strane e nessuno sembra essere in grado di aiutare!

1. Le etichette vanno fuori linea, come se le XDISTANCE e YDISTANCE non fossero rispettate.

Tornano in linea solo dopo aver cambiato i Tf avanti e indietro.

Dopo aver cambiato le finestre del grafico o aver cambiato l'input dei parametri, vanno fuori linea.

2. Alcuni vecchi indici mandano in crash l'MT4.

3. Dopo aver avviato l'MT4, prima accede al conto, dopo un po' si disconnette e devo accedere di nuovo.

4. Gli script e gli EA con OrderClose() non funzionano, non chiudono gli ordini.

OrderModify() funziona bene.

Cosa possiamo fare per far sì che MetaQuotes faccia qualcosa al riguardo?

Dopo tutto, MT4 è una piattaforma di trading, quindi uno strumento serio, non un giocattolo!!!

Oh, e un'altra cosa:

Diciamo che sto creando un rettangolo con un indi, basato su alcuni calcoli.

I calcoli sono all'interno di start().

Tuttavia, non vedo il mio rettangolo dopo l'avvio di MT4, nemmeno sui tick.

Ma, dopo aver reinizializzato l'indi o aver cambiato i Tf, è lì.

Ora, questo tipo di cose non sono mai successe prima!

 
Dadas:

Grazie per i suggerimenti!

Dal 646 succedono cose strane e nessuno sembra essere in grado di aiutare!

1. Le etichette vanno fuori linea, come se le XDISTANCE e YDISTANCE non fossero rispettate.

Tornano in linea solo dopo aver cambiato i Tf avanti e indietro.

Dopo aver cambiato le finestre del grafico o aver cambiato l'input dei parametri, vanno fuori linea.

si può risolvere il problema nel proprio codice

2. Alcuni vecchi indici mandano in crash l'MT4.

dovete adattare il codice al nuovo mondo, (B600 >) per esempio "zero divide" è un errore critico e fa scomparire l'indicatore (non lo era prima di B600)

3. Dopo aver avviato l'MT4, prima accede al conto, dopo un po' si disconnette e devo accedere di nuovo.

prova a chiudere tutti i grafici aperti, lascia il terminale vuoto (senza grafici aperti), riavvia il terminale, se il problema continua, riferisci al service desk

4. Gli script e gli EA con OrderClose() non funzionano, non chiudono gli ordini.

Sono sicuro che il problema è nel tuo codice, mostraci il codice rilevante e qualcuno cercherà di aiutarti

OrderModify() funziona bene.

Cosa possiamo fare per far sì che MetaQuotes faccia qualcosa al riguardo?

Dopo tutto, MT4 è una piattaforma di trading, quindi uno strumento serio, non un giocattolo!!!

sono d'accordo, ma penso (quasi sicuro) che l'errore critico sia nel tuo codice, stai usando del codice non aggiornato, cioè è stato scritto con degli errori all'epoca, errori che non impedivano il funzionamento dell'indicatore/EA, ma ora sono errori cruciali e devono essere corretti

 

Dadas,

Sono un collega sviluppatore e non posso rispondere a tutte le tue domande. Ho a che fare con alcuni problemi PITA io stesso in applicazioni che ho intenzione di prendere commerciale. Una cosa che sicuramente suggerisco, è sostituire almeno le tue funzioni init e deinit con le nuove funzioni OnInit() e OnDeInit(). Potreste anche voler sostituire start con OnStart(). Secondo la documentazione, l'implementazione dovrebbe essere compatibile all'indietro, ma la mia esperienza dice il contrario. Ho avuto una situazione su uno dei miei indies in cui deinit() non veniva chiamato. La mia deinit() cancellava gli oggetti e qualsiasi cosa causasse una reinizializzazione falliva perché gli oggetti esistevano ancora. Uso ancora start() piuttosto che OnStart() ma non sono sicuro della saggezza di questo. Ho la sensazione che sto chiedendo problemi lungo la linea. Fatemi sapere cosa succede se scegliete di provare i miei suggerimenti. Noi sviluppatori dobbiamo restare uniti :-)

 
Dadas:

Oh, e un'altra cosa:

Diciamo che sto creando un rettangolo con un indi, basato su alcuni calcoli.

I calcoli sono all'interno di start().

Tuttavia, non vedo il mio rettangolo dopo l'avvio di MT4, nemmeno sui tick.

Ma, dopo aver reinizializzato l'indi o aver cambiato i Tf, è lì.

Ora, questo tipo di cose non sono mai successe prima!


come ho scritto sopra, c'è un nuovo mondo davanti a noi
non "iniziare" ad usare "OnTick" (EA) o "OnCalculate" (indicatore)
 
qjol:

come ho scritto sopra, il nuovo mondo è davanti a noi
non si "inizia" ad usare "OnTick"


Guarda, MetaQuotes sta rilasciando una piattaforma che, comedice ProfessorMetal , dovrebbe essere retrocompatibile!

Non credo che nessuno sia in grado di riscrivere tutte le migliaia di indicatori, script e EA già esistenti.

Per quanto riguarda i tuoi suggerimenti che i miei codici sono sbagliati, non sono d'accordo, alcune delle etichette sono solo i codici più semplici.

Non c'è niente, creano un oggetto etichetta, calcolano qualcosa, poi impostano l'oggetto di conseguenza.

Non c'è nessuna filosofia speciale allegata:

  ObjectSet    ("Lot_Size_Label",OBJPROP_CORNER,Corner);

  ObjectSet    ("Lot_Size_Label",OBJPROP_XDISTANCE,XDistance);
  ObjectSet    ("Lot_Size_Label",OBJPROP_YDISTANCE,YDistance);
  ObjectSetText("Lot_Size_Label",comment,Font_Size,Font_Type,Font_Color);
  ObjectSet    ("Lot_Size_Label",OBJPROP_SELECTABLE,false); 

Per quanto riguarda gli script di chiusura degli ordini e gli EA, sto parlando di quelli che funzionavano bene nelle build precedenti (500).

Quindi, non è un problema di correttezza o meno dei miei codici.

E' il problema di MetaQuotes che incasina tutto!

Proverò i suggerimenti di ProfessorMetal ,tuttavia, che dire degli utenti che non sanno nulla di codifica?

E, francamente parlando, non dovrebbero nemmeno sapere nulla di codifica!

Si suppone che usino la piattaforma di trading!!!

 
ProfessorMetal:

Dadas,

Sono un collega sviluppatore e non posso rispondere a tutte le tue domande. Ho a che fare con alcuni problemi PITA io stesso in applicazioni che ho intenzione di prendere commerciale. Una cosa che sicuramente suggerisco, è sostituire almeno le tue funzioni init e deinit con le nuove funzioni OnInit() e OnDeInit(). Potreste anche voler sostituire start con OnStart(). Secondo la documentazione, l'implementazione dovrebbe essere compatibile all'indietro, ma la mia esperienza dice il contrario. Ho avuto una situazione su uno dei miei indies in cui deinit() non veniva chiamato. La mia deinit() cancellava gli oggetti e qualsiasi cosa causasse una reinizializzazione falliva perché gli oggetti esistevano ancora. Uso ancora start() piuttosto che OnStart() ma non sono sicuro della saggezza di questo. Ho la sensazione che sto chiedendo problemi lungo la linea. Fatemi sapere cosa succede se scegliete di provare i miei suggerimenti. Noi sviluppatori dobbiamo restare uniti :-)


Grazie, ho avuto lo stesso problema con gli oggetti che non venivano cancellati all'uscita.

Stavo sviluppando alcuni indi e ho ottenuto questi strani risultati, poi ho visto che nella lista degli oggetti erano ancora lì.

Ho aggirato la cosa, probabilmente nel modo più semplice, con ObjectDelete() nella start().

Sì, cambiando init() con OnInit() e deinit() con OnDeinit() le etichette sono tornate giuste! Grazie!

Poi, dopo un po', non l'ha più fatto!!! Stanno ancora facendo la stessa danza.

 

Se il codice è il più semplice, l'implementazione dipende davvero dai codici che vengono implementati. È necessario avere il controllo degli errori nei punti cruciali in modo che quando l'errore accade, l'indi/ea può gestirlo correttamente. Anche io ho avuto problemi l'ultima volta, ma una volta che ho messo i gestori di errori, funziona senza problemi al punto da dimenticare i problemi che si presentano l'ultima volta.


still, what about the users who don't know a thing about coding???

And, frankly speaking, they aren't even supposed to know anything coding!

They are supposed to be using the trading platform!!!

La piattaforma è un metatrader, e viene fornito con tutte le esigenze di base, nessuno ti costringe a codificare.

 

Sai cosa ha aiutato ad allineare le etichette?

Le mie coordinate X,Y sono prese dagli esterni.

extern int XDISTANCE =9;
extern int YDISTANCE =9;

Allora:

int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

In questo modo rende le cose giuste.

O meglio, rende le cose migliori, non esattamente giuste.

 
deysmacro:

Se il codice è il più semplice, l'implementazione dipende davvero dai codici che vengono implementati.


La piattaforma è un metatrader, e viene fornito con tutte le esigenze di base, nessuno ti costringe a codificare.


In che modo il tuo commento dovrebbe aiutare qualcuno?
 
int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

Non mettete nessuna funzione di ricerca di oggetti per controllare se l'oggetto esiste già o no. Da lì, poi si crea l'oggetto di conseguenza.


How's your comment supposed to help anybody??? 

Ti sto aiutando in questo momento.