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

 
Nerd Trader #:
Sì infatti tanto quanto 8 pezzi, ma il grafico non mostra che il prezzo è 0 non importa, la linea ancora si aggrappa al cursore (lo segue)

Non usare ObjectDelete perché la linea corre via a "0" ogni volta

meglio
      ObjectSetString(0,"line 1",OBJPROP_NAME,line_name);
      ObjectSetInteger(0,line_name,OBJPROP_COLOR,clrRed);
 
MakarFX #:

Non usare ObjectDelete perché la linea corre via a "0" ogni volta

meglio
Ho l'opzione di rinominare e sì, funziona. Nel caso di ObjectDelete() allora perché le linee verdi e rosse sono create in un'istanza e non sfarfallano? E la linea gialla (Stop Loss) se c'è già, perché prolifera all'infinito quando è sotto il Bid?
 

0 significa falso. Tutto ciò che non è 0 èvero. Ma qualcuno ha pensato alla leggibilità di tale codice, dove tutti i tipi di condizioni sono mescolati?

if(!ObjectFind("Buy Stop"))

Non è un valore booleano. Ma può essere facilmente trasformato in un booleano:

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

Quindi la cosa principale è avere il giusto approccio alla scrittura del codice. Alloranon avretemai questi problemi.

 
Nerd Trader #:
Ho l'opzione di rinominare e sì, funziona. Nel caso di ObjectDelete() perché le linee verdi e rosse sono create in una sola istanza e non lampeggiano? E la linea gialla, se ne ha già una, perché continua a moltiplicarsi all'infinito?

Queste linee sono sotto il vostro controllo.

if(id==CHARTEVENT_OBJECT_CLICK){

E le linee che sfarfallano reagiscono a qualsiasi OnChartEvent, perché

if(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE))
 
Mihail Matkovskij #:

0 significa falso. Tutto ciò che non è 0 èvero. Ma qualcuno ha pensato alla leggibilità di tale codice, dove tutti i tipi di condizioni sono mescolati?

Non è un valore booleano. Ma può essere facilmente trasformato in un booleano:

Quindi la cosa principale è avere il giusto approccio alla scrittura del codice. Alloranon avretemai questi problemi.

return(ObjectFind(_chartID, _name) >= 0)

E se l'oggetto è "0" nella finestra principale, restituirà false?

 
MakarFX #:

E le linee che sfarfallano reagiscono a qualsiasi OnChartEvent, perché.

Gli ho detto: pulsante premuto - crea linea, pulsante rilasciato - cancella (lo stesso con altri tipi di oggetti che possono essere collegati). Ma lui ha detto: non è niente, farò tutto "normalmente". :)

 
Nerd Trader #:

E se l'oggetto è "0" nella finestra principale, restituirà false?

Ecco cosa può sconfiggere la vostra riluttanza a leggere la documentazione!

https://www.mql5.com/ru/docs/objects/objectfind

https://docs.mql4.com/ru/objects/objectfind

Valore di ritorno

Se ha successo, la funzione restituisce il numero della sottofinestra (0 significa finestra principale del grafico) dove si trova l'oggetto trovato. Se non viene trovato nessun oggetto, la funzione restituisce un numero negativo. Per ottenere maggiori informazioni sull'errore, chiamate la funzioneGetLastError().

Документация по MQL5: Графические объекты / ObjectFind
Документация по MQL5: Графические объекты / ObjectFind
  • www.mql5.com
ObjectFind - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
MakarFX #:

Queste linee sono sotto il vostro controllo.

E le linee che sfarfallano reagiscono a qualsiasi OnChartEvent, perché

così come la linea verde, in generale tutte le linee reagiscono anche al movimento del cursore. Mi sono appena reso conto che tutte e tre le linee sono create nell'area di spread perché la linea gialla ha la condizione "Sell Stop" se(prezzo > Ask) per la linea verde "Buy Stop" (prezzo < Bid) e per la linea grigia "not allowed"(prezzo > Bid && prezzo < Ask )
 
Nerd Trader #:

E se l'oggetto è "0" nella finestra principale, restituirà false?

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

Gli ho detto: pulsante premuto - crea linea, pulsante rilasciato - cancella (lo stesso con altri tipi di oggetti a cui si può attaccare). Ma lui ha detto: non è niente, lo farò come si deve. :)

Intendi il cambio di colore tramite proprietà? Ho un'opzione del genere, ho bisogno di capire perché non funziona.

Mihail Matkovskij #:

Ecco qualcosa che potrebbe sconfiggere la tua riluttanza a leggere la documentazione!

https://www.mql5.com/ru/docs/objects/objectfind

https://docs.mql4.com/ru/objects/objectfind

Quindi cosa c'è di sbagliato quando l'oggetto nella finestra principale è "0" la vostra funzione restituirà false? Spiegare il punto con >= 0... o uguale a zero
Motivazione: