Questions des débutants MQL4 MT4 MetaTrader 4 - page 138

 
Bonjour, pouvez-vous me dire s'il est possible de connecter un signal de copie et un robot à un compte mt4 et de connecter le tout au vps ?
 
2002569:Bonjour, pouvez-vous me dire s'il est possible de connecter un signal de copie et un robot dans mt4 et de connecter le tout à un vps ?

Oui, bien sûr, vous pouvez ! !!

 

Salut les gars. Pouvez-vous conseiller quelqu'un qui connaît parfaitement la programmation ?

Je crée une ligne horizontale dans certaines conditions. Je définis un prix avec OLB afin d'utiliser OpenlineB dans un autre code comme prix de la ligne horizontale. Dans un autre code où il est nécessaire, il est affiché comme un nombre entier. Par exemple, le prix est de 110,256 et il affiche 110. Je l'ai découvert avec Commentaire. Pourquoi le prix exact n'est-il pas affiché, quel est le problème ?

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:

Salut les gars. Pouvez-vous conseiller quelqu'un qui connaît parfaitement la programmation ?

Je crée une ligne horizontale dans certaines conditions. Je définis un prix avec OLB afin d'utiliser OpenlineB dans un autre code comme prix de la ligne horizontale. Dans un autre code où il est nécessaire, il est affiché comme un nombre entier. Par exemple, le prix est de 110,256 et il affiche 110. C'est ce que nous avons découvert avec Commentaire. Pourquoi le prix exact n'est-il pas affiché, quel est le problème ?

int double OpenlineB()

Votre fonction renvoie un nombre entier. Ce que vous obtenez est ce qui est imprimé.
Et bien sûr, plus loin dans la fonction, vous le convertissez en format double.

 
Konstantin Nikitin:

Votre fonction renvoie un nombre entier. Ce que vous obtenez est ce qui est imprimé.
Et bien sûr, plus loin dans la fonction, vous le convertissez au format double.

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

Je l'ai déjà essayé. Ça renvoie un nombre entier.

 
Konstantin Nikitin:

Votre fonction renvoie un nombre entier. Ce que vous avez obtenu est ce que vous avez imprimé.
Et bien sûr, plus loin dans la fonction, vous le convertissez en format double.

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

Je l'ai eu ! !! Merci, cher Konstantin !!!!!!!!!!!!!!!!!!.

 
Rustam Bikbulatov:

J'ai déjà essayé. Il en ressort un nombre entier.

Essayez d'utiliser ObjectGetDouble
Et changez la déclaration de la fonction en

double OpenlineB() {
 
Konstantin Nikitin:

Essayez d'utiliser ObjectGetDouble

C'est fait !

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

Merci ! !!

 
Rustam Bikbulatov:

C'est fait !

Merci ! !!

Je peux le tronquer un peu ?

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:

Tu pourrais le tronquer un peu.

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

sinon les données de l'indicateur sont appelées du cache à chaque accès
Et il serait préférable de garder le niveau de la ligne "BUY" dans vos variables et de ne pas le chercher sur le graphique.