Fonctions utiles de KimIV - page 52

 

La fonction IIFc().

Une fonction très pratique en termes de construction de fourches. Si oui, cette couleur. Et si ce n'est pas le cas, alors une autre couleur. La fonction IIFc() prend trois paramètres obligatoires :

  • condition - Une expression logique. Elle peut être vraie ou fausse.
  • ifTrue - La couleur qui sera renvoyée par IIFc() si la condition est vraie.
  • ifFalse - La couleur qui sera renvoyée par IIFc() si la condition est fausse.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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 fonction IIFd().

Commodité similaire pour les nombres réels. Si oui, un tel nombre réel. S'il ne l'est pas, alors un autre numéro. La fonction IIFd() prend trois paramètres obligatoires :

  • condition - Une expression logique. Elle peut être vraie ou fausse.
  • ifTrue - Le nombre réel qui sera renvoyé par IIFd() si la condition est vraie.
  • ifFalse - Un nombre réel qui sera renvoyé par IIFd() si la condition est fausse.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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 fonction IIFi().

Commodité similaire pour les entiers. Si oui, un tel nombre entier. Sinon, un autre numéro. La fonction IIFi() prend trois paramètres obligatoires :

  • condition - Une expression logique. Elle peut être vraie ou fausse.
  • ifTrue - Un nombre entier qui sera renvoyé par IIFi() si l'expression de la condition est vraie.
  • ifFalse - Un nombre entier qui sera renvoyé par IIFi () si la condition est fausse.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
int IIFi(bool condition, int ifTrue, int ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

Fonction IIFs().

Une commodité similaire pour les cordes. Si oui, une telle chaîne. Si non, alors une autre chaîne. La fonction IIFs() prend trois paramètres obligatoires :

  • condition - Une expression logique. Elle peut être vraie ou fausse.
  • ifTrue - La chaîne qui sera retournée par IIFs() si la condition est vraie.
  • ifFalse - La chaîne qui sera retournée par IIFs( ), si la condition est fausse.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

Exemple d'utilisation de la fonction IIFc().

Si le niveau de prix donné est supérieur à l'offre actuelle, une ligne horizontale est tracée au niveau de prix donné en bleu, sinon en rouge.

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

Sans l'utilisation de la fonction IIFc(), le code ci-dessus serait le suivant :

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

P.S. Vous trouverez ci-joint un script pour tester la fonction IIFc().

Dossiers :
test_iifc.mq4  3 kb
 

Exemple d'utilisation de la fonction IIFs().

La fonction IIFs() est, dans la plupart des cas, utilisée dans le bloc de commentaires de l'opération EA. Il est utilisé, par exemple, lors de la sortie des valeurs des paramètres externes de l'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.S. Vous trouverez ci-joint un script pour tester la fonction IIFs().

Dossiers :
test_iifs.mq4  2 kb
 

Un exemple d'utilisation de la fonction IIFd().

Il est pratique d'utiliser la fonction IIFd() pour initialiser certaines variables. Par exemple, les niveaux de prix du stop et du take avant d'ouvrir une position.

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);
}

Sans la fonction IIFd(), ce code aurait l'allure suivante :

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);
}
 

Exemple d'utilisation des fonctions commerciales dans le testeur.

Pour montrer comment les fonctions de trading destinées à être utilisées uniquement dans le testeur peuvent être appliquées, j'ai écrit e_ForTester, un Expert Advisor de swing. Le signal d'entrée est une paire de chandeliers unidirectionnels. Si les chandeliers sont dirigés vers le haut, l'EA clôture l'achat et la vente. Si les chandeliers sont dirigés vers le bas, le conseiller expert ferme la vente et achète. Il n'y a qu'une seule position sur le marché à tout moment. La sortie se fait soit par le signal opposé, soit par un stop/stop/tick. Stop et Take sont deux paramètres externes qui peuvent être optimisés.
Les fonctions suivantes, réservées au testeur, sont utilisées dans l'EA :

Trades de l'Expert Advisor e_ForTester sur le graphique EURUSD H1 :

P.S. Ci-joint :

  • e_ForTester.mq4 - Conseiller expert destiné à être utilisé dans le testeur uniquement.
  • e_ForTester.rar - Rapport du testeur.
  • e_ForTester.txt - Journal du testeur.
Dossiers :
 
Les fonctions destinées à être utilisées uniquement dans MetaTrader 4 tester sont entièrement publiées. Par conséquent, la bibliothèque b-ForTest correspondante a été publiée.
 
Je lisais le livre de V.Yakimkin. "Forex market - your way to success" et je suis tombé sur les lignes suivantes "...differential from (DJI x Nikkei)..." Pouvez-vous me dire, Igor, s'il est possible de l'implémenter et de le sortir comme un indicateur...