Funciones útiles de KimIV - página 52

 

La función IIFc().

Una función muy práctica en cuanto a la construcción de horquillas. Si es así, este color. Y si no lo es, entonces otro color. La función IIFc() toma tres parámetros obligatorios:

  • condición - Una expresión lógica. Puede ser verdadero o falso.
  • ifTrue - El color que devolverá IIFc() si la condición es verdadera.
  • ifFalse - El color que devolverá IIFc() si la condición es falsa.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 18.07.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

La función IIFd().

Una comodidad similar para los números reales. Si es así, un número tan real. Si no lo es, entonces otro número. La función IIFd( ) toma tres parámetros obligatorios:

  • condición - Una expresión lógica. Puede ser verdadero o falso.
  • ifTrue - El número real que será devuelto por IIFd() si la condición es verdadera.
  • ifFalse - Un número real que será devuelto por IIFd() si la condición es falsa.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
double IIFd(bool condition, double ifTrue, double ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

La función IIFi().

Una comodidad similar para los enteros. Si es así, tal número entero. Si no, entonces otro número. La función IIFi( ) toma tres parámetros obligatorios:

  • condición - Una expresión lógica. Puede ser verdadero o falso.
  • ifTrue - Un número entero que será devuelto por IIFi() si la expresión de la condición es verdadera.
  • ifFalse - Un entero que será devuelto por IIFi () si la condición es falsa.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
int IIFi(bool condition, int ifTrue, int ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

Función IIFs().

Una comodidad similar para las cuerdas. Si es así, tal cadena. Si no, entonces otra cadena. La función IIFs( ) toma tres parámetros obligatorios:

  • condición - Una expresión lógica. Puede ser verdadero o falso.
  • ifTrue - La cadena que será devuelta por IIFs() si la condición es verdadera.
  • ifFalse - La cadena que será devuelta por IIFs( ), si la condición es falsa.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

Ejemplo de uso de la función IIFc().

Si el nivel de precio dado es mayor que la Oferta actual, entonces establece una línea horizontal en el nivel de precio dado en azul, de lo contrario en rojo.

extern double p1=1.36;
void start() {
  color cl= IIFc( p1>Bid, Blue, Red);
  SetHLine( cl, "", p1);
}

Sin el uso de la función IIFc() el código anterior tendría el siguiente aspecto:

extern double p1=1.36;
void start() {
  color cl;
  if ( p1>Bid) cl=Blue; else cl=Red;
  SetHLine( cl, "", p1);
}

P.D. Se adjunta un script para probar la función IIFc().

Archivos adjuntos:
test_iifc.mq4  3 kb
 

Ejemplo de uso de la función IIFs().

La función IIFs( ) se utiliza, en la mayoría de los casos, en el bloque de comentarios de la operación EA. Por ejemplo, se utiliza cuando se emiten los valores de los parámetros externos del EA.

extern int StopLoss=50;
extern int TakeProfit=0;
void start() {
  Comment( IIFs( StopLoss<=0, "", "StopLoss="+DoubleToStr( StopLoss, 0)+"п.  ")
         , IIFs( TakeProfit<=0, "", "TakeProfit="+DoubleToStr( TakeProfit, 0)+"п.")
         );
}

P.D. Se adjunta un script para probar la función IIFs().

Archivos adjuntos:
test_iifs.mq4  2 kb
 

Un ejemplo del uso de la función IIFd().

Es conveniente utilizar la función IIFd() al inicializar algunas variables. Por ejemplo, los niveles de precios de parada y toma antes de abrir una posición.

extern int StopLoss=50;
extern int TakeProfit=0;
void start() {
  double ll=0.1;
  double sl= IIFd( StopLoss  >0, Ask- StopLoss  *Point, 0);
  double tp= IIFd( TakeProfit>0, Ask+ TakeProfit*Point, 0);

  OpenPosition(NULL, OP_BUY, ll, sl, tp);
}

Sin la función IIFd(), este código tendría el siguiente aspecto:

extern int StopLoss=50;
extern int TakeProfit=0;
void start() {
  double ll=0.1, sl, tp;
  if ( StopLoss  >0) sl=Ask- StopLoss  *Point; else sl=0;
  if ( TakeProfit>0) tp=Ask+ TakeProfit*Point; else tp=0;

  OpenPosition(NULL, OP_BUY, ll, sl, tp);
}
 

Ejemplo de uso de las funciones comerciales en el probador.

Para mostrar cómo se pueden aplicar las funciones de negociación previstas para su uso en el probador, escribí e_ForTester, un Asesor Experto en swing. La señal de entrada es un par de velas unidireccionales. Si las velas se dirigen hacia arriba, el EA cierra la compra y vende. Si las velas se dirigen hacia abajo, el Asesor Experto cierra la venta y compra. Sólo hay una posición en el mercado en todo momento. La salida es por la señal contraria, o por un tope/parada/palanca. Stop y Take son dos parámetros externos que se pueden optimizar.
En el EA se utilizan las siguientes funciones exclusivas del probador:

Operaciones del Asesor Experto e_ForTester en el gráfico EURUSD H1:

P.D. Adjunto:

  • e_ForTester.mq4 - Asesor experto destinado a ser utilizado únicamente en el probador.
  • e_ForTester.rar - Informe del probador.
  • e_ForTester.txt - Registro del probador.
Archivos adjuntos:
 
Las funciones destinadas a ser utilizadas únicamente en el probador de MetaTrader 4 se publican en su totalidad. Por lo tanto, se ha publicado la biblioteca b-ForTest correspondiente.
 
Estaba leyendo el libro de V.Yakimkin. "Mercado de divisas - su camino al éxito" y se encontró con las siguientes líneas "...diferencial de (DJI x Nikkei)..." ¿Puedes decirme, Igor, si es posible implementarlo y emitirlo como un indicador...