[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 410

 
Integer:


Me impresiona el nivel de fantasía. ¿Por qué se muestran datos sólo para algunos símbolos (que no se han abierto) y no para todos los símbolos en la revisión del mercado? ¿Cómo sabe la función RefreshRates() que algunos símbolos deben actualizarse y otros no?

Junko, deja de delirar.


Dmitry, no nos peleemos entre nosotros. Es mejor ayudarse mutuamente, porque tú y Vadim habéis tenido muchos desencuentros últimamente. Me aburrí con mis pensamientos durante un par de días, no visité el hilo, y luego, como de costumbre, fui a revisar todo. Para ser honesto, fue divertido leerlo, ¡realmente divertido! Hay tal escaramuza, y tales discusiones y congresos que sólo me pregunto :) Ocasionalmente frases y palabras abstrusas, pero en realidad un completo sinsentido. No voy a juzgar a nadie, aunque estoy lejos de pensamiento avanzado, yo mismo todavía para aprender a aprender (en algunos lugares a nadar), y luego entendido y ver claramente que el debate ha llegado al absurdo completo.

Parece que es una reunión de profesionales, si no, no lo digo. No puedo decir lo contrario de ti, porque veo que todos entienden lo que hacen. Pero lo interesante es que los profesionales pueden ser propensos a cometer errores cuando no quieren admitirlos. Pero aprendemos de nuestros errores. No hay nada de qué avergonzarse. Por lo tanto, si alguien ha cometido un error, no es necesario salirse del tema, sino confesar. Para decenas de páginas de basura de programadores que se convierten en personalidades, de alguna manera no es una opción. El objetivo de al menos esta rama o foro no es cagarse de pies a cabeza, sino mejorar en la programación y compartir nuestros pensamientos sobre el tema. Así que vamos a vivir juntos. Basta de discusiones.

 
hoz:

Así es. Lees la función línea por línea y entiendes cómo funciona, si estás demasiado aburrido para escribirla tú mismo, y todo encaja...

Tienes un parámetro de la función:

es la hora de apertura de la última barra del día, es decir, se calcularán y sumarán todas las posiciones cerradas antes de la apertura de la barra del día actual. ¿Tiene sentido? Así que pon otro listón, el que se requiere o el que sea. Pero tienes que verlo por ti mismo.


Lo siento, sigue sin funcionar.

Quiero que la función devuelva el beneficio total de hoy, no de hoy.

y por más que lo intente... no funciona. El resultado es toda la historia.

Si restas el ANTES de hoy de todo el historial, obtendrás el total de hoy.

double tm1=GetProfitFromDateInCurrency (Symbol(), -1, -1, iTime (NULL, PERIOD_D1, 0));  
double tm2=GetProfitFromDateInCurrency (Symbol(), -1, -1, TimeCurrent());  

Print(  m2-m1 );

imprime nulo .....

 
Siempre es más fácil que un tonto demuestre serlo a un hombre inteligente que a la inversa, ya que es intrínsecamente más fácil que un hombre inteligente dude.
 
lottamer:


En teoría, si se resta lo que ocurrió ANTES de hoy de toda la historia, se obtiene lo que ha ocurrido hoy.

imprime CERO, por el amor de Dios.....


La idea es entender lo que hace esta función. Y para entenderlo, hay que desglosarlo línea por línea en su totalidad. Ya se lo he dicho. Todo es elemental. Y no tiene sentido ayudar, porque depende de ti si entiendes o no el código de una simple función.

Lo he descrito más arriba.

 
hoz:


Vadim, he ejecutado tu script en un terminal en el que nunca he abierto ningún instrumento aparte de los mayores y los cruces con el yen. De todos modos, aquí hay una captura de pantalla:

No se está bombeando nada porque el conjunto de datos del mercado está vacío, a juzgar por los comentarios.

1. ¿Cómo lo has hecho? Tienes que ejecutarlo sin refrescarlo primero. Es decir, IsRefreshRates = false. Los datos no se actualizarán.

2. Entonces debe ejecutarlo con IsRefreshRates = true. Los datos se actualizarán.

Aquí hay una captura de pantalla 1: pantalla 2:

Observe los tiempos de la barra. También puede ver que MarketInfo() toma los datos de la visión general del mercado.

Aquí está el Asesor Experto. Lo he corregido un poco. Lo he corregido un poco.

