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.
Encapsular sesiones.
Encapsular sesiones.
- Adjuntos
-
- mn Period Boxes.mq4
- (2.41 KiB) Descargado 364 veces
Intentando aprender, que no es poco.
Re: Encapsular sesiones.
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.
¿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.
Re: Encapsular sesiones.
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.
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
Re: Encapsular sesiones.
Y si le cambias el nombre y lo cargas 2 veces ?
Re: Encapsular sesiones.
Exacto. Así tendrías dos, mn Period Boxes4h.mq4 y mn Period Boxes1h.mq4Gamelu escribió:Y si le cambias el nombre y lo cargas 2 veces ?
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
Re: Encapsular sesiones.
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.
Respecto al codigo, como puedes ver ya esta el indicador puesto, alli esta todo el codigo.
Intentando aprender, que no es poco.
Re: Encapsular sesiones.
//+------------------------------------------------------------------+
//| 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?
//| 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
Re: Encapsular sesiones.
Elfarfa, prueba a cambiar el 60 por un 15.
Saludos.
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
Re: Encapsular sesiones.
Podria ser: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?
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.
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.
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
Re: Encapsular sesiones.
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
Saludos
Re: Encapsular sesiones.
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.
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.
Re: Encapsular sesiones.
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
S2
Re: Encapsular sesiones.
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.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.
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
Re: Encapsular sesiones.
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.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.
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!