Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 138

 
Hola, ¿me podéis decir si es posible conectar una señal de copia y un robot a una cuenta de mt4 y conectar todo esto al vps?
 
2002569:Hola, ¿podéis decirme si es posible conectar una señal de copia y un robot en mt4 y conectarlo todo a vps?

¡¡¡Sí, claro que puedes!!!

 

Hola chicos. ¿Puede aconsejar a alguien que esté perfectamente familiarizado con la programación?

Creo una línea horizontal bajo ciertas condiciones. Defino un precio con OLB para utilizar OpenlineB en otro código como el precio de la línea horizontal. En otro código donde se necesita se muestra como un entero. Por ejemplo el precio es 110,256 y muestra 110. Lo descubrí con el comentario. ¿Por qué no aparece el precio exacto, cuál es el problema?

int OpenlineB() {
    double ma60=...;
    double ma=...;
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 int OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

int TRlineB(){
Comment(OpenlineB());
return(true);}
 
Rustam Bikbulatov:

Hola chicos. ¿Puede aconsejar a alguien que esté perfectamente familiarizado con la programación?

Creo una línea horizontal bajo ciertas condiciones. Defino un precio con OLB para utilizar OpenlineB en otro código como el precio de la línea horizontal. En otro código donde se necesita se muestra como un entero. Por ejemplo el precio es 110,256 y muestra 110. Lo descubrí con el comentario. ¿Por qué no aparece el precio exacto, cuál es el problema?

int double OpenlineB()

Su función devuelve un número entero. Lo que se obtiene es lo que se imprime.
Y por supuesto, más adelante en la función se convierte en formato doble.

 
Konstantin Nikitin:

Su función devuelve un número entero. Lo que se obtiene es lo que se imprime.
Y por supuesto, más adelante en la función se convierte en formato doble.

double OpenlineB() {
    double ma60=...;
    double ma=...;
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 int OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

Ya lo he probado. Devuelve un número entero.

 
Konstantin Nikitin:

Su función devuelve un número entero. Lo que tienes es lo que imprimiste.
Y por supuesto, más adelante en la función se convierte en formato doble.

int OpenlineB() {
    double ma60=iMA(NULL,1,5,0,1,0,1);
    double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 double OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

¡¡¡Lo tengo!!! ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Gracias querido Konstantin!!!!!!!!!!!!!!!!!!

 
Rustam Bikbulatov:

Ya lo he probado. Sale como un número entero.

Prueba a utilizar ObjectGetDouble
Y cambiar la declaración de la función por

double OpenlineB() {
 
Konstantin Nikitin:

Prueba a utilizar ObjectGetDouble

¡Todo listo!

double OpenLineB() {
    double ma60=iMA(NULL,1,5,0,1,0,1);
    double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 double OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

¡¡¡Gracias!!!

 
Rustam Bikbulatov:

¡Todo listo!

¡¡¡Gracias!!!

¿Puedo truncarlo un poco?

double OpenLineB() {
  double ma60=iMA(NULL,1,5,0,1,0,1);
  double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
  if(fMarketOrders(OP_BUY)==0) 
   ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma);
 return(ObjectGetDouble(0,"BUY",OBJPROP_PRICE));
}
 
Vitaly Muzichenko:

Podrías truncarlo un poco.

double OpenLineB() {
  if(fMarketOrders(OP_BUY)==0) {
    double ma60=iMA(NULL,1,5,0,1,0,1);
    double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
    ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma);
    return ma60+ma;
  }
 return(ObjectGetDouble(0,"BUY",OBJPROP_PRICE));
}

si no, los datos del indicador se llaman desde la caché en cada acceso
Y sería mejor mantener el nivel de la línea de "COMPRA" en sus variables y no buscarlo en el gráfico.

Razón de la queja: