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

 
Mihail Matkovskij #:

E seriamente, ChartRedraw è chiamato più di 24 volte al secondo...

E ObjectCreate! L'orrore... (aggiunto)

ChartRedraw va bene. Ma l'OBjectCreate potrebbe caricarsi, se la linea viene creata mentre il pulsante non è premuto.

UPD
Sì, lo fa...

UPD
Anche se no, non lo fa:

Print(ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price));
...
2021.12.03 23:15:50.987    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.967    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.927    USDCHF,M1: false
2021.12.03 23:15:50.907    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.467    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: true
 
Nerd Trader #:
ChartRedraw non è un problema. Ma ObjestCreate potrebbe caricarsi, se la linea viene creata fino al rilascio del pulsante.

Sì, crealo all'avvio e cancellalo all'arresto dell'applicazione. E usare le funzioniObjectSetInteger eObjectSetDouble per spostarlo. Come è difficile da capire...

 
Mihail Matkovskij #:

Sì, crealo all'avvio e cancellalo all'arresto dell'applicazione. E usare le funzioniObjectSetInteger eObjectSetDouble per spostarlo. Come è difficile da capire...

Come è difficile capire che devo creare solo dopo aver premuto il pulsante e cancellare dopo averlo rilasciato.
 
Nerd Trader #:

UPD
Sì, lo fa...

UPD
Anche se no, non lo fa:

In un modo o nell'altro, la tua CPU salterà in aria con un tale programmatore... :)

 
Nerd Trader #:
Quanto è difficile capire che devo solo creare quando il pulsante viene premuto e cancellare quando il pulsante viene rilasciato.

Puoi nascondere dal grafico e poi mostrare. Come nascondere correttamente un oggetto e mostrarlo, è stato scritto nel forum. Oppure traccia CHARTEVENT_OBJECT_CLICK - soluzione perfetta!

 
Mihail Matkovskij #:

In un modo o nell'altro, la tua CPU salterà in aria con un tale programmatore... :)

Sto tenendo d'occhio il termometro.

Mihail Matkovskij #:

Puoi nascondere dal grafico e poi mostrare. Come nascondere correttamente un oggetto e mostrarlo, è stato scritto sul forum.

No... Lo capirò nel modo giusto.

 
Nerd Trader #:

Tengo d'occhio il termometro.

No... Questa me la invento subito.

Ho aggiunto al messaggio precedente.

 
if(id==CHARTEVENT_OBJECT_CLICK){
    if(sparam=="button_bs")
      (ObjectCreate(0,"H Line",OBJ_HLINE,0,0,0));
  }

  if(ObjectGetInteger(0,"button_bs",OBJPROP_STATE)){
    int      x     =(int)lparam;
    int      y     =(int)dparam;
    datetime dt    =0;
    double   price =0;
    int      window=0;

    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      if(id == CHARTEVENT_MOUSE_MOVE){
        if(ObjectMove(0,"H Line",window,dt,price))
          ChartRedraw(0);
      }
    }
  }else ObjectDelete(0,"H Line");

Tutto è brillantemente semplice.

 
Nerd Trader #:

Tutto ciò che è brillante è semplice.

Beh, da qualche parte lungo la linea... :)

 
Mihail Matkovskij #:

Completato il post precedente.

non può vedere