[¡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 332
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Estoy tratando de escribir un indicador. La idea es simple: vamos a promediar (fuerza de los toros - fuerza de los osos). Naturalmente, durante un periodo de tiempo determinado.
int inicio()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,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);
Buf_0[i]=MA_Bulls[i];
i--;
}
volver;
}
Sólo muestro los toros suavizados Buf_0[i]=MA_Bears[i]; se hace para controlar en cierta etapa del trazado del índice. Ni siquiera EXACTAMENTE. Si los aliso con un período de 1, de hecho deben repetir toros incrustados. ¡¡¡¡Por lo tanto, llegué a la conclusión de que algo está mal en la línea MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i); No entiendo qué exactamente...AYUDA me!!!! Han sido 3 días de mirar manuales y documentación. ¡GRACIAS!
Primero deberías formar las matrices de datos de toros y osos y luego suavizarlas con el siguiente ciclo, porque aún no lo has formado y ya estás usando el suavizado, no hay datos para suavizar...
Primero formar las matrices de datos de toros y osos y luego usar el siguiente ciclo para plancharlos, porque aún no lo has formado y ya estás usando el suavizado, y no hay datos para suavizar?
Traducción de
costy_ писал(а) >>
Muchas gracias, me estoy acercando. Hay un punto que no está del todo claro.
'14:56' - la cadena literal de fecha está incompleta esta es la advertencia que recibí del ordenador.
Por lo que entiendo, sigue queriendo la fecha, pero no necesito una fecha concreta, lo que quiero es comparar el precio actual cada día con el precio a una hora determinada del mismo día. Por favor, aclare el punto.
¿Por qué tienes que llamarlos a través de iCast? ¿Es por la unificación? Escriba un envoltorio de indicador separado para cada uno de ellos y llámelos a través de iCustom...
El problema es que he cambiado estos dos indicadores (AO y AC) y ahora quiero que las barras se coloreen según los indicadores modificados. ¿O hay alguna otra forma de hacerlo? Hace poco empecé con MQL...
El problema es que he rehecho los dos indicadores (AO y AC), y ahora quiero que las barras se coloreen según los indicadores modificados. ¿O hay alguna otra forma de hacerlo? Hace poco que empecé a aprender MQL...
Entonces, lo que has rehecho y lo llamas, ¿cuál es el problema? Por ejemplo, si los indicadores modificados se llaman AO, AC, la llamada será
o puede añadir sus propios parámetros
Muchas gracias, me estoy acercando. Hay un punto que no está del todo claro.
'14:56' - la cadena literal de fecha está incompleta esta es la advertencia que recibí del ordenador.
Por lo que entiendo, sigue queriendo la fecha, pero no necesito una fecha concreta. Lo que necesito es comparar el precio actual cada día con el precio a una hora determinada del mismo día. Por favor, aclare el punto.
costy_ писал(а) >>
Muchas gracias, me estoy acercando
.Hay un punto que no está del todo claro.
'14:56' - date literal string is incomplete - este es el aviso que me ha dado el ordenador.
Entiendo que sigue queriendo la fecha, pero no necesito una fecha concreta, necesito comparar el precio actual cada día con el precio de una hora determinada del mismo
día. Porfavor, aclare el punto.
Sin embargo, quiero saber si es posible mantener la unión a un tiempo determinado. En MQL4, ¿cómo se dice el precio de oferta a las 14.00 de cada día de negociación?
skifodessa 05.12.2009 14:07
Buenas tardes a todos.
Por favor, díganme cómo calcular el número de cruces del precio de un determinado nivel. Quiero que mi orden se abra después de 3 (4,5...), pero no después del primer cruce.
Gracias.
------------------------------------------------------------
Puedes probar el algoritmo
Si (Precio de la barra actual>precio de la barra anterior<nivel)entonces {el contador se incrementa en uno}
Si (contador>3) entonces {abrir orden; poner el contador a cero}
Ahora escribamos lo mismo en el lenguaje habitual (estoy escribiendo sólo bloques, puedes insertarlos en los lugares necesarios)
Extern int Chet=10; // después de cuántos cruces se debe abrir una orden
Extern double Uroven=1.6566; // después de que el precio haya cruzado que nivel empezar a contar.
En la función de inicio, las condiciones serán aproximadamente las siguientes
int k;
if(Open[0]> U roven&& Open[1]<Uroven)k=k+1;// aquí consideramos un cruce UP
if(k>Chet){OrderSend(.......);k=0};
En general, la pregunta no es muy difícil. El libro sobre ACM explica los fundamentos de la ALGORITMIA
FOR Vinin escribió >>.
Gracias por el consejo, pero no sirve de nada. Porque acabas de sustituir el bucle While por un bucle FOR.
FOR Urain escribió(a) >>
Las siguientes dos líneas están formando la matriz correcta.
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Urain Debes haber pensado que la función iMAOnArray debe pasar un array ya formado. Formarlo con el bucle FOR no ha servido de nada. Eso es porque no es el array pasado a esta función (iMAOnArray) sino su NOMBRE. Y la matriz se procesa PERSONALMENTE.
cambiando i en la cadena MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i);
He resuelto el problema. Es mucho más profundo de lo que parece. Si aplicas este procesamiento sólo en el Asesor Experto, no hay problemas, pero si construyes un gráfico usándolo, tendrás un problema de todos modos. La cuestión es que las matrices están indexadas de forma inversa. La función iMAOnArray tiene una indexación directa (de izquierda a derecha), mientras que el gráfico está indexado de derecha a izquierda. Gracias a Garfich por esta explicación.
FOR Vinin escribió >>.
Gracias por el consejo, pero no sirve de nada. Porque acabas de sustituir el bucle While por un bucle FOR.
FOR Urain escribió(a) >>
Las siguientes dos líneas están formando la matriz correcta.
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Urain Debes haber pensado que la función iMAOnArray debe pasar un array ya formado. Formarlo con el bucle FOR no ha servido de nada. Porque no es el array que se pasa a esta función (iMAOnArray), sino su NOMBRE. Y la matriz se procesa PERSONALMENTE.
cambiando i en la cadena MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i);
He resuelto el problema. Es mucho más profundo de lo que parece. Si aplicas este procesamiento sólo en el Asesor Experto, no hay problemas, pero si lo usas para construir un gráfico, tendrás un problema de todos modos. La cuestión es que las matrices están indexadas de forma inversa. La función iMAOnArray tiene una indexación directa (de izquierda a derecha), mientras que el gráfico está indexado de derecha a izquierda. Gracias a Garfich por esta explicación.
No sé cuál era el problema, pero Vinin lo escribió correctamente (da igual for o while), lo principal es que primero el bucle forma el array de datos y luego el siguiente bucle forma el iMA a partir de él,
y la cadena Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i); rellena sólo un valor i-ésimo de la matriz
sin un bucle, el array no se generará.