Problemas linea del indicador

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Problemas linea del indicador

Notapor trader201 » 22 Jun 2014, 16:58

Saludos.

Estoy diseñando un indicador, pero no está dibujando las lineas del indicador (aparece sin error cuando lo compilo, cuando reviso lista de indicadores en ventana de precio aparece como si estuviera, pero no se ve en indicador). Lo mismo me está pasando cuando lo coloco como indicador aparte de la ventana de precio: aparece el cuadro donde va el indicador, pero no la linea.

¿Qué falta o necesito corregir para que se vea?
Gracias de antemano.


Aquí está el código:


Código: Seleccionar todo
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 White

//--- buffers
double Buffer1[];
double Buffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping   
   SetIndexBuffer (0, Buffer1);
   SetIndexStyle (0, DRAW_LINE, STYLE_SOLID, 2, White);

   SetIndexBuffer (0, Buffer2);
   SetIndexStyle (0, DRAW_LINE, STYLE_SOLID, 2, White);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {

   double ATR, C;
   int i,
   Counted_bars; 
   Counted_bars = IndicatorCounted();
   i= Bars - Counted_bars - 1;
//---   
   while (i>0)
      {
       ATR=iATR(NULL, PERIOD_CURRENT, 14, 1);
       C= iClose(NULL, PERIOD_CURRENT, 1);
       Buffer1[0]= C + ATR;
       Buffer2[0]= C - ATR;
       i--;
      } 
//--- return value of prev_calculated for next call
   return(rates_total);
  }
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Re: Problemas linea del indicador

Notapor FXWizard » 23 Jun 2014, 11:28

El problema lo tienes aquí:

Código: Seleccionar todo
Buffer1[0]= C + ATR;
Buffer2[0]= C - ATR;


Observa que estás fijando el valor del indicador al momento 0 (el más reciente) cuando pones [0], en su lugar deberías poner [i]. En todo caso, lo que quieres calcular ya existe: se llama Keltner Channel y lo tienes adjunto a este mensaje ;)

Saludos,
FXWizard
Adjuntos
Keltner_Channels.mq4
(2.08 KiB) 487 veces
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Problemas linea del indicador

Notapor trader201 » 23 Jun 2014, 17:01

FXWizard escribió:El problema lo tienes aquí:

Código: Seleccionar todo
Buffer1[0]= C + ATR;
Buffer2[0]= C - ATR;


Observa que estás fijando el valor del indicador al momento 0 (el más reciente) cuando pones [0], en su lugar deberías poner [i]. En todo caso, lo que quieres calcular ya existe: se llama Keltner Channel y lo tienes adjunto a este mensaje ;)

Saludos,
FXWizard


Saludos FXWizard. Me sigue pasando lo mismo a pesar de colocar [i].

Lo que sucede es que este indicador que estoy haciendo lo hago es para aprender a diseñar indicadores (no por el indicador como tal).

Cuando hago un indicador de un solo buffer, luego de algunas pruebas, me ha salido bien, pero cuando hago de dos buffer pues estoy teniendo este problema, aunque se supone que es lo mismo, pero no se por qué no me está saliendo la linea.

:?:


Ahorita probé con un solo buffer, y me pasó lo mismo.

A veces me pongo a curiosear, y derepente comienza a funcionar. Sin embargo, lo estoy haciendo es mas por suerte que por saber exactamente que está pasando.

Coloqué en el buffer Ask-Bid; (solo eso. Y cuando lo pongo en el par, aparece el cuadro donde se supone debe dibujarse la linea, pero no aparece la linea). Tambien probé con MarketInfo(NULL,MODE_SPREAD), y con solo MODE_SPREAD.

Supongo que hay es algo en el código.
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Re: Problemas linea del indicador

Notapor FXWizard » 24 Jun 2014, 11:27

Una cosa: el cálculo del bucle debes hacerlo con un for, no un while. Observa el indicador que te he adjuntado, en particular este apartado:

Código: Seleccionar todo
   for(int x=0; x<limit; x++) {
      middle[x] = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_CLOSE, x);
      avg  = findAvg(period, x);
      upper[x] = middle[x] + avg;
      lower[x] = middle[x] - avg;
   }



Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Problemas linea del indicador

Notapor trader201 » 30 Jun 2014, 21:17

Tengo entendido operador "for" es como utilizar un "if" o "while"?
Así:

for (expresión1, condición1, expresión2)
es como decir

double expresión 1
if (condicion 1)
expresión1+1 (este contador seria el enunciado en la expresión 2)




Entonces, sustituyo:


int i,
Counted_bars;
Counted_bars = IndicatorCounted();
i= Bars - Counted_bars - 1;
//---
while (i>0)
{
ATR=iATR(NULL, PERIOD_CURRENT, 14, 1);
C= iClose(NULL, PERIOD_CURRENT, 1);
Buffer1[0]= C + ATR;
Buffer2[0]= C - ATR;
i--;
}

Por este código:


int i;

//---
for (i= Bars - IndicatorCounted() - 1; i>0; i++)
{
ATR=iATR(NULL, PERIOD_CURRENT, 14, 1);
C= iClose(NULL, PERIOD_CURRENT, 1);
Buffer1[0]= C + ATR;
Buffer2[0]= C - ATR;
}

¿Todo esto está correcto?
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Re: Problemas linea del indicador

Notapor FXWizard » 01 Jul 2014, 13:01

Hola trader201, te recomiendo que te mires estos tutoriales sobre cada operador, recuerda que cada uno sirve para lo que sirve ;):

If: http://book.mql4.com/operators/if
While: http://book.mql4.com/operators/while
For: http://book.mql4.com/operators/for

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35


Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron