[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 600

 
r772ra:


Todos los indicadores, incluidos los estándar, se redibujan en la barra 0.

Un consejo... Si tienes una pregunta como esta, hay una función como esta:

bool VentanaPantalla( string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
Guarda la imagen del gráfico actual en un archivo GIF. En caso de fallo devuelve FALSE. Para obtener información sobre el error es necesario llamar a la función GetLastError().

La captura de pantalla se guarda en el directorioterminal_experts\files (directorio terminal\tester\files en caso de probar el Asesor Experto) o sus subcarpetas.


No todos, pero sí algunos, y no sólo en barra cero, sino en general, estoy completamente de acuerdo contigo en que es más caro trabajar en barra cero.

Estoy muy confundido. No puedo entender cómo una captura de pantalla puede ayudar a resolver el problema?

 
rigonich:


En realidad, no todos, y algunos no sólo en barra cero, pero en general estoy absolutamente de acuerdo contigo en que trabajar en barra cero es "más caro".

Estoy muy confundido. No puedo entender cómo una captura de pantalla puede ayudar a resolver un problema?


WindowScreenShot hace una captura de pantalla de un gráfico, creo que está claro. Si lo pones justo después de la función de abrir una posición,

ya sabes, la pregunta que surge es POR QUÉ ?????? Echemos un vistazo a la imagen.

 
r772ra:


WindowScreenShot toma una instantánea del gráfico, creo que esto está claro. Si lo pones justo después de la función de apertura de posiciones,

ya ves, se ha planteado la cuestión de POR QUÉ ?????? Ver foto.


Hay un asistente de este tipo .
 
r772ra:

Hay un asistente de este tipo.

Lo tengo. Gracias. Interesante, tendré que probarlo.
 
rigonich:

Para responder con mayor precisión, es necesario mirar el código de un EA. Esto suele ocurrir cuando no tenemos en cuenta algunas peculiaridades de cómo funciona un EA con indicadores a llamar. Los Asesores Expertos no calculan los valores de los indicadores por sí mismos, sino que los toman de los búferes de los indicadores ya preparados. Por eso, si necesitas, por ejemplo, recordar los valores anteriores del indicador o alguna otra cosa, que el indicador hace por sí mismo, tienes que incluir todo esto en tu Asesor Experto. Y a veces hay indicadores "torcidos", pero creo que tienes un estocástico estándar y no tiene nada que ver.


Gracias por la respuesta, pero no me ayudó mucho, una vez más voy a publicar el problema, tal vez alguien más tiene algunas ideas sobre este tema?

Buenas tardes por favor ayuda, no puedo entender por qué se abren órdenes no deseadas ((, en la captura de pantalla están rodeadas de rojo, se adjunta el código...

Archivos adjuntos:
 
rigonich:

Si es así, depende de los desarrolladores de la ayuda.


Los desarrolladores no han tenido nada que ver. :__

En lugar de ( Hour()>=10 || Hour()<20 ) deberías haber hecho un simple Hour()>=10 && Hour()<20

y todo funcionó.

 
Chicos, ¿podrían decirme cómo hacer que el probador muestre las operaciones y los indicadores utilizados en el EA en la ventana de visualización?
 

Por favor, indíquenos dónde mirar para ver cómo está codificada la condición "Si la última operación de toma de beneficios fue > 0 entonces....".

es decir, la contabilización de las operaciones ya cerradas (automáticamente) .

 
lottamer:

Por favor, indíquenos dónde mirar para ver cómo se codifica la condición "Si la última operación de toma de beneficios fue > 0 entonces....".

es decir, la contabilización de las operaciones ya cerradas (automáticamente).


https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

Función isCloseLastPosByTake().

Esta función devuelve una bandera para cerrar la última posición de Takei. Se levanta la bandera - Verdadero - Se ha activado el TakeProfit. Bandera bajada - Falso - la posición se cerró debido a otra razón. Una selección más precisa de las posiciones a considerar se especifica mediante parámetros externos:

  • sy - Nombre del instrumento de mercado. Si establece este parámetro, la función sólo tendrá en cuenta las posiciones del instrumento especificado. El valor por defecto "" significa cualquier instrumento de mercado. NULL significa el instrumento actual.
  • op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
  • mn - Identificador de posición, MagicNumber. El valor por defecto -1 significa cualquier identificador.
  • //+----------------------------------------------------------------------------+
    //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
    //+----------------------------------------------------------------------------+
    //|  Версия   : 19.05.2008                                                     |
    //|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
    //+----------------------------------------------------------------------------+
    //|  Параметры:                                                                |
    //|    sy - наименование инструмента   (""   - любой символ,                   |
    //|                                     NULL - текущий символ)                 |
    //|    op - операция                   (-1   - любая позиция)                  |
    //|    mn - MagicNumber                (-1   - любой магик)                    |
    //+----------------------------------------------------------------------------+
    bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
      datetime t;
      double   ocp, otp;
      int      dg, i, j=-1, 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=="") {
            if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (op<0 || OrderType()==op) {
                if (mn<0 || OrderMagicNumber()==mn) {
                  if (t<OrderCloseTime()) {
                    t=OrderCloseTime();
                    j=i;
                  }
                }
              }
            }
          }
        }
      }
      if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
        dg=MarketInfo(sy, MODE_DIGITS);
        if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
        ocp=NormalizeDouble(OrderClosePrice(), dg);
        otp=NormalizeDouble(OrderTakeProfit(), dg);
        if (ocp==otp) return(True);
      }
      return(False);
    }

 
BeerGod:

https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

La función isCloseLastPosByTake().

Esta función devuelve una bandera para cerrar la última posición por Take Profit. La bandera está levantada - Verdadero - El TakeProfit se ha activado. Bandera bajada - Falso - la posición se cerró debido a otra razón. La selección más precisa de las posiciones a considerar se realiza mediante parámetros externos:

  • sy - Nombre del instrumento de mercado. Si se establece este parámetro, la función sólo tendrá en cuenta las posiciones del instrumento especificado. El valor por defecto "" significa cualquier instrumento de mercado. NULL significa el instrumento actual.
  • op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
  • mn - Identificador de posición, MagicNumber. El valor por defecto -1 significa cualquier identificador.




Gracias, yo mismo me encontré con las Bibliotecas de KIM...(El camarada Kim aparentemente como MARX del mundo del forex - escribió CAPITAL...y todos lo citamos ahora (es decir, lo insertamos en nuestros EAs)) .... hay "banderas" de operaciones recientes en diferentes variaciones...

excepto que nunca he utilizado # includ-....

¿puede explicarlo en pocas palabras?

en la parte superior escribo # includ (nombre del archivo mqh)

Pero en el código, ¿dónde pongo la función?

GetTypeLastClosePos ();

¿Y luego qué?

¿QUÉ me devolverá el tipo de posición?

int GetTypeLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}

OrderType() ?

es decir, si(OrderType() ==TRUE ) hace esto y aquello... ¿verdad?