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

 
VOLDEMAR:

È meglio scrivere tutto in inglese. Se il tuo codice arriva a un commerciante d'oltremare, non capirà nulla...

Scrivo codice per un russo e lui mi chiede di scrivere in russo. E quello che controllo qui - scrivo per me stesso, e non mi interessa se scrivo in russo o in marziano. Se vedo un problema, lo descrivo.

Lo scrivo in inglese per il mercato.

 
pro_:
stringo:

Cercato e trovato

.

Ci dia il suo esempio.



Vi ho scritto in un messaggio privato. Con un esempio del problema che sto affrontando. ObjectFind era un tentativo di risolvere il problema, e probabilmente hai ragione,
ObjectFind stesso funziona bene.

Il problema è chiaro. Uso scorretto della funzione ObjectFind. ObjectFind restituisce il numero della sottofinestra in cui si trova l'oggetto. Se non viene trovato alcun oggetto, restituisce -1. State controllando "zero - zero".
 
Night63:

Ciao!

Abbiamo trovato il seguente problema.

Inseriamo il blocco di passaggio da quotazioni a 4 cifre a 5 cifre (il codice funziona assolutamente bene, è stato testato su decine di Expert Advisors):

Da qui si può vedere quanto segue.

Accediamo ai parametri di input dell'Expert Advisor premendo F7, tutto è corretto:

Premere OK, poi premere nuovamente F7:

Premere OK, premere nuovamente F7:

Premere OK, premere nuovamente F7:

E così via......

Questo bug non scompare con le build aggiornate. Appare con diversi utenti allo stesso modo. L'argomento è stato discusso qui


Non è possibile cambiare le variabili di ingresso!

Usate la parola chiave input invece di extern, allora il compilatore non ve lo lascerà fare.

Vedremo cosa possiamo fare per mantenere la vecchia funzionalità quadrupla

PS grazie mille per aver sollevato la questione

 
artmedia70:
Così in futuro Bars non sarà solo una variabile predefinita, ma anche una funzione con lo stesso nome: Bars() ?

È abbastanza possibile. (In C/C++ questo è permesso, a proposito).
 
stringo:

Non puoi cambiare le variabili di ingresso!



Qui, puoi spiegare più in dettaglio cosa significa che le variabili di input non possono essere cambiate?

Se la variabile di input int TakeProfit = 300 ;

allora posso dargli un valore diverso nel codice?

Non capisco quando non posso cambiarlo.

 

Un'altra domanda, come posso determinare programmaticamente che il cursore del mouse è su un oggetto bmp?

Ho fatto del codice dove sotto l'oggetto c'è un'area dove il cursore cade e il codice capisce che il cursore è sopra l'oggetto bmp ...

Lo chiedo perché sto cercando un metodo più semplice per definire il cursore su un oggetto bmp ...

 
VOLDEMAR:

Qui, puoi spiegare più in dettaglio cosa significa che le variabili di input non possono essere cambiate?

Se la variabile di input int TakeProfit = 300 ;

allora posso assegnargli un valore diverso nel codice?

Non capisco, quando non posso cambiare?

Il software non può essere cambiato. Solo dall'utente nelle impostazioni.

input int TakeProfit = 300;

int takeProfit;

int start() {

takeProfit=TakeProfit;

// E poi modificare takeProfit.

ritorno(0);

}

 
artmedia70:

Non si può cambiare programmaticamente. Solo da un utente nelle impostazioni.

input int TakeProfit = 300;

int takeProfit;

int start() {

takeProfit=TakeProfit;

// E poi modificare takeProfit.

ritorno(0);

}




Grazie!!! Lo saprò ora ...
 
VOLDEMAR:

Qui, puoi spiegare più in dettaglio cosa significa che le variabili di input non possono essere cambiate?

Se la variabile di input int TakeProfit = 300 ;

allora posso assegnargli un valore diverso nel codice?

Non capisco, quando non posso cambiare?

Ecco un esempio della nostra parabola personalizzata

input double InpSARStep=0.02;    // Step
input double InpSARMaximum=0.2;  // Maximum
//---- buffers
double       ExtSARBuffer[];
//--- global variables
double       ExtSarStep;
double       ExtSarMaximum;

...

void OnInit()
  {
//--- checking input data
   if(InpSARStep<0.0)
     {
      ExtSarStep=0.02;
      Print("Input parametr InpSARStep has incorrect value. Indicator will use value",
            ExtSarStep,"for calculations.");
     }
   else
      ExtSarStep=InpSARStep;
   if(InpSARMaximum<0.0)
     {
      ExtSarMaximum=0.2;
      Print("Input parametr InpSARMaximum has incorrect value. Indicator will use value",
            ExtSarMaximum,"for calculations.");
     }
   else
      ExtSarMaximum=InpSARMaximum;

...

E inoltre usiamo ExtSarStep e ExtSarMaximum

 
stringo:
Quello che è sicuro è che non sarà affatto presto


Che peccato. I miei esperti hanno bisogno di questi eventi come dell'aria.

Ad ogni passo, devi passare attraverso un mucchio di posizioni e capire quali sono andate dove e perché.