Características úteis da KimIV - página 52

 

A função IIFc().

Uma função muito útil em termos de construção de garfos. Se for o caso, esta cor. E se não for, então outra cor. A função IIFc() leva três parâmetros obrigatórios:

  • condição - Uma expressão lógica. Pode ser verdadeiro ou falso.
  • ifTrue - A cor que será devolvida pela IIFc() se a condição for verdadeira.
  • ifFalse - A cor que será devolvida pela IIFc() se a condição for 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);
}
 

A função IIFd().

Conveniência semelhante para números reais. Se assim for, um número tão real. Se não for, então outro número. A função IIFd() leva em conta três parâmetros obrigatórios:

  • condição - Uma expressão lógica. Pode ser verdadeiro ou falso.
  • ifTrue - O número real que será devolvido pelo IIFd() se a condição for verdadeira.
  • ifFalse - Um número real que será devolvido pelo IIFd() se a condição for 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);
}
 

A função IIFi().

Conveniência semelhante para os inteiros. Se assim for, tal número inteiro. Se não, então outro número. A função IIFi() leva em conta três parâmetros obrigatórios:

  • condição - Uma expressão lógica. Pode ser verdadeiro ou falso.
  • ifTrue - Um número inteiro que será devolvido pelo IIFi() se a expressão da condição for verdadeira.
  • ifFalse - Um número inteiro que será devolvido pelo IIFi () se a condição for 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);
}
 

Função IIFs().

Conveniência semelhante para as cordas. Se for o caso, tal corda. Se não, então outra corda. A função IIFs() leva em conta três parâmetros obrigatórios:

  • condição - Uma expressão lógica. Pode ser verdadeiro ou falso.
  • ifTrue - A cadeia que será devolvida pelos IIFs() se a condição for verdadeira.
  • ifFalse - O fio que será devolvido pelos IIFs( ), se a condição for 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);
}
 

Exemplo de utilização da função IIFc().

Se o determinado nível de preço for superior ao atual Lance, então defina uma linha horizontal no nível de preço em azul, caso contrário em vermelho.

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

Sem o uso da função IIFc(), o código acima ficaria da seguinte forma:

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

P.S. Em anexo está um roteiro para testar a função IIFc().

Arquivos anexados:
test_iifc.mq4  3 kb
 

Exemplo de utilização da função IIFs().

A função IIFs() é, na maioria dos casos, utilizada no bloco de comentários da operação EA. Por exemplo, ele é usado na saída de valores de parâmetros externos da 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. Em anexo está um roteiro para testar a função IIFs().

Arquivos anexados:
test_iifs.mq4  2 kb
 

Um exemplo de utilização da função IIFd().

É conveniente usar a função IIFd() ao inicializar algumas variáveis. Por exemplo, níveis de preços de parada e tomada antes de abrir uma posição.

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

Sem a função IIFd(), este código ficaria da seguinte forma:

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

Exemplo de utilização de funções comerciais no testador.

Para mostrar como as funções comerciais destinadas apenas para uso no testador podem ser aplicadas, escrevi e_ForTester, um consultor especializado em swing. O sinal de entrada é um par de candelabros unidirecionais. Se os castiçais forem dirigidos para cima, a EA fecha a compra e a venda. Se os castiçais forem dirigidos para baixo, o Expert Advisor fecha a venda e compra. Há apenas uma posição no mercado em todos os momentos. A saída é pelo sinal oposto, ou por um stop/stop/stick. Stop and Take são dois parâmetros externos que podem ser otimizados.
As seguintes funções somente para teste são usadas na EA:

Oportunidades do e_ForTester Expert Advisor no gráfico EURUSD H1:

P.S. Em anexo:

  • e_ForTester.mq4 - Consultor especializado destinado a ser usado somente no testador.
  • e_ForTester.rar - Relatório do testador.
  • e_ForTester.txt - Diário do testador.
Arquivos anexados:
 
As funções destinadas a serem utilizadas somente no MetaTrader 4 tester são totalmente publicadas. Portanto, a biblioteca b-ForTest correspondente foi afixada.
 
Eu estava lendo o livro de V.Yakimkin. "Mercado Forex - seu caminho para o sucesso" e encontrou as seguintes linhas "...diferencial de (DJI x Nikkei)..." Você pode me dizer, Igor, se é possível implementá-lo e produzi-lo como um indicador...
Razão: