Caratteristiche utili da KimIV - pagina 52

 

La funzione IIFc().

Una funzione molto utile in termini di costruzione di forchette. Se è così, questo colore. E se non lo è, allora un altro colore. La funzione IIFc() prende tre parametri obbligatori:

  • condizione - Un'espressione logica. Può essere vero o falso.
  • ifTrue - Il colore che sarà restituito da IIFc() se la condizione è vera.
  • ifFalse - Il colore che sarà restituito da IIFc() se la condizione è 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 funzione IIFd().

Convenienza simile per i numeri reali. Se è così, un tale numero reale. Se non lo è, allora un altro numero. La funzione IIFd() prende tre parametri obbligatori:

  • condizione - Un'espressione logica. Può essere vero o falso.
  • ifTrue - Il numero reale che sarà restituito da IIFd() se la condizione è vera.
  • ifFalse - Un numero reale che sarà restituito da IIFd() se la condizione è 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 funzione IIFi().

Convenienza simile per gli interi. Se è così, un tale numero intero. Se no, un altro numero. La funzione IIFi() prende tre parametri obbligatori:

  • condizione - Un'espressione logica. Può essere vero o falso.
  • ifTrue - Un numero intero che sarà restituito da IIFi() se l'espressione di condizione è vera.
  • ifFalse - Un intero che sarà restituito da IIFi () se la condizione è 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);
}
 

Funzione IIFs().

Convenienza simile per le stringhe. Se è così, una tale stringa. Se no, un'altra stringa. La funzione IIFs() prende tre parametri obbligatori:

  • condizione - Un'espressione logica. Può essere vero o falso.
  • ifTrue - La stringa che sarà restituita da IIFs() se la condizione è vera.
  • ifFalse - La stringa che sarà restituita da IIFs( ), se la condizione è 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);
}
 

Esempio di utilizzo della funzione IIFc().

Se il livello di prezzo dato è superiore al Bid corrente, allora imposta una linea orizzontale al livello di prezzo dato in blu, altrimenti in rosso.

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

Senza l'uso della funzione IIFc() il codice di cui sopra si presenterebbe come segue:

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

P.S. In allegato c'è uno script per testare la funzione IIFc().

File:
test_iifc.mq4  3 kb
 

Esempio di utilizzo della funzione IIFs().

La funzione IIFs() è, nella maggior parte dei casi, utilizzata nel blocco di commento dell'operazione EA. Per esempio, si usa quando si emettono i valori dei parametri esterni dell'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. In allegato c'è uno script per testare la funzione IIFs().

File:
test_iifs.mq4  2 kb
 

Un esempio di utilizzo della funzione IIFd().

È conveniente usare la funzione IIFd() quando si inizializzano alcune variabili. Per esempio, i livelli di prezzo di stop e take prima di aprire una posizione.

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

Senza la funzione IIFd(), questo codice si presenterebbe come segue:

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

Esempio di utilizzo delle funzioni di trading nel tester.

Per mostrare come le funzioni di trading destinate all'uso solo nel tester possono essere applicate, ho scritto e_ForTester, un Expert Advisor swing. Il segnale di entrata è una coppia di candele unidirezionali. Se le candele sono dirette verso l'alto, l'EA chiude l'acquisto e vende. Se le candele sono dirette verso il basso, l'Expert Advisor chiude la vendita e compra. C'è solo una posizione sul mercato in ogni momento. L'uscita è o dal segnale opposto, o da uno stop/stop/stick. Stop e Take sono due parametri esterni che possono essere ottimizzati.
Le seguenti funzioni solo per il tester sono utilizzate nell'EA:

Operazioni dell'Expert Advisor di e_ForTester sul grafico EURUSD H1:

P.S. In allegato:

  • e_ForTester.mq4 - Expert Advisor destinato esclusivamente all'uso nel tester.
  • e_ForTester.rar - Rapporto del tester.
  • e_ForTester.txt - Registro del tester.
File:
 
Le funzioni destinate ad essere utilizzate solo in MetaTrader 4 tester sono completamente pubblicate. Pertanto, la libreria b-ForTest corrispondente è stata pubblicata.
 
Stavo leggendo il libro di V. Yakimkin. "Forex market - your way to success" e mi sono imbattuto nelle seguenti righe "...differenziale da (DJI x Nikkei)..." Puoi dirmi, Igor, se è possibile implementarlo e farlo uscire come indicatore...