Página 1 de 4

Encapsular sesiones.

Publicado: 30 Nov 2012 08:50
por Elfarfa
Hola, dispongo de un indicadro llamado mn Period Boxes, que me permite por ejemplo en un gráfico menor marcarme el maximo y minimo en una caja de espacios temporales superiores.
Por ejemplo, en la gráfica que les pongo tengo un gráfico de 15m y me esta marcando en cajas rojas la temporalidad de 4 horas.

Cual es el problema, que si quiero por ejemplo poner dos encamsulamientos, por ejemplo 4H y 1 dia no me deja.

¿Alquien tiene un indicador parecido que lo permita, o alguien sabe modificar el que tengo para que me deje?

Adjunto una imagen y el indicador por si a alguien le puede servir y si alguien sabe rectificarlo para que muestre mas encapsulamientos.

Gracias.

Re: Encapsular sesiones.

Publicado: 03 Dic 2012 09:00
por Elfarfa
Hola, hace unos dias que mi duda esta puesta en el foro y nadie parece saberlo, les pregunto.
¿Alguien puede decirme donde puedo plantear esta duda?, ¿alguien sabe de alguna web, foro, o sitio en internet donde crean que me puedan ayudar al respecto?

Gracias.

Re: Encapsular sesiones.

Publicado: 03 Dic 2012 10:23
por FxDelgado
Hola Elfarfa, no entiendo mucho de programación, pero trata de identificar la función y el código que te encapsula las velas 15M en cajas 4H, y copialo. A continuación, en el código copiado cambia el color de la caja y la temporalidad a 1H y déjalos correr a los dos. Algo así debe ser ¿no?

Saludos.

Re: Encapsular sesiones.

Publicado: 03 Dic 2012 11:02
por Gamelu
Y si le cambias el nombre y lo cargas 2 veces ?

Re: Encapsular sesiones.

Publicado: 03 Dic 2012 13:26
por FxDelgado
Gamelu escribió:Y si le cambias el nombre y lo cargas 2 veces ?
Exacto. Así tendrías dos, mn Period Boxes4h.mq4 y mn Period Boxes1h.mq4

Si cuelgas el código aquí seguro que alguien localizaría enseguida donde cambiar lo de 4H a 1H.

Saludos.

Re: Encapsular sesiones.

Publicado: 03 Dic 2012 21:36
por Elfarfa
Gracias chicos, lo que comentais ya lo he intentado pero no funciona bien.
Respecto al codigo, como puedes ver ya esta el indicador puesto, alli esta todo el codigo.

Re: Encapsular sesiones.

Publicado: 03 Dic 2012 22:40
por FxDelgado
//+------------------------------------------------------------------+
//| mn Period Boxess +
//+------------------------------------------------------------------+

#property indicator_chart_window
#property copyright "mn"

extern int mNmbOfBoxes = 10, mWidth = 2;
extern color mCol1 = Blue; // Aquí es donte tendrías que cambiar el color para las cajas de 1H
extern bool mFilledBox = false;
extern int mPeriod = 10080; // 43200, 10080, 1440, 240

double mData[][6];
int mTime, mArrSize;
//--------------------------------------------------------
int init()
{
ArrayCopyRates(mData, Symbol(), mPeriod);
mArrSize = ArraySize(mData);

return(0);
}

//--------------------------------------------------------
int deinit()
{
DeleteObjects();

return(0);
}

//---------------------------------------------------------
int start()
{
if(Time[0] > mTime)
{
DeleteObjects();
for(int i = mArrSize; i >= 0; i--)
{
mDrawBoxes(i);
}
mTime = Time[0];
}

return(0);
}

//--------------------------------------------------------
void mDrawBoxes(int j)
{
int mT1Adj = 0, mPrdOpen;

if(j <= mNmbOfBoxes)
{
mPrdOpen = mData[j][0];
if(mPeriod > 1000)
{
while((TimeDayOfWeek(mPrdOpen) == 6 || TimeDayOfWeek(mPrdOpen) == 0))
mPrdOpen += (Period() * 60);
}

ObjectSet("mBox"+(j+1), OBJPROP_TIME2, mPrdOpen);
ObjectCreate("mBox"+j, OBJ_RECTANGLE, 0, 0, 0, 0);
ObjectSet("mBox"+j, OBJPROP_PRICE1, mData[j][3]);
ObjectSet("mBox"+j, OBJPROP_PRICE2, mData[j][2]);
ObjectSet("mBox"+j, OBJPROP_TIME1, mPrdOpen);
if(j > 0)
ObjectSet("mBox"+j, OBJPROP_TIME2, mData[j-1][0]);
else
ObjectSet("mBox"+j, OBJPROP_TIME2, Time[0]);
ObjectSet("mBox"+j, OBJPROP_COLOR, mCol1);
ObjectSet("mBox"+j, OBJPROP_WIDTH, mWidth);
if(mFilledBox)
ObjectSet("mBox"+j, OBJPROP_BACK, true);
else
ObjectSet("mBox"+j, OBJPROP_BACK, false);
}

return(0);
}

//--------------------------------------------------------
void DeleteObjects()
{
string mObj;
for(int m = ObjectsTotal()-1; m >= 0; m--)
{
mObj = ObjectName(m);
if (StringFind(mObj,"mBox", 0) > -1)
ObjectDelete(mObj);
}
}
//+------------------------------------------------------------------+

extern int mPeriod = 10080; // 43200, 10080, 1440, 240


Esto es lo que tiene que ver con el periodo de las 4H. 240/4 = 60

El resto de los números no sé por qué están ahí. ¿Alguien que se anime a echar un manilla?

Re: Encapsular sesiones.

Publicado: 03 Dic 2012 22:49
por FxDelgado
Elfarfa, prueba a cambiar el 60 por un 15.

Saludos.

Re: Encapsular sesiones.

Publicado: 04 Dic 2012 00:52
por Enrio
FxDelgado escribió:.
extern int mPeriod = 10080; // 43200, 10080, 1440, 240


Esto es lo que tiene que ver con el periodo de las 4H. 240/4 = 60

El resto de los números no sé por qué están ahí. ¿Alguien que se anime a echar un manilla?
Podria ser:

240/60 = 4 horas
1440/60 = 24 horas
10080/60/24 = 7 dias
43200/60/24 = 30 dias

Asi, eligiendo los minutos del periodo, deberia dibujar su encapsulamiento.

Re: Encapsular sesiones.

Publicado: 04 Dic 2012 01:22
por FxDelgado
Gracias Enrio, ahora ya entiendo que relacción tienen esos números.

Pero la función o variable "extern int mPeriod" utiliza sólo el 10080, que es para siete días. Los otros números sobran. De hecho están después de las dos barras, así que el programa los ignora ¿no es así? Si no tan sólo habría que poner 60 después del 240 y ya tendríamos la temporalidad 1H

No tengo ni idea de que parte de ese código es la que se encarga de elegir la temporaliadad 4H.

¿Alguien que lo sepa?

Saludos.

Re: Encapsular sesiones.

Publicado: 04 Dic 2012 02:00
por Yago
Espero poder ayudarte. El problema creo que es que los rectangulos que genera el indicador se llaman todos mbox+un numero (los puedes ver si usas la opcion de listado de objetos) , al inserta otra vez el mismo indicador vuelve a generar los mismo objetos con el mismo nombre por lo que "machaca" los antiguos. Para que funcione puedes ,si no sabes programar , cambiar todos los sitios donde pone mbox por otra cosa y salvarlo con otro nombre de indicador.Si sabes programar yo pondria un parametro en el indicador para preguntar como se llaman los objetos que genere el indicador.
Saludos

Re: Encapsular sesiones.

Publicado: 04 Dic 2012 08:08
por Elfarfa
Exacto como dice Enrio los periodos significan exactamente eso.
Fxdelgado ya he probado el cambio del 60 por el 15 pero no.
Recurda que este programa con un encapsulamiento va bien, el tema es montarlo para que vaya con dos.

Re: Encapsular sesiones.

Publicado: 04 Dic 2012 08:41
por arruinao
Lo que va después de // es un comentario, por lo tanto el editor lo ignora al compilar. En lo referente a pintar Boxes de espacios temporales distintos, lo más práctico parece abrir dos ventanas distintas del mismo activo con los periodos temporales requeridos. Otra opción, si se quiere pintar en la misma ventana (solicitada por Elfarfa), podría ser duplicar el código con la simple variación del período. Lógicamente habrá que asignar nombres distintos a las variables y matrices. No lo he probado, por tanto no sé si funciona.

S2

Re: Encapsular sesiones.

Publicado: 04 Dic 2012 09:37
por FxDelgado
Elfarfa escribió:Exacto como dice Enrio los periodos significan exactamente eso.
Fxdelgado ya he probado el cambio del 60 por el 15 pero no.
Recurda que este programa con un encapsulamiento va bien, el tema es montarlo para que vaya con dos.
Pero vamos a hacer primero lo que ha sugerido Gamelu, lo de crear dos indicadores cambiando la temporalidad de uno y guardándolo con otro nombre, y ya luego vemos si se puede integrar todo en uno.

Saludos.

Re: Encapsular sesiones.

Publicado: 04 Dic 2012 09:41
por FxDelgado
arruinao escribió: Otra opción, si se quiere pintar en la misma ventana (solicitada por Elfarfa), podría ser duplicar el código con la simple variación del período. Lógicamente habrá que asignar nombres distintos a las variables y matrices. No lo he probado, por tanto no sé si funciona.
En esas estamos arruinao. Pero el problema es que la parte del código que crea la temporalidad de 4H y que queremos cambiar a 1H no la sabemos modificar.

Gracias a todos y saludos.