Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1448

 
Alexey Viktorov:

Bueno, gracias... Al menos me vi a mí mismo hace seis años... Estaba igual que tú ahora. No me lo pensé dos veces a la hora de aconsejar de forma equivocada.

En cuanto a la plantilla: Si la plantilla tiene un indicador, pero no un EA, entonces la plantilla se cargará sin el EA... ¿Y si la plantilla tiene un EA? ¿Estás seguro de que el EA, cargado en la plantilla, no aplicará la plantilla y por lo tanto fijará y colgará el terminal?

no lo hace - ¡todo funciona bien!

 
SanAlex:

No tengo ningún problema, todo funciona bien.

No seas perezoso como yo. Haz un vídeo de esas manipulaciones :-)))

 
Vitaly Muzichenko:

Ahora he llegado a depurar la construcción "SmoothedMAOnBuffer()" en mt4.

Lo que pasa, no lo entiendo en absoluto.

Lo he escrito cientos de veces: eliminar la función del bucle.

En lugar de esta mierda:

ArrayResize(buff, counter);
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);
   for(i = 0; i < counter - a; i++) {
     // buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i); // Так индикатор работает
      SmoothedMAOnBuffer(counter, prev_calculated, i, period, Array_1, buff); Совсем не работает, но и ошибок в журнале нет
      buf_3[i] = buff[0]; ???
   }
   for(i = counter - a; i > 0; i--) {
      Array_2[i] = Array_2[i + 1];

Escribe así:

ArrayResize(buff, counter);
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);

if(SmoothedMAOnBuffer(counter, prev_calculated, i, period, Array_1, buff)==0)
   return 0;

for(i = counter - a; i > 0; i--) {
   Array_2[i] = Array_2[i + 1];

La llamada de esta función es un bucle completo de datos de suavizado en Array. Los datos suavizados de esta matriz estarán en la matriz buff - simplemente tome los datos suavizados que necesita de ella.

 
Alexey Viktorov:

No seas perezoso como yo. Haz un vídeo de esas manipulaciones :-)))

Es una pena que no haya visitado tu perfil antes. Tienes unos códigos muy buenos. Me gusta mucho este.https://www.mql5.com/ru/code/16396

EURGBPH1

TralingLine
TralingLine
  • www.mql5.com
Виртуальный Stop Loss или Trailing Stop.
 
Artyom Trishkin:

Te lo he dicho cientos de veces: elimina la función del bucle.

En lugar de esta mierda:

escríbelo así:

Te digo - la llamada de esta función es un ciclo completo de datos de suavizado en Array. Los datos suavizados de esta matriz estarán en la matriz buff - simplemente tome los datos suavizados que necesita de ella.

¡Gracias!, funciona.

SmoothedMAOnBuffer(rates_total, prev_calculated, count, period, Array_1, buf_3);

No entiendo cómo funciona, voy a intentar averiguarlo ahora.

 
Artyom Trishkin:

Te lo he dicho cientos de veces: elimina la función del bucle.

En lugar de esta mierda:

escríbelo así:

Te digo - la llamada de esta función es un ciclo completo de datos de suavizado en Array. Los datos suavizados de esta matriz estarán en la matriz buff - simplemente tome los datos suavizados que necesita de ella.

No conseguí aplicarlo todo ni mucho menos, estuve más de 4 horas.

Al principio se muestra correctamente, luego no se actualiza - se congela, con el estándar funciona bien.

   double Array_1[];
   double Array_2[];
   int i=0;
   int period = (int)MathFloor(MathSqrt(a));
   int val = (int)MathFloor(a / 1.9);
   int bars=rates_total;
   int counter = bars - prev_calculated + a + 1;
   if(counter > bars)
      counter = bars;
   ArrayResize(Array_1, counter);
    ArraySetAsSeries(Array_1, true);
   ArrayResize(Array_2, counter);
    ArraySetAsSeries(Array_2, true);

   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val) - ma_1(i, a);
  //  for(i = 0; i < counter - a; i++)
  //  buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i);
   SmoothedMAOnBuffer(rates_total, prev_calculated, prev_calculated, period, Array_1, buf_3); // Где-то здесь не правильно вписаны параметры

---

¿Qué tengo que introducir?

En MT5 no me muestra nada en absoluto.

Archivos adjuntos:
test.mq4  13 kb
 
Vitaly Muzichenko:

No pude aplicarlo todo de ninguna manera, pasé más de 4 horas.

Al principio se muestra correctamente, luego no se actualiza - se congela, funciona bien con el estándar

---

¿Qué tengo que introducir?

No sé qué está pasando en MT5.

¿Puede explicar qué quiere obtener como resultado?

Su indicador está construido de la manera que necesita para mostrar a la gente cómo no hacerlo :)

Los topes dibujados y calculados están mezclados. Los calculados deben ser los últimos de la fila - no se pueden mezclar al azar por desgracia.

No funcionará para un cinco porque la función ma_1() en un cinco devolverá un mango, no un valor MA.

En la función SmoothedMAOnBuffer(), se pasa prev_calculado en lugar de principio de datos significativos en el array - ¿para qué? Es necesario pasar allí al menos 0, y como máximo - un valor calculado en función del período de cálculo de los datos MA almacenados en Array_1 - bueno, al menos período

En el bloque de la elección del color a dibujar, tienes un error lógico - sobrescribes los buffers - simplemente pon un valor en blanco fuera de los paréntesis. Usted tiene una condición, y lo que se debe hacer en caso de la verdad se pone fuera de paréntesis. Es decir, siempre se ejecuta. Esto es una consecuencia del hábito de disposición de los paréntesis, cuando su ubicación no es claramente visible.

Array_1 y Array_2 - ¿por qué no son buffers calculados?

En definitiva, hay muchas preguntas.

El valor de la variable a se establece estrictamente. ¿Por qué calcular el valor de la variable val en cada tick ?

Hacer dos buffers calculados para dos variables, calculadas con el periodo a y val en OnInit(). A partir de estos búferes y tomar los valores - que funcionará para ambas plataformas entonces.

 
Artyom Trishkin:

¿Puede poner en palabras lo que quiere terminar?

Su indicador está construido de la manera que necesita para mostrar a la gente cómo no hacerlo :)

Los buffers de dibujo y de cálculo están mezclados. Los calculados deben ser los últimos de la fila - no se pueden mezclar al azar por desgracia.

No funcionará para un cinco porque la función ma_1() en un cinco devolverá un mango, no un valor MA.

En la función SmoothedMAOnBuffer(), se pasa prev_calculado en lugar de principio de datos significativos en el array - ¿para qué? Es necesario pasar allí el mínimo 0, y el máximo - un valor calculado en función del período de cálculo de los datos MA almacenados en Array_1 - bueno, al menos el período

En el bloque de la elección del color a dibujar, tienes un error lógico - sobrescribes los buffers - simplemente pon un valor en blanco fuera de los paréntesis. Usted tiene una condición, y lo que se debe hacer en caso de la verdad se pone fuera de paréntesis. Es decir, siempre se ejecuta. Esto es una consecuencia del hábito de disposición de los paréntesis, cuando su ubicación no es claramente visible.

Array_1 y Array_2 - ¿por qué no son buffers calculados?

En definitiva, hay muchas preguntas.

El valor de la variable a se establece estrictamente. ¿Por qué calcular el valor de la variable val en cada tick ?

Hacer dos buffers calculados para dos variables, calculadas con el periodo a y val en OnInit(). A partir de estos búferes y tomar los valores - que funcionará para ambas plataformas entonces.

Si supiera la solución, no lo habría escrito.

El indicador no es mío, ni siquiera he mirado debajo de iMAOnArray(), toda la tarea es sólo para reemplazar iMAOnArray() con algo.

¿Puedo tener un ejemplo de cómo debería ser?

Gracias.

P.D. Para mt5 los mangos están bien
Archivos adjuntos:
max.mq5  14 kb
 
Vitaly Muzichenko:

¿Puedo tener un ejemplo de cómo debería ser?

¿Un ejemplo de trabajo de qué? ¿Un indicador de cuatro que funciona en cinco? Entonces dame un indicador que funcione a partir de cuatro.

¿O un ejemplo de cómo trabajar con la función SmoothedMAOnBuffer()?

 
Artyom Trishkin:

¿Un ejemplo de trabajo de qué? ¿Un indicador de cuatro que funciona en cinco? Entonces dame un indicador que funcione a partir de cuatro.

¿O un ejemplo de cómo trabajar con la función SmoothedMAOnBuffer()?

Un ejemplo de trabajo de mt4, con el estándar iMAOnArray está actualizando, pero SmoothedMAOnBuffer en la primera ejecución está bien, y luego no hay actualización

Necesito un ejemplo de trabajo conSmoothedMAOnBuffer( )

Archivos adjuntos:
test.mq4  17 kb