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

 
1Rakso >> :

¿por qué no funciona la señal?

Quería establecer la zona de filtrado en pips desde el máximo y el mínimo más alto... la señal no funciona ¿qué estoy haciendo mal?

No estoy muy seguro de lo que buscas aquí...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

si tengo un máximo y un mínimo de N barras, lo busco así

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

donde hibar y lobar son el número de barras en las que se busca el máximo y el mínimo.

tf_100 - Marco temporal en el que se buscan los máximos y los mínimos.

1 - la búsqueda comienza a partir de 1 barra, si quieres que busque en la barra cero, debes poner 0.

 
Swan >> :


Ohhhh, estoy tan avergonzada, estoy tan avergonzada.
 
Dimi >> :

Ahora la pregunta es: ¿Cómo puedo obtener el valor 20 de esta matriz en las variables?

bind double Max_array[20]; fuera de la función (globalmente), si es necesario, también estática

 
alsu >> :

En primer lugar, pon el código en orden lógico.

ArraySetAsSeries(Max_array,true) - ¿Por qué?

for(c=1; c <= total_c; c++) - Las matrices se indexan de 0 a total_c-1.

Sinceramente, no entiendo por qué no te gusta la lógica... Aquí ArraySetAsSeries(Max_array,true) Establece la dirección de indexación en el array. ¿O hay algún problema?

 
Dimi >> :

Para ser sincero, no entiendo por qué no te gusta la lógica. ArraySetAsSeries(Max_array,true) establece aquí la dirección de indexación en el array. ¿O es algo malo?


Esto no es un error, por supuesto, sólo una cadena lógicamente innecesaria. ArraySetAsSeries tiene sentido cuando el array aumenta de tamaño (por ejemplo, en cada nueva barra), entonces el nuevo elemento tendrá índice 0. En el caso estático, sin embargo, no hay diferencia en el orden en que los elementos están dispuestos en la memoria. Respecto a la segunda nota: en un array de tamaño N, el último elemento tiene el índice N-1. Código correcto for(c=0; c < total_c; c++)

 
alsu >> :

Esto no es un error, por supuesto, sólo una cadena lógicamente innecesaria. ArraySetAsSeries tiene sentido cuando el array aumenta de tamaño (por ejemplo, en cada nueva barra), entonces el nuevo elemento tendrá índice 0. En el caso estático, sin embargo, no hay diferencia en el orden en que los elementos están dispuestos en la memoria. Respecto a la segunda nota: en un array de tamaño N, el último elemento tiene el índice N-1. Código correcto for(c=0; c < total_c; c++)

Gracias, ahora entiendo el error. Pero sigo sin conseguirlo con double Max_array[20];... Permítanme explicarlo de otra manera. Esta función busca el valor máximo del RSI en las últimas 20 barras. Quiero que busque el valor máximo en ese número de barras que será calculado por otra función. Es decir, en cada nueva barra este número de barras calculadas cambiará. Puede ser 10, puede ser 20 o 30.... ¿Cómo implementarlo en el código? La función de cálculo de barras está lista, como insertarla ahora en lugar de este número 20 en este array double Max_array[20]; ????

 
Dimi >> :

Gracias ahora entiendo el error. Pero este doble Max_array[20]; no me llega todavía... Permítanme explicarlo de una manera ligeramente diferente. Esta función busca el valor máximo del RSI en las últimas 20 barras. Quiero que busque el valor máximo en ese número de barras que será calculado por otra función. Es decir, en cada nueva barra este número de barras calculadas cambiará. Puede ser 10, puede ser 20 o 30.... ¿Cómo implementarlo en el código? La función para calcular las barras está lista, cómo insertarla ahora en lugar de este número 20 en este array double Max_array[20]; ????


muy simple:

double IsMaxRSI(int total_c) {
   ...
   double Max_array[];  
   ArrayResize( Max_array, total_c);
   ...
}
виноват, код куда-то выпал
 
Dimi >> :

No estoy muy seguro de lo que buscas aquí...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

si el máximo y el mínimo para N barras, se busca así

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

donde hibar y lobar son el número de barras en las que se busca el máximo y el mínimo.

tf_100 - Marco de tiempo en el que se busca el máximo y el mínimo.

1 - la búsqueda comienza con 1 barra, si quieres que busque en la barra cero, tienes que poner 0.

Gracias probaré tu variante, sobre las barras buscaba un nivel de 50 a 100 barras, por eso las puse en externo para optimizarlas.

encontré el error, no inserté la matrizf en las variables globales y puse el valorf en las variables externas en el orden tf))))

extern int tf_100  =   3; //)))

int tf[10]={0,1,5,15,30,60,240,1440,10080,43200};//массив таймфрейма забыл его вставить)))

double hi_100 = High[iHighest(Symbol(), tf[ tf_100], MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf[ tf_100], MODE_LOW, lobar, 1)];

Soy muy tonto, cosas básicas como ......

 
alsu >> :

muy sencillamente:

¡¡¡Muchas gracias!!! ¡¡¡Parece que funciona!!!

Como un reloj, ¡¡¡gracias de nuevo!!! Fue realmente fácil.
 

Amigos, buenas tardes.


Si no le importa decirme cómo resolver tales dificultades:


Estoy escribiendo uno de mis primeros EAs, y me he encontrado con estas dificultades:


1) ¿Es posible "distinguir órdenes" para la misma moneda, pero realizadas en diferentes TFs?

(Por ejemplo, opero con un EA en el mismo par de divisas, en H4 y M30... Hice una operación en H4, y los indicadores muestran movimiento en este TF, pero esta operación se cerró debido a una señal de cierre en M30... y en mi Asesor Experto no se proporciona "usar datos de múltiples TFs")

Es decir, ¿podría distinguir de alguna manera programada estas operaciones en H4 y M30?


2) Mientras escribía el Asesor Experto, tuve un pensamiento obvio :) "Las señales para cerrar una posición, y las señales para abrir la posición contraria invirtiendo" no siempre son buenas....

A menudo, se pierden muchos beneficios antes de que se genere la señal contraria...

Así que decidí usar un trailing stop y formar un objetivo usando Fibonacci.


¿Pueden aconsejar cómo establecer un objetivo (en un EA) como punto de referencia para un determinado nivel de Fibonacci al colocar una orden para una operación?


3) Existe un indicador: BrainTrend1StopN. Por favor, aconseje cómo "tirar" de los topes al nivel de "puntos" generados por este indicador.


Muchas gracias de antemano.
Archivos adjuntos:
Razón de la queja: