¿Cuándo tiene sentido mantener parte del código del robot en un indicador? - página 23

 
Vinin:

El valor de la EMA en la interrupción de la comunicación se toma incorrectamente. Se toma como el último calculado. Pero esto es incorrecto. Como resultado, la función funcionará incorrectamente no en n barras sino en un número mucho mayor de barras. Si se guardan los valores, por supuesto

Al parecer, no entraron en el código. Comentado:

// Комментирую для такого случая. Крайний известный M1-бар был в 14:00.
// Произошел разрыв связи на 10 минут после чего происходит вызов start.
void start()
{
  EMA = GetEMA();
  
  return;  
}

double GetEMA()
{
  static int PrevTime = 0;
  
  if (PrevTime == Time[0]) // Выпонится, когда история за крайние 10 минут подгрузится.
                           // Если истории не было, например, сутки, то может произойти ошибка.
                           // Но мы говорим про РЕАЛ, т.е. адекватность человека.
                           // Т.к. если нет связи сутки, советник оставлять нельзя.
    return(EMA);

  int i = iBarShift(Symbol(), Period(), PrevTime) - 1; // Здесь мы получим номер бара в 14:01.

  PrevTime = Time[0]; // запомним текущее время 14:10
  
// Производим расчет текущего EMA с учетом полученных 10 баров.
  while (i >= 0)
  {
    EMA = EMA * Alpha + (1 - Alpha) * GetPrice(i);
    
    i--;
  }
  
  return(EMA);
} 
 
Cuando dije error y adecuación, no quise decir que esto se aplicara sólo al caso "todo en uno", sino también al caso "con indicador".
 
hrenfx:
Cuando dije error y adecuación, me refería a la aplicabilidad de esto no sólo al caso "todo en uno", sino también al caso "con indicador".


La conversación no funciona, al parecer alguien no quiere escuchar un poco de crítica.

Podemos concluir que esta rama es inútil

 
Vinin:


No estoy teniendo una conversación, al parecer alguien no quiere escuchar un poco de crítica.

Se podría concluir que este hilo es inútil

Mira, no hay necesidad de objetar. Incluso he comentado su código. ¿Qué es lo que no le gusta? ¿Cree que el ejemplo de un intervalo de 10 minutos que me ha dado da lugar a un error? Lo he dejado muy claro. Dices que hay un error, para ver dónde está. Entonces no seas perezoso, muéstrame dónde está. Ya lo has identificado.

P.D. Eres la segunda persona que se entretiene. Y no digas que no lo entiendo. Muéstrame claramente dónde está el error. Si me equivoco, lo admito. No me servirá de nada.

 
hrenfx:

Mira, no hay necesidad de ser evasivo. Incluso he comentado su código. ¿Qué es lo que no le gusta? ¿Cree que el ejemplo de la brecha de 10 minutos que le di provoca un error? He sido muy específico por mi parte. Dices que hay un error, para ver dónde está. Entonces no seas perezoso, muéstrame dónde está. Ya lo has identificado.

P.D. Eres la segunda persona que se entretiene. Y no digas que no lo entiendo. Muéstrame claramente dónde está el error. Si me equivoco, lo admito. No me servirá de nada.


Alguien no quiere pensar. No puedo hacerlos, y no quiero.
 
Vinin:

Simplemente alguien no quiere pensar. No puedo obligarles, ni quiero hacerlo.


Maldita sea, nadie ha elaborado. Otra vez el agua. Varias personas (conozco muy bien MT4+MQL4) me dicen que mi código funcionará con un error pero no puedo dar un ejemplo-argumento concreto (lo he pedido varias veces). Y esto en un código de sólo 10 líneas.

Por qué no pones el código de Integer y mi código en un hilo separado y preguntas a los programadores de MQL4 qué es lo que está mal en el código. Y tú, como moderador, te aseguras de que no haya inundaciones. En este caso, el código ni siquiera se encuentra.

Creo que será útil para la comunidad MQL4.

 
hrenfx:

Mira, no hay necesidad de objetar. Incluso te he comentado el código. ¿Qué es lo que no le gusta?

El precio será lo primero. Luego vendrán los bares. Cuando lleguen las barras, ya habrán sido "más o menos" procesadas, pero en realidad están en paradero desconocido debido a su ausencia en el momento del procesamiento.

Es la segunda vez que lo digo.

 
TheXpert:

El precio será lo primero. Luego vendrán los bares. Cuando lleguen los bares, estarán "más o menos" procesados, pero de hecho no se tendrán en cuenta porque no estaban disponibles en el momento del procesamiento.

Sí, el precio llegará primero pero la condición if (PrevTime == Time[0]) se activará todo el tiempo hasta que haya una nueva barra

Usted entiende que si llega una nueva barra, sin ninguna paginación de los últimos 10 minutos, el EA con el indicador recibirá valores erróneos de EMA antes de la paginación del historial. Como resultado, el EA hará cualquier cosa.
 
hrenfx:


Cielos, nadie lo ha elaborado. Otra vez el agua. Varias personas (conocen muy bien MT4+MQL4) me dicen que mi código funcionará con errores pero no pueden dar un ejemplo-argumento concreto (lo he pedido varias veces). Y esto en un código de sólo 10 líneas.

Tal vez podría poner el código de Integer y mi código en un hilo separado y preguntar a los programadores de MQL4 lo que está mal en el código. Y tú, como moderador, te aseguras de que no haya inundaciones. En este caso, el código ni siquiera se encuentra.

Creo que será útil para la comunidad MQL4.


Proporcioné la lógica para un algoritmo viable. No funcionó. Siento no haber podido pasar.
 
hrenfx:
Sí, el precio vendrá primero, pero hasta que haya una nueva barra, la condición if (PrevTime == Time[0]) se activará todo el tiempo.
No, el precio será en una nueva barra. Esto se puede ver claramente cuando se enciende el terminal. Al principio la barra parece un punto.
Razón de la queja: