Encapsular sesiones.

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Avatar de Usuario
Elfarfa
Mensajes: 41
Registrado: 12 Sep 2012 17:19

Encapsular sesiones.

Mensaje 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.
Adjuntos
mn Period Boxes.mq4
(2.41 KiB) Descargado 364 veces
encapsulamiento.gif
Intentando aprender, que no es poco.
Avatar de Usuario
Elfarfa
Mensajes: 41
Registrado: 12 Sep 2012 17:19

Re: Encapsular sesiones.

Mensaje 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.
Intentando aprender, que no es poco.
Avatar de Usuario
FxDelgado
Mensajes: 680
Registrado: 21 Ago 2011 15:56
Ubicación: Málaga

Re: Encapsular sesiones.

Mensaje 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.
La paciencia es una fruto que crece en el árbol de la virtud y no crece en el jardín de todo el mundo
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Encapsular sesiones.

Mensaje por Gamelu »

Y si le cambias el nombre y lo cargas 2 veces ?
Avatar de Usuario
FxDelgado
Mensajes: 680
Registrado: 21 Ago 2011 15:56
Ubicación: Málaga

Re: Encapsular sesiones.

Mensaje 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.
La paciencia es una fruto que crece en el árbol de la virtud y no crece en el jardín de todo el mundo

Avatar de Usuario
Elfarfa
Mensajes: 41
Registrado: 12 Sep 2012 17:19

Re: Encapsular sesiones.

Mensaje 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.
Intentando aprender, que no es poco.
Avatar de Usuario
FxDelgado
Mensajes: 680
Registrado: 21 Ago 2011 15:56
Ubicación: Málaga

Re: Encapsular sesiones.

Mensaje 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?
Última edición por FxDelgado el 03 Dic 2012 22:56, editado 1 vez en total.
La paciencia es una fruto que crece en el árbol de la virtud y no crece en el jardín de todo el mundo
Avatar de Usuario
FxDelgado
Mensajes: 680
Registrado: 21 Ago 2011 15:56
Ubicación: Málaga

Re: Encapsular sesiones.

Mensaje por FxDelgado »

Elfarfa, prueba a cambiar el 60 por un 15.

Saludos.
Última edición por FxDelgado el 04 Dic 2012 11:42, editado 1 vez en total.
La paciencia es una fruto que crece en el árbol de la virtud y no crece en el jardín de todo el mundo
Avatar de Usuario
Enrio
Mensajes: 308
Registrado: 26 Oct 2004 13:36

Re: Encapsular sesiones.

Mensaje 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.
Avatar de Usuario
FxDelgado
Mensajes: 680
Registrado: 21 Ago 2011 15:56
Ubicación: Málaga

Re: Encapsular sesiones.

Mensaje 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.
La paciencia es una fruto que crece en el árbol de la virtud y no crece en el jardín de todo el mundo
Yago
Mensajes: 23
Registrado: 04 Dic 2012 01:53

Re: Encapsular sesiones.

Mensaje 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
Avatar de Usuario
Elfarfa
Mensajes: 41
Registrado: 12 Sep 2012 17:19

Re: Encapsular sesiones.

Mensaje 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.
Intentando aprender, que no es poco.
arruinao
Mensajes: 735
Registrado: 26 Abr 2005 18:32

Re: Encapsular sesiones.

Mensaje 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
Avatar de Usuario
FxDelgado
Mensajes: 680
Registrado: 21 Ago 2011 15:56
Ubicación: Málaga

Re: Encapsular sesiones.

Mensaje 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.
La paciencia es una fruto que crece en el árbol de la virtud y no crece en el jardín de todo el mundo
Avatar de Usuario
FxDelgado
Mensajes: 680
Registrado: 21 Ago 2011 15:56
Ubicación: Málaga

Re: Encapsular sesiones.

Mensaje 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.
La paciencia es una fruto que crece en el árbol de la virtud y no crece en el jardín de todo el mundo
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”