Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 138

 
Olá, você pode me dizer se é possível conectar um sinal de cópia e um robô a uma conta mt4 e conectar tudo isso ao vps?
 
2002569:Olá, você pode me dizer se é possível conectar um sinal de cópia e um robô em mt4 e conectar tudo isso ao vps?

Sim, é claro que pode!!!

 

Oi, pessoal. Você pode aconselhar alguém que esteja perfeitamente familiarizado com programação?

Eu crio uma linha horizontal sob certas condições. Eu defino um preço com OLB para usar o OpenlineB em outro código como o preço da linha horizontal. Em outro código onde é necessário, ele é exibido como um inteiro. Por exemplo, o preço é 110.256 e ele mostra 110. Descobri isso com Comentário. Por que o preço exato não é exibido, qual é o 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:

Oi, pessoal. Você pode aconselhar alguém que esteja perfeitamente familiarizado com programação?

Eu crio uma linha horizontal sob certas condições. Eu defino um preço com OLB para usar o OpenlineB em outro código como o preço da linha horizontal. Em outro código onde é necessário, ele é exibido como um inteiro. Por exemplo, o preço é 110.256 e ele mostra 110. Descobri isso com Comentário. Por que o preço exato não é exibido, qual é o problema?

int double OpenlineB()

Sua função retorna um número inteiro. O que você recebe é o que é impresso.
E, claro, mais adiante na função, você o converte para o formato duplo.

 
Konstantin Nikitin:

Sua função retorna um número inteiro. O que você recebe é o que é impresso.
E, claro, além disso, na função, você o converte para o formato duplo.

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

Já experimentei, ele retorna um número inteiro.

 
Konstantin Nikitin:

Sua função retorna um número inteiro. O que você tem é o que você imprimiu.
E, claro, além disso, na função de conversão para o formato duplo.

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

Consegui!!! Obrigado querido Konstantin!!!!!!!!!!!!!!!!!!

 
Rustam Bikbulatov:

Já tentei. Sai como um número inteiro.

Tente usar ObjectGetDouble
E alterar a declaração de função para

double OpenlineB() {
 
Konstantin Nikitin:

Tente usar ObjectGetDouble

Tudo feito!

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

Obrigado!!!

 
Rustam Bikbulatov:

Tudo feito!

Obrigado!!!

Posso truncá-lo um pouco?

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:

Você poderia truncá-lo um pouco.

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

Caso contrário, a cada acesso os dados indicadores são chamados a partir do cache.
E seria melhor manter o nível da linha "COMPRAR" em suas variáveis e não procurá-la no gráfico.