extern string Tool           = "AUDNZD"; // Имя инструмента.
extern bool   IsRefreshRates = true;     // Флаг включения обновления таймсерий.
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
 {
  string sTool = Tool; // Имя инструмента.
  if (Tool == "") sTool = Symbol();
  while (!IsStopped())
   {
    if (IsRefreshRates) RefreshRates();
    string sComment = StringConcatenate("MarketInfo() (", sTool, ")\n",
                                        TimeToStr(MarketInfo(sTool, MODE_TIME), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
                                        DoubleToStr(MarketInfo(sTool, MODE_BID), Digits), "  ", DoubleToStr(MarketInfo(sTool, MODE_ASK), Digits),
                                        "\n\nПредопределенные переменные (", Symbol(), ")\n",
                                        TimeToStr(Time[0], TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
                                        DoubleToStr(Bid, Digits), "  ", DoubleToStr(Ask, Digits),
                                        "\n\nМассивы-таймсерии (", sTool, ")\n");
    for (int i = 0; i < 10; i++)
     {
      sComment = sComment + StringConcatenate(TimeToStr(iTime(sTool, 0, i), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "  ",
                                              DoubleToStr(iOpen(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iLow(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iHigh(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iClose(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iVolume(sTool, 0, i), 0), "\n");
     }
    Comment(sComment);
    Sleep(300);
   }
 } 
hoz:


Dimitri, no peleemos. Es mejor ayudarse mutuamente, porque tú y Vadim habéis tenido muchos desencuentros últimamente. Una vez me pasé un par de días en la cabeza, no fui a la sucursal, y luego, como siempre, fui y lo revisé todo. Para ser honesto, fue divertido leerlo, ¡realmente divertido! Hay tal escaramuza, y tales discusiones y congresos que sólo me pregunto :) Ocasionalmente frases y palabras abstrusas, pero en realidad un completo sinsentido. No voy a juzgar a nadie, aunque estoy lejos de pensamiento avanzado, yo mismo todavía para aprender a aprender (en algunos lugares a nadar), y luego entendido y ver claramente que el debate ha llegado al absurdo completo.

Creo que hemos reunido a profesionales. No voy a decir nada de ti por lo demás, porque veo que cada uno entiende lo que hace. Pero lo interesante es que los profesionales son a veces propensos a cometer errores cuando no quieren admitirlos. Pero aprendemos de nuestros errores. No hay nada de qué avergonzarse. Por lo tanto, si alguien ha cometido un error, no hay que salirse del tema, sino confesar. Para decenas de páginas de basura de programadores que se convierten en personalidades, de alguna manera no es una opción. El objetivo de al menos esta rama o foro no es cagarse de pies a cabeza, sino mejorar en la programación y compartir nuestros pensamientos sobre el tema. Así que vamos a vivir juntos. Basta de discusiones.

Víctor, no prestes atención. Hay personas que no pueden formular un pensamiento y no saben construir un discurso razonado. Para ellos, el argumento más convincente es la blasfemia.

Además, estas personas no son receptivas a nada nuevo. Dimitri sigue sin entender cómo se puede trabajar con flujos sin organizar la cola. Ni siquiera ha dado un ejemplo en el que esta cola sea necesaria.

Ahora vuelve a discutir. En lugar de comprobar y argumentar su posición.

 
Zhunko:

Víctor, no estás prestando atención. Hay personas que no pueden formular un pensamiento y no saben construir un discurso razonado. Para ellos, el argumento más poderoso es la blasfemia.

Además, estas personas no son receptivas a nada nuevo. Dimitri sigue sin entender cómo se puede trabajar con flujos sin organizar la cola. Ni siquiera ha dado un ejemplo en el que esta cola sea necesaria.

Ahora vuelve a discutir. En lugar de comprobar y argumentar su posición.


Junko, estás exagerando. Todo lo escrito aquí se aplica directamente a usted. No entiendes de flujos, no entiendes por qué se actualizan los datos, etc., pero pretendes ser un experto, y eso es una mierda. Y tú pretendes ser tan justo.
 
Integer:


El nivel de imaginación es impresionante. ¿Por qué los datos aparecen sólo para algunos símbolos (que no se han abierto), y no para todos ellos en la revisión del mercado? ¿Cómo sabe la función RefreshRates() que algunos símbolos deben actualizarse y otros no?

Junko, deja de delirar.

RefreshRates() actualiza sólo los valores con los que opera el Asesor Experto. Así es como se descubre. Del asesor experto. Hace tiempo alguien de Metakvot escribió sobre ello.
 
hoz:


La idea es entender lo que hace esta función. Y para entenderlo, hay que desmontarlo línea por línea. Ya te lo he dicho. Todo es elemental. Y no tiene sentido ayudar, porque depende de ti si entiendes el código de una simple función o no.

Lo he descrito más arriba.


Me lo imaginé.

en general, la función devuelve el beneficio total, pero sólo del periodo que se establece en la pestaña de Historia. y lo cambia a lo largo del camino inmediatamente si se cambia el periodo en la pestaña de HISTORIA

No lo necesito.

Lo necesito para fijar el periodo por un parámetro dado.

Estoy tratando de cambiar la función en sí...

double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=iTime (NULL, PERIOD_D1, 0)   )
{
  double p=0;
  int    i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (dt<OrderCloseTime()) {
              p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
  return(p);
}

pero el compilador se queja de que

'iTime' - inicialización esperada

¿Qué debo añadir?

 
Zhunko:
RefreshRates() sólo actualiza lo que el Asesor Experto está trabajando. Así es como se descubre. Del asesor experto. Hace tiempo alguien de Metakvot escribió sobre ello.

No des a las funciones del lenguaje de programación unas características y propiedades místicas que no tienen.

 
En la página anterior, al final, escribí sobre lo que actualiza los datos.
Razón de la queja: