Foro Forex ¿cómo decir que grafique una linea solo cuando se esté dando una condición?
  • facebook
  • google plus
  • twitter
  • youtube
  • linkedin
Resultados 1 al 4 de 4
  1. #1
    -Krato Invitado

    Re: ¿cómo decir que grafique una linea solo cuando se esté dando una condición?

    IndicatoriNosu wrote:
    ¿Puedes mostrar más de tu código? Con la información dada es muy difícil decirte algo.
    Gracias IndicatoriNosu. Aquí el código:

    Code:
    Código:
    #property indicator_chart_window
     #property indicator_buffers 1
     #property indicator_color1 White
    double Buf_0[];
    
    int OnInit()
     {
     //??? indicator buffers mapping
     SetIndexBuffer(0,Buf_0);
     SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
     SetIndexLabel(0,???Buffer Uno???);
     //???
     return(INIT_SUCCEEDED);
     }
    
    int OnCalculate(const int rates_total,
     const int prev_calculated,
     const datetime &time[],
     const double &open[],
     const double &high[],
     const double &low[],
     const double &close[],
     const long &tick_volume[],
     const long &volume[],
     const int &spread[])
     {
     int Counted_bars, i;
     Counted_bars=IndicatorCounted();
     i=Bars-Counted_bars-1;
    
     double SMA1, SMA2,;
     SMA1= iMA(NULL, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, 1);
     SMA2= iMA(NULL, PERIOD_CURRENT, 40, 0, MODE_SMA, PRICE_CLOSE, 1);
     bool condicion1, condicion2;
     condicion1= Bid>SMA1 && SMA1>SMA2;
     condicion2= BidSMA2;
    
    //???
    
     for(; i>0 ; i???)
     {
     if(condicion1==true)
     {
     Buf_0= iHigh(NULL, PERIOD_CURRENT, i);
     }
     if(condicion2==true)
     {
     Buf_0= iLow(NULL, PERIOD_CURRENT, i);
     }
     }
     }
    Como mencioné en anteriormente, estoy buscando que se trace la línea, uniendo máximos, o mínimos, solamente mientras se esté dando cierta condición, es decir, que se marque en la ventana de precios mientras se estvo dando la condición.

    Solo en caso de que necesites mayor aclaración en lo que estoy intentando hacer: Por ejemplo, digamos el índicador ADX, donde a veces el ADX positivo está por encima del ADX negativo y viceversa. Sería como hacer un indicador donde,
    si el ADX positivo está sobre el ADX negativo, que una los máximos.
    Si es el ADX negativo el que está sobre el ADX positivo, entonces que trace una linea uniendo los mínimos. Así:
    Miniaturas adjuntadas Miniaturas adjuntadas ¿cómo decir que grafique una linea solo cuando se esté dando una condición?-150127102123912110-jpg  

  2. #2
    Lololo Invitado

    Re: ¿cómo decir que grafique una linea solo cuando se esté dando una condición?

    ¿Puedes mostrar más de tu código? Con la información dada es muy difícil decirte algo.

  3. #3
    -Krato Invitado

    ¿cómo decir que grafique una linea solo cuando se esté dando una condición?

    Buenos tardes.

    Quisiera hacer un indicador que marque una linea que una los máximos de las velas, pero solamente cuando se esté dando una condición. De no darse la condición, no quiero que la dibuje. Para hacerlo estoy colocando lo siguiente:

    Code:
    Código:
    if(condicion==true)
     {
     Buf_0= iHigh(NULL, PERIOD_CURRENT, i);
     }
    Sin embargo, lo que está ocurriendo es que, mientras no se da la condición, no marca ninguna linea en ninguna parte, y cuando el mercado está cumpliendo la condición, marca la linea en todas las velas, incluyendo las velas en que no se estaba cumpliendo la condición.

    ¿Cómo hago para que trace la linea en los máximos de las velas ???solo??? cuando se está cumpliendo la condición?

    Reformulo la explicación en caso de facilitar entender lo que busco:

    Quiero que el indicador trace una linea en los máximos delas velas cuando el precio está por encima de una media movil, y mientras el precio se mantiene por debaj no marque nada. Cuando coloqué el código, lo que hizo fue que, si el precio actual estaba por debajo de la media movil, no trazaba ninguna linea. Cuando el precio se ubicó por encima de la media movil, se trazó la linea uniendo todos los máxios de todas las velas, incluyendo las velas que estaban por debajo de la media movil.

    Espero haber explicado lo suficiente la pregunta.

    Muchas gracias de antemano.

  4. #4
    ..ds.. Invitado

    Re: ¿cómo decir que grafique una linea solo cuando se esté dando una condición?

    A simple vista lo que pasa es que haces un recorrido desde la vela actual hasta la última vela del gráfico y por eso aparece la línea en todas las velas una vez que se da la condición:

    Code:
    Código:
    //Aquí haces i = al número de velas en el gráfico
     i = Bars-Counted_bars ??? 1;
     //Aquí haces un recorrido por todas las velas del gráfico
     for(; i>0 ; i???) {
     if(condicion1==true)
    Luego lo miro más detanidamente, me tengo que ir a la oficina ya. Creo que deberías hacer el cálculo de la condición dentro del bucle for para cada una de las velas del pasado y comprobar ahí si se cumple o no; fíjate también que el cálculo de la condición lo haces sólo para la vela anterior a la actual (i = 1) y no para las velas pasadas.

    Code:
    Código:
    bool condicion1, condicion2;
     double SMA1, SMA2,;
     i=Bars-Counted_bars-1;
    for(; i>0 ; i???) {
     SMA1= iMA(NULL, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, i);
     SMA2= iMA(NULL, PERIOD_CURRENT, 40, 0, MODE_SMA, PRICE_CLOSE, i);
     condicion1= Bid>SMA1 && SMA1>SMA2;
     condicion2= BidSMA2;
     if(condicion1==true) {
     //Resto del código

Configuración de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.