[¡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 33

 
xruss >> :
¿Sabe la respuesta a mi pregunta adicional?

La condición de abajo está bien, pero no uso la función de actualización, así que no puedo decirte.

P.D. Yo también soy principiante.

 
xruss писал(а) >>
pero ¿alguien sabe si este orden de enumerar las condiciones a través de varios (&&) en una línea del operador if() es aceptable?

Aceptable, aunque yo pondría más paréntesis -las operaciones tienen diferentes prioridades en los distintos idiomas- para no pensar en trivialidades, algo así como:

if ((Max_price_1>EMA20_Open) && (Min_price_1>EMA20_Open) && (Heiniken_Red>Heiniken_Blue))
   {
    Opn_B=true;
   }
 
zfs >> :

Busca los máximos entre los x vecinos más cercanos del indicador y los compara.

¿Cómo es la función de búsqueda de los 2 últimos máximos en el RSI?

¿Puede alguien mostrarme el código?

 
xruss писал(а) >>

...(¿hay que refrescar con RefreshRates()?)...

¿Para qué sirve RefreshRates? El punto es, que después de que un nuevo tick viene, las variables incorporadas (como Ask, Bid, etc.) son leídas y pasadas a la función start(). Si el inicio tarda demasiado, puede llegar un nuevo tick, pero las variables no se actualizan. Es entonces cuando se llama a RefreshRates.

¿Cuándo se tarda demasiado en empezar? Por lo general, cuando una operación comercial está en curso - hay un intercambio de red, se requiere el permiso del servidor para la operación, y se espera una respuesta. Por lo tanto, normalmente RefreshRates se utiliza cuando se abre/cierra más de una orden en un tick. Se utiliza entre operaciones.

 
amur писал(а) >>

¿Cómo es la función de búsqueda de los 2 últimos máximos en el RSI?

¿Puede alguien mostrarme el código?

Por extraño que parezca, la tarea no es fácil. Técnicamente hay que volver a buscar puntos como ese:

y(x-1)<y(x) e y(x)>y(x+1).

Pero esto encontrará los extremos locales, y eso es un poco exagerado: no estarás contento con el resultado.

 
Itso >> :

Por extraño que parezca, la tarea no es fácil. Técnicamente, hay que retroceder y buscar puntos como ese:

y(x-1)<y(x) e y(x)>y(x+1).

Pero eso encontrará los extremos locales, y eso es un poco fuera de lugar: no estarás contento con el resultado.

Pienso más o menos lo mismo, pero me confunden algunos pensamientos: cómo se distinguirá el 1er máximo del 2do,

porque esta condición se ajusta tanto al primer máximo como al segundo y tercer máximo....

 
amur писал(а) >>

Estoy pensando en lo mismo, pero me confunden algunas ideas: cómo se diferenciará el 1er máximo del 2do máximo,

porque tanto el primer máximo como el segundo y el tercero encajan en esta condición....

Te puedo recomendar que busques y leas sobre ZigZag (hay mucha literatura). Yo recomendaría el zigzag Rochev - 'Zigzag R'.

 
Itso >> :

Puedo recomendar buscar y leer sobre el ZigZag (hay mucha literatura). Yo recomendaría el zigzag Rochev - 'Zigzag R'.

>>Gracias. Le echaré un vistazo.

He echado un vistazo a ....((( No entiendo nada claramente... El array se rellena, luego la función shifft no se sabe qué hace exactamente.

 
amur писал(а) >>

Gracias. Le echaré un vistazo.

Mirado....(((( no entiendo nada... El array se llena, entonces la función shifft no entiende lo que está haciendo exactamente.

La cuestión es que el asunto es bastante complejo, pero este zigzag funciona sin errores. Se puede utilizar para RSI.

 
amur >> :

¿Cómo es la función para encontrar los 2 últimos máximos en el RSI?

¿puede alguien mostrarlo en forma de código?

Se ve así:

bool exit_for=false;
int max_1=0;int max_2=0;
for(int k=0; k<Bars; k++)
{
	if(	iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k)<iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)
		&& iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)>iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+2) 	)
	{
		//Если это первый максимум:
		if( max_1==0)
			max_1= k+1;//Записываем номер бара экстремума
		else
		//Если первый найден, записываем второй
		{	
                        max_2= k+1;
                        exit_for=true;
                } 
	}
        //Выход из цикла, когда найдены оба максимума
        if( exit_for==true) k=Bars+1;  
}
Razón de la queja: