[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 333

 

¡No voy a discutir! Si lo pruebas, verás lo que pasa. Sólo escribo para aquellos que se encuentren con este problema. Está invertido en el tiempo, así que el gráfico está invertido en el tiempo. Voy a publicar el texto del indicador. LISTO. Mira el gráfico se pueden detectar entradas muy interesantes por él. Me parece que entra antes y con más precisión que el MASD

#property indicador_separar_ventana
#property indicator_buffers 1
#property indicator_color1 Rojo

double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexBuffer(0,Buf_0);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
volver;
}
extern double PeriodPower=13;
extern double MA_Period=5;

int inicio()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Se aplica para la indexación sincronizada en la función iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Línea1[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMMA,i);
Línea2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;

i--;
}
volver;
}


 
Stepan241 писал(а) >>

¡No voy a discutir! Si lo pruebas, verás lo que pasa. Sólo escribo para aquellos que se encuentren con este problema. Está invertido en el tiempo, así que el gráfico está invertido en el tiempo. Voy a publicar el texto del indicador. LISTO. Mira el gráfico se pueden detectar entradas muy interesantes por él. Me parece que entra antes y con más precisión que el MASD.

#property indicador_separar_ventana
#property indicator_buffers 1
#property indicator_color1 Rojo

double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexBuffer(0,Buf_0);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
volver;
}
extern double PeriodPower=13;
extern double MA_Period=5;

int inicio()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Se aplica para la indexación sincronizada en la función iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Línea1[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMMA,i);
Línea2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;

i--;
}
volver;
}

Se puede atornillar, pero se puede hacer de forma normal.

El indicador puede contener hasta 8 buffers. Algunos de ellos pueden utilizarse para cálculos intermedios.

Sin embargo, si el rendimiento no es crítico, entonces sí, puedes hacerlo así.

 
Vinin >> :

Puedes jugar o hacerlo normalmente.

El indicador puede contener hasta 8 buffers. Algunos de ellos pueden utilizarse para cálculos intermedios.

Aunque, si no es crítico para ti y el rendimiento, entonces sí, puedes hacerlo así.

La noción de normalidad es relativa. También lo es la noción de derecho. Esto es más bien una cuestión filosófica. He tratado de implementar el algoritmo de forma OPTIMA. Para construir un indicador en UN ciclo. En mi opinión es la que menos carga de hardware, mientras que se puede obtener el mismo resultado.

>> Y, en cuanto a que hay 8 topes, y en tiempos de guerra su número puede llegar a 54 y medio, cualquier zapador lo sabe. :-)

 
Stepan241 писал(а) >>

Lo normal es relativo. También lo es el concepto de derecho. Son cuestiones más filosóficas. He tratado de implementar el algoritmo de forma OPTIMA. Para que el indicador se construya en UN ciclo. En mi opinión, es lo que menos carga el hardware cuando el resultado sigue siendo correcto.

Unos 8 topes, y su número en tiempo de guerra puede llegar hasta 54 y medio, todo ingeniero lo sabe. :-)

Es posible hacer todo en un solo bucle, y utilizar un número mínimo de búferes, pero esa es otra historia.

Cualquier operación con un array (no con un buffer) requiere un tiempo considerable. Por lo tanto, era más fácil y rápido hacer varios bucles que meter todo en uno.

Más rápido en el sentido del funcionamiento del indicador.

 
Vinin >> :

Es posible hacer todo en un ciclo, y utilizar un número mínimo de búferes, pero eso es otra conversación.

Cualquier operación con un array (no con un buffer) lleva mucho tiempo. Por lo tanto, era más fácil y rápido hacer varios bucles que meter todo en uno.

Más rápido en el sentido del rendimiento del indicador.

Dime, Vinin, ¿has probado a echar un vistazo a tu idea y ver qué dibuja?

 
Vinin >> :

Es posible hacer todo en un ciclo, y utilizar un número mínimo de búferes, pero eso es otra conversación.

Cualquier operación con un array (no con un buffer) lleva mucho tiempo. Por lo tanto, era más fácil y rápido hacer varios bucles que meter todo en uno.

Más rápido en el sentido del rendimiento del indicador.

Querido Vinin, ¿has intentado echar un vistazo a tu idea y resolverla?

int inicio()
{
int, limit=Bars-IndicatorCounted()-1;
for (i=limit;i>=0;i--){
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
}
for (i=limit;i>=0;i--){
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i);
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i);
}
volver;
}

Entiendo que en el primer bucle se forma una matriz de toros y osos. En el segundo ciclo se suavizan estas dos matrices. Si te gusta tanto, mira el resultado y lo entenderás todo.



 


Mira de cerca el GRÁFICO AGRÁFICO

 
Stepan241 писал(а) >>

Me refería a este tipo de código indicador en general.

Archivos adjuntos:
test.mq4  2 kb
 
Compara la velocidad de mi versión y la tuya
 

Estoy de acuerdo. Sale bien y todo es correcto. Sólo necesitaba mostrar la siguiente salida

Buf_0[i]=(Line2[i]+Line1[i])/Point/10;

Debe hacerse en un bucle separado. Prefiero tu versión porque prefiero el bucle FOR. Gracias por su ayuda y atención.