Cruce Banda de Bollinger/ Media movil (Ayuda Codigo)

 

Hola, digamos que quiero guardar en un parametro X el valor correspondiente al cruce (no el valor del precio en ese momento) de una media movil con las bandas de bollinger.


https://i.ibb.co/JdgJxsX/bollinger.png


    double LowerBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_LOWER,0);
    double UpperBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_UPPER,0);
    
    double LastLowerBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_LOWER,1);
    double LastUpperBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_UPPER,1);
    
    
    
    //IF MA  CROSSES LOWER BAND FROM BELOW
     
     
    if ((LastLowerBB>LastMiddleMovingAverage)&&(LowerBB < MiddleMovingAverage)) 
    
    LASTMACROSSWITHBOLLINGER=X;

    

    //IF MA CROSSES UPPER BAND FROM ABOVE
     
     
    if ((LastUpperBB<LastMiddleMovingAverage)&&(UpperBB > MiddleMovingAverage)) 
    
    LASTMACROSSWITHBOLLINGER=X;
 
ffsss:

Hola, digamos que quiero guardar en un parametro X el valor correspondiente al cruce (no el valor del precio en ese momento) de una media movil con las bandas de bollinger.


https://i.ibb.co/JdgJxsX/bollinger.png


Yo lo haria asi

    double LowerBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_LOWER,0);
    double UpperBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_UPPER,0);
    
    double LastLowerBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_LOWER,1);
    double LastUpperBB = iBands(_Symbol,_Period,BollingerPeriod,BollingerDeviation,0,PRICE_CLOSE,MODE_UPPER,1);
    
    
    
    //IF MA  CROSSES LOWER BAND FROM BELOW
     
     
    if ((LastLowerBB>LastMiddleMovingAverage)&&(LowerBB < MiddleMovingAverage)) 
    
    LASTMACROSSWITHBOLLINGER= MathMin(LowerBB,LastLowerBB )+( MathAbs(LowerBB -LastLowerBB )/2);

    

    //IF MA CROSSES UPPER BAND FROM ABOVE
     
     
    if ((LastUpperBB<LastMiddleMovingAverage)&&(UpperBB > MiddleMovingAverage)) 
    
    LASTMACROSSWITHBOLLINGER= MathMin(UpperBB ,LastUpperBB)+( MathAbs(UpperBB -LastUpperBB )/2);
NOTA: no probe el codigo, solo es para que se entienda la idea
 
Miguel Antonio Rojas Martinez:

Yo lo haria asi

NOTA: no probe el codigo, solo es para que se entienda la idea
 
Miguel Antonio Rojas Martinez:

Yo lo haria asi

NOTA: no probe el codigo, solo es para que se entienda la idea

Y en este caso el parametro LASTMACROSSWITHBOLLINGER me devolveria el valor (numero) en ese punto? entonces para luego hacer operaciones matematicas con ese numero como debo definir ese parametro anteriormente? con "double LASTMACROSSWITHBOLLINGER;" o de que manera?


Gracias por responder

 
ffsss:

Y en este caso el parametro LASTMACROSSWITHBOLLINGER me devolveria el valor (numero) en ese punto? entonces para luego hacer operaciones matematicas con ese numero como debo definir ese parametro anteriormente? con "double LASTMACROSSWITHBOLLINGER;" o de que manera?


Gracias por responder

si, debe ser un double
Depende de tu necesidad si lo declaras en la funcion en la que estas trabajando, o en el comienzo del programa, para que puedad acceder a ella desde cualquier otra funcion

espero te ayude

Saludos!!!

Razón de la queja: