Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 25

 

Цикл от самого "старого" бара к самому "свежему": 

    for (int i = limit; i >= 0; i--);
 

Se ha modificado ligeramente el indicador. Cuenta correctamente hasta el punto decimal. Por ejemplo, en una sección el indicador debería ser 11, pero muestra 11,58.

¿Qué puede estar mal?

He hecho que vniz_1, vniz_2 sean mayores que cero. He creado huecos en la línea del indicador. Cómo conectar los huecos y colorearlos de forma diferente, pero no calcular el indicador en estos huecos.

//+------------------------------------------------------------------+
//|                                                         сила.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//--- input parameters
extern int       Period_MA_1=7;
extern int       Period_MA_2=7;
extern int       Period_MA_3=7;
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    vniz_1,
    vniz_2,
    MA_1_t,                         
    MA_2_t,                           
    MA_3_t;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   
   for(int i=0;i<limit;i++)
   {
      MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_CLOSE,i+1);  
      MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_CLOSE,i+2);  
      MA_3_t=iMA(NULL,0,Period_MA_3,0,MODE_EMA,PRICE_CLOSE,i+3);    
      vniz_1=(MA_3_t-MA_2_t);
      vniz_2=(MA_2_t-MA_1_t);
      if (vniz_1>0&&vniz_2>0)
      {
      ExtMapBuffer1[i]=(vniz_1/vniz_2);
      }
   }
   return(0);
  }
//+------------------------------------------------------------------+
 
Forexman77:

Se ha modificado ligeramente el indicador. Cuenta correctamente hasta el punto decimal. Por ejemplo, en una sección el indicador debería ser 11, pero muestra 11,58.

¿Qué puede estar mal?

He hecho que vniz_1, vniz_2 sean mayores que cero. He creado huecos en la línea del indicador. Cómo conectar los huecos y colorearlos de forma diferente, pero no calcular el indicador en estos huecos.


      MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_CLOSE,i+1);  
      MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_CLOSE,i+2);  
      MA_3_t=iMA(NULL,0,Period_MA_3,0,MODE_EMA,PRICE_CLOSE,i+3); 
Calcular el indicador en barras inexistentes ?????
 
      if (vniz_1<0 || vniz_2<0)
      {
      ExtMapBuffer2[i]=(чему равны разрывы);
      }
 
Que es 2013.07.07 16:06:21 2010.02.01 01:56 EURUSD,H1: Error en la apertura de una orden de venta EURUSD Array index - out of range
??????
 
A continuación se muestra el código de un simple indicador que dibuja una línea horizontal para todas las barras.
¿Cómo puedo arreglarlo para que la línea se dibuje sólo para los últimos 20 compases?




#property indicator_separate_window
#property indicator_buffers 1

#property indicator_color1 Chocolate
#property indicator_width1 6

#property indicator_minimum -0.1
#property indicator_maximum  0.1


double ExtMapBuffer[];



int init() {

   IndicatorBuffers(1);
   IndicatorDigits(   Digits+2);
   IndicatorShortName("H_LINE");

   SetIndexLabel(    0, "H_LINE");
   SetIndexDrawBegin(0, 0);
   SetIndexStyle(    0, DRAW_LINE);
   SetIndexBuffer(   0, ExtMapBuffer);

   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexShift(     0, 0);

   return(0);
}




int start()  {

   int limit;
   int counted_bars=IndicatorCounted();

   if(counted_bars>0) {
      counted_bars--;
   }

   limit=Bars-counted_bars;


   for(int i=0; i<limit; i++) {   
      ExtMapBuffer[i] = 0;
   }


   return(0);
}
 
atztek:
A continuación se muestra el código de un simple indicador que dibuja una línea horizontal para todas las barras.
¿Cómo puedo arreglarlo para que la línea se dibuje sólo para los últimos 20 compases?






¿A qué debería equivaler la línea?
 
Vinin:

¿A qué debería equivaler la línea?

El tamaño de la línea en el eje Y en este caso no importa, esto es sólo un ejemplo basado en que quiero entender cómo limitar adecuadamente el "dibujo" por los indicadores a un cierto número de barras.
 
atztek:

El tamaño de la línea en el eje Y no importa en este caso, esto es sólo un ejemplo basado en que quiero entender cómo limitar el "dibujo" por los indicadores a un cierto número de barras.

¿Desea utilizar topes indicadores u objetos?
 
Vinin:
¿Desea utilizar topes indicadores u objetos?

Los topes de los indicadores, ya que en el futuro la solución se utilizará no sólo para las líneas rectas, sino también para las medias móviles y otros tipos de líneas.
Razón de la queja: