Funciones útiles de KimIV - página 117

 
tim-time:

...añadir notificaciones PUSH a SU EAe-SignalOfTrade ?

Hecho... descargar desde mi página web...
 
KimIV:

He creado la función ErrorRU(), que devuelve una descripción rusa corta o detallada de un error por su código. Se detectan tanto los errores devueltos por el servidor comercial como los errores de ejecución de los programas MQL. Sin embargo, no todos los errores tienen una descripción detallada con recomendaciones de "Qué hacer", pero así es.

Estoy publicando la función en el script para probarla.

Si alguien necesita una variación en forma de archivo MQH, puede obtenerla en mi sitio web.


Saludos Igor. Gracias por la función, es muy útil
 

Hola KimIV.

Usted tiene una función maravillosa i-Profit.mq4 en su sitio web.

¿Podría decirme cómo extraer los datos de la balanza?

// 0 - saldo actual

// 1 - balance al principio del día.

// 2 - balance al principio de la semana.

// 3 - balance al principio del mes

// 4 - saldo al principio del trimestre

// 5 - saldo al principio del año

// 6 - balance a la fecha del usuario

 

La función ProfitByPrice().

Esta función forma parte de mi pequeño conjunto de funciones predictivas. Predictivos en el sentido de que muestran el futuro, es decir, responden a la pregunta: "¿Qué pasará si ocurre algún acontecimiento? Esta función, por ejemplo, devuelve un beneficio en la moneda del depósito si las posiciones actuales se cierran al precio pasado como parámetro.

  • op- Operación comercial, tipo de posición. Valores válidos: OP_BUY,OP_SELL o-1. El valor por defecto-1 significa cualquier operación comercial.
  • mn- Identificador de posición, MagicNumber. El valor por defecto-1 significa cualquier identificador.
  • cp- Precio de cierre previsto. El valor por defecto0 significa el precio de oferta actual.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2013                                                     |
//|  Описание : Возвращает профит в валюте депозита, если текущие позиции      |
//|             будут закрыты по цене, переданной в качестве параметра.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - операция                             (-1 - любая позиция)          |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//|    cp - цена предполагаемого закрытия (Bid)  ( 0 - текущая цена)           |
//+----------------------------------------------------------------------------+
double ProfitByPrice(int op=-1, int mn=-1, double cp=0) {
  double pr=0;
  double po=MarketInfo(Symbol(), MODE_POINT);
  double sp=MarketInfo(Symbol(), MODE_SPREAD);
  double tv=MarketInfo(Symbol(), MODE_TICKVALUE);
  int    i, k=OrdersTotal();

  RefreshRates();
  if (cp<=0) cp=Bid;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(pr);
}

ZZY. Se adjunta un script tradicional para probar la función.

ZZZY. No hay un sy tradicional entre los parámetros ya que el precio pasado en el otro parámetro debe estar vinculado a un instrumento comercial. Decidí no molestarme demasiado con él y vincularlo al símbolo actual.

Archivos adjuntos:
 
Querido Igor, ¡gracias por tus funciones que facilitan nuestros primeros pasos en la programación! ¡Podrían ayudarme, necesito una función para cerrar una posición, pero sin hacer referencia a otras funciones, pero que tenga Select, 3 intentos y manejo de errores! Y al principio prescribiría condiciones con funciones de control sin Select para no ralentizar el proceso. Hasta ahora estoy usandoun bucle Selekt en el iniciocon varias comprobaciones, llamando a la función de cierre sin Selekt, lo que ralentiza casi el doble ¿Qué me podéis aconsejar? Gracias.
 

KimIV:

Necesitamos establecer una orden pendiente a un precio de liquidación, siempre y cuando no haya otras órdenes o posiciones a una distancia de Distanc de ese precio. No parece que tenga esa función: ¿la existencia de una orden o posición a distancia de un precio determinado?

 
¡Supongo que KimIV no mira aquí! :(
 
khorosh:

KimIV:

Necesitamos establecer una orden pendiente a un precio de liquidación, siempre y cuando no haya otras órdenes o posiciones a una distancia de Distanc de ese precio. Parece que no tiene esa característica: ¿La existencia de una orden o una posición a distancia de un precio determinado?


Puedes dibujar algo parecido a esto...

actualizar...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 24.06.2013                                                     |
//|  Описание : Возвращает флаг существования ордера или позиции               |
//|             около заданной цены.                                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    zp - заданная цена                                                      |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от цены    (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearPrice(double zp, string sy="", int op=-1, int mn=-1, int ds=1000000) {
  int i, k=OrdersTotal(), ot;

  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (MathAbs(OrderOpenPrice()-zp)<ds*p) return(True);
        }
      }
    }
  }
  return(False);
}

Se adjunta un script para probar la función ExistOPNearPrice()

Archivos adjuntos:
 
borilunad:
Querido Igor, ¡gracias por tus funciones que facilitan nuestros primeros pasos en la programación! ¡Podrían ayudarme, necesito una función para cerrar una posición, pero sin referencia a otras funciones, pero que tenga Select, 3 intentos y manejo de errores! Y al principio prescribiría condiciones con funciones de control sin Select para no ralentizar el proceso. Hasta ahora estoy usandoun bucle Selekt en el iniciocon varias comprobaciones, llamando a la función de cierre sin Selekt, lo que ralentiza casi el doble ¿Qué me podéis aconsejar? Gracias.
¿No es ClosePosBySelect()?
 
artmedia70:
¿No es ClosePosBySelect() algo?
Es eso, pero no eso, ¡un montón de llamadas innecesarias a otras funciones con los consiguientes errores!