[¡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 601

 
¿En qué se diferencian las funciones del probador de las del comercio en línea?
 
En teoría, el manejo de errores en la comunicación con el servidor de comercio.
 
lottamer:


Gracias, yo mismo me encontré con las Bibliotecas de KIM ... (El camarada KIM probablemente escribió CAPITAL como MARCAS del mundo Forex ... y todos lo citamos ahora (es decir, insertarlo en nuestros Asesores Expertos) ...) hay "banderas" de operaciones recientes en diferentes variaciones...

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

¿puede explicarlo en pocas palabras?

en la parte superior escribo # include (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?

OrderType() ?

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

Las funciones deben insertarse después de return(0);

La función GetTypeLastClosePos() devolverá 0 si hubo una compra, y 1 si hubo una venta, o -1 si no hubo nada en el historial.

//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
if (isCloseLastPosByTake()==true) Comment("Профит"); else Comment("ХЗ");   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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:

La función debe insertarse después de return(0);

La función GetTypeLastClosePos() devolverá 0 si hubo una compra y 1 si hubo una venta, o -1 si no hay nada en el historial.



Entendido, gracias.

Sin embargo, si la función se encuentra en un archivo #include, ¿cómo debe tratarse?

 
lottamer:


Entendido, gracias.

y, sin embargo, si la función está en un archivo #include, ¿cómo se deshace de ella?


¿cómo se entiende #include?

¿Como en el documento o a tu manera?

 

Necesito que el búho ponga una orden pendiente exactamente en la apertura de una vela en D1.

He escrito una función:

bool GetTimeToInput()
{
  if(TimeCurrent() == iTime(Symbol(),1440,0)
  {
    return(true);
  }
  else
    return(false);
}

El compilador frunce el ceño:

'\end_of_program' - unbalanced left parenthesis E:\Insall'd soft's\Forex\Alpari NZ MT4\experts\Gann_2Days.mq4 (228, 4)

Todo el mundo tiene paréntesis. Esto es extraño. Si se comenta esta función, el código se compila sin errores. ¿Qué puede estar mal?

¿Estoy en lo cierto al escribir la función para que se abra sólo al precio de apertura de una vela diaria?

 

hoz:

Todos los soportes están ahí, es extraño.

no. te falta el perro correcto en la línea if


y tal vez no digas la palabra "raro" cuando se trata del compilador. Por supuesto, es difícil ver la viga en tu propio ojo :)

¿Y realmente escribí la función correcta para abrir sólo al precio de apertura de la vela del día?

no
 
lottamer:


Los desarrolladores no han tenido nada que ver. :__

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

y todo funcionó


La cuestión no es que haya funcionado, sino que si la ayuda está escrita correctamente, no debería funcionar.
 
sergeev:

¿cómo se entiende #include?

como en la Doka o a tu manera?


como en el Doka.

hay un archivo.

Hay una referencia a ello en la EA.

Esto es suficiente para utilizar en cualquier lugar de la EA, por ejemplo, de la siguiente manera

si isCloseLastPosByTake()<0... ?

 
rigonich:

La cuestión no es que haya funcionado, sino que si la referencia está escrita correctamente, no debería funcionar.


el certificado dice una mierda sobre el número de segundos transcurridos desde el 1 de enero de 1970 :))))))

No sé qué pensar...

Razón de la queja: