Ayuda a la codificación - página 689

 

Hola Mladen,

Quiero hacer un análisis de similitud en los datos de forex.

Es decir, quiero encontrar la barra de 1 hora más correlacionada (el mismo valor o el más similar en OHLC) con la última barra de 1 hora (OHLC) en el historial de 20.000 barras (OHLC).

¿Es el coeficiente de correlación de Pearson suficiente para encontrar la similitud del valor de la última barra en el historial de 20.000 barras?

 

estimado mlade

Hago mi primer indicador MTF

pero el color es negro

¿como arreglarlo?

muchas gracias

Archivos adjuntos:
MTF xb4d.mq4  4 kb
xb4d.mq4  4 kb
 
bilbao:

estimado mlade:

Hago mi primer indicador MTF

pero el color es negro

¿como arreglarlo?

muchas gracias

Poner el #property indicator_color1 al color deseado (ahora está puesto en Negro)
 
nevar:

Hola Mladen,

Quiero hacer un análisis de similitud en los datos de forex.

Es decir, quiero encontrar la barra de 1 hora más correlacionada (el mismo valor o el más similar en OHLC) con la última barra de 1 hora (OHLC) en el historial de 20.000 barras (OHLC).

¿Es el coeficiente de correlación de Pearson suficiente para encontrar la similitud del valor de la última barra en el historial de 20.000 barras?

Mladen,

¿Algún comentario al respecto?

 
nevar:

Mladen,

¿algún comentario al respecto?

Puedes hacer eso con Pearson y simplemente encontrar la barra con el valor máximo de Pearson - puedes hacer eso para cualquier marco de tiempo y cualquier número de barras ya que Pearson no es pesado para la CPU. Sin embargo, es mejor hacerlo desde un indicador (para evitar algunas operaciones de matriz)
 
mladen:
Poner el #property indicator_color1 al color deseado (ahora está puesto en negro)

señor mladen

Lo hago pero solo tengo un color

necesito dos colores para el mercado alcista y bajista

 
bilbao:

señor mladen

Lo hago pero solo tengo un color

necesito dos colores para el mercado de toros y osos

Entonces tienes que codificarlo de manera diferente (tienes que usar dos buffers no solo uno para el histograma de dos colores)
 
mladen:
Entonces tienes que codificar de forma diferente (tienes que usar dos buffers no sólo uno para el histograma de dos colores)

¿Es correcto, señor?

//+------------------------------------------------------------------+

//| MTF_xb4d.mq4

//|------------------------------------------------------------------+


#property ventana_de_separación

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_width1 2

#property indicator_color2 PaleVioletRed

#propiedad indicador_ancho2 2

//---- parámetros de entrada

/*************************************************************************

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

PERIODO_W1 10080

PERIOD_MN1 43200

Debe utilizar el valor numérico del timeframe que desea utilizar

cuando establezca el valor de TimeFrame' con las entradas del indicador.

---------------------------------------*/

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

extern bool SoundAlerts=false;

double ExtMapBuffer1[];

//+------------------------------------------------------------------+

//| Función de inicialización del indicador personalizada ||.

//+------------------------------------------------------------------+

int init()

{

//---- línea del indicador

SetIndexStyle(0, DRAW_HISTOGRAM);

SetIndexStyle(1, DRAW_HISTOGRAM);

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1);

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break

case 60 : TimeFrameStr="Period_H1"; break

caso 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break

case 43200 : TimeFrameStr="Period_MN1"; break

default : TimeFrameStr="Periodoactual";

}

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+" ) ");

return(0);

}

//----

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int inicio()

{

datetime TimeArray[];

int,limit,y=0,counted_bars=IndicatorCounted();

// Trazar el marco de tiempo definido en el marco de tiempo actual

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= Bars-1;

for(i=0,y=0;i<limit;i++)

{

if (Time[i]<TimeArray[y]) y++;

/***********************************************************

Añada su bucle principal de indicador a continuación. Puede hacer referencia a un

existente con su iName o iCustom.

Regla 1: Añadir entradas externas arriba para todos los valores necesarios

Regla 2: Utilice 'TimeFrame' para el marco de tiempo del indicador

Regla 3: Utilice 'y' para el valor de desplazamiento de su indicador

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y);

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("Alerta de compra " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Alerta de venta " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

GlobalVariableSet(Symbol()+"previndicador",ExtMapBuffer1[0]);

return(0);

}

//+------------------------------------------------------------------+

 
bilbao:

¿Es correcto, señor?

//+------------------------------------------------------------------+

//| MTF_xb4d.mq4

//|------------------------------------------------------------------+


#property ventana_de_separación

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_width1 2

#property indicator_color2 PaleVioletRed

#propiedad indicador_ancho2 2

//---- parámetros de entrada

/*************************************************************************

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

PERIODO_W1 10080

PERIOD_MN1 43200

Debe utilizar el valor numérico del marco temporal que desea utilizar

cuando establezca el valor de TimeFrame' con las entradas del indicador.

---------------------------------------*/

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

extern bool SoundAlerts=false;

double ExtMapBuffer1[];

//+------------------------------------------------------------------+

//| Función de inicialización del indicador personalizada ||.

//+------------------------------------------------------------------+

int init()

{

//---- línea del indicador

SetIndexStyle(0, DRAW_HISTOGRAM);

SetIndexStyle(1, DRAW_HISTOGRAM);

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1);

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break

case 60 : TimeFrameStr="Period_H1"; break

caso 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break

case 43200 : TimeFrameStr="Period_MN1"; break

default : TimeFrameStr="Periodo actual";

}

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+" ) ");

return(0);

}

//----

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int inicio()

{

datetime TimeArray[];

int,limit,y=0,counted_bars=IndicatorCounted();

// Trazar el marco de tiempo definido en el marco de tiempo actual

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= Bars-1;

for(i=0,y=0;i<limit;i++)

{

if (Time[i]<TimeArray[y]) y++;

/***********************************************************

Añada su bucle principal de indicador a continuación. Puede hacer referencia a un

existente con su iName o iCustom.

Regla 1: Añadir entradas externas arriba para todos los valores necesarios

Regla 2: Utilice 'TimeFrame' para el marco de tiempo del indicador

Regla 3: Utilice 'y' para el valor de desplazamiento de su indicador

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y);

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("Alerta de compra " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Alerta de venta " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

GlobalVariableSet(Symbol()+"previndicador",ExtMapBuffer1[0]);

return(0);

}

//+------------------------------------------------------------------+

¿Se muestran los colores como querías?
 
mladen:
¿Se muestran los colores como querías?

querida mladen:

encuentro mtf de ello en https://www.forex-tsd.com/forum/debates-discussions/1131-multi-timeframe-indicators/page762#comment_1831838

muchas gracias por su ayuda a todos los miembros

que dios bendiga tu vida

Razón de la queja: