Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1784

 
Mihail Matkovskij #:

Y en serio, ChartRedraw es llamado más de 24 veces por segundo...

¡Y ObjectCreate! El horror... (añadido)

ChartRedraw está bien. Pero el OBjectCreator puede estar cargando, si la línea se crea mientras el botón no está presionado.

UPD
Sí lo hace...

UPD
Aunque no, no lo hace:

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 no es un problema. Pero ObjestCreate podría estar cargando, si la línea se crea hasta que se suelta el botón.

Sí, se crea al inicio y se elimina al cerrar la aplicación. Y utilizar las funcionesObjectSetInteger yObjectSetDouble para moverlo. Qué difícil de entender...

 
Mihail Matkovskij #:

Sí, se crea al inicio y se elimina al cerrar la aplicación. Y utilizar las funcionesObjectSetInteger yObjectSetDouble para moverlo. Qué difícil de entender...

Es difícil de entender que tengo que crear sólo después de pulsar el botón y eliminar después de soltarlo.
 
Nerd Trader #:

UPD
Sí lo hace...

UPD
Aunque no, no lo hace:

De un modo u otro, su CPU estallará ante semejante programador... :)

 
Nerd Trader #:
Es difícil entender que sólo tengo que crear cuando el botón está presionado y eliminar cuando el botón se libera.

Se puede ocultar del gráfico y luego mostrar. Cómo ocultar correctamente un objeto y mostrarlo, se ha escrito en el foro. O rastrear CHARTEVENT_OBJECT_CLICK - ¡la solución perfecta!

 
Mihail Matkovskij #:

De un modo u otro, su CPU estallará ante semejante programador... :)

Estoy vigilando el termómetro.

Mihail Matkovskij #:

Usted puede ocultar de la carta y luego mostrar. Cómo ocultar correctamente un objeto y mostrar, se escribió sobre él en el foro.

No... Lo resolveré de la manera correcta.

 
Nerd Trader #:

Estoy pendiente del termómetro.

No... Voy a inventar esta ahora mismo.

He añadido al mensaje anterior.

 
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");

Todo es brillantemente simple.

 
Nerd Trader #:

Todo lo brillante es simple.

Bueno, en algún momento... :)

 
Mihail Matkovskij #:

Completado el puesto anterior.

no puede ver
Razón de la queja: