Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1796

 

Mescolare condizioni booleane e altre condizioni in un unico mucchio... Ok, se non vuoi scrivere del buon codice, non scriverlo. Non cercherò di persuadervi e di discutere con voi.

MakarFX #:

E se parliamo di universalità della funzione, beh...

Beh, è più vicino al buon senso della tua funzione precedente.

È vero, la leggibilità lascia molto a desiderare... Ma chi ci pensa mai...? :)

 
Nerd Trader #:
Quello che per convenzione è vero

no, "line_name" avrà il cognome assegnato.

 
Mihail Matkovskij #:

Mescolando condizioni booleane e altre condizioni in un unico mucchio... Ok, se non vuoi scrivere del buon codice, non scriverlo. Non ho intenzione di persuadere o discutere con te.

Ok, ok, userò il tuo esempio.

 
Non c'è bisogno di creare e cancellare linee tutto il tempo. Ci sono bandiere di visibilità del volume sui timeframe. Necessità di nascondere e visualizzare.
 
Mihail Matkovskij #:

Mescolare condizioni booleane e altre condizioni in un unico mucchio... Ok, se non vuoi scrivere del buon codice, non scriverlo. Non voglio persuadervi e discutere con voi.

Beh, è più vicino al buon senso della tua funzione precedente.

È vero, la leggibilità lascia molto a desiderare... Ma chi ci pensa mai...? :)

In particolare, cosa c'è che non va?

E non hai ancora risposto a cosa restituisce la tua funzione a "-1"...

 
MakarFX #:

no, "line_name" avrà il cognome assegnato.

Sì, perché dovrebbe esserci un problema? L'oggetto che passa la condizione sarà comunque cancellato.
 
MakarFX #:

In particolare, cosa c'è che non va?

E non hai ancora risposto a cosa restituirà la tua funzione a "-1".

restituirà false - ho già controllato.
 
Nerd Trader #:
restituirà false - ho già controllato
Dovrebbe restituire true.
 
MakarFX #:
Deve essere vero.
Con booleano NON vero :)
 
MakarFX #:

In particolare, cosa c'è che non va?

bool FindObject(string name, int win)
{
   if(ObjectFind(0, name) == win) 
     return(true);
   return(false);
}
Una versione più compatta:
bool FindObject(string name,int win) { return (ObjectFind(0,name) == win); } 

Ma non avevi detto che la tua funzione pretendeva di essere universale...? Allora hai dimenticato un dettaglio molto importante:

bool FindObject(const long chart_id, const string name, const int win) { return (ObjectFind(chart_id, name) == win); } 

L'opzione più universale e affidabile.

E non hai mai risposto che la tua funzione restituirà "-1".

Sei troppo pigro per scrivere un semplice script per controllare? Ok. L'ho fatto per te:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  for (int i = -10; i <= 10; i++) 
    if (i)
      printf("%d - true", i);
    else
      printf("%d - false", i);
}
//+------------------------------------------------------------------+

Ora guardate il risultato:

-10 è vero.

-9 è vero.

-8 è vero.

-7 - vero

-6 - vero

-5 - vero

-4 - vero

-3 - vero

-2 - vero

-1 - vero

0 - falso

1 - vero

2 - vero

3 - vero

4 - vero

5 - vero

6 - vero

7 - vero

8 - vero

9 - vero

10 - vero



Tutti i numeri negativi sono veri. 0 è falso. È così che funziona... :)

Quindi, la vostra funzione restituirà true.

Forum sul trading, sistemi di trading automatico e test di strategia

Tutte le domande dei neofiti su MQL4 e MQL5, o qualsiasi consiglio e discussione su algoritmi e codici

MakarFX, 2021.12.06 12:14

bool FindObject(string name)
  {
   if(ObjectFind(0,name)) return(false);
   return(true);
  }

Il mio restituirà false

bool objectExist(const long _chartID, const string _name) { return(ObjectFind(_chartID, _name) >= 0); } // чётко определим условие существования объекта!

Come dovrebbe essere con i valori negativi.

Motivazione: