KimIV的有用功能 - 页 52

 

IIFc()函数。

在构建叉子方面是一个非常方便的功能。如果是这样,这个颜色。如果不是,那就换一种颜色。函数IIFc()需要三个强制性参数。

  • condition- 一个逻辑表达式。它可以是真的,也可以是假的。
  • ifTrue- 如果条件 为真,IIFc()将返回的颜色。
  • ifFalse- 如果条件 为假,IIFc()将返回的颜色。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 18.07.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

IIFd()函数。

对实数也有类似的便利。如果是这样,这样的实数。如果不是,那就换一个数字。IIFd()函数需要三个强制性参数。

  • condition- 一个逻辑表达式。它可以是真的,也可以是假的。
  • ifTrue- 如果条件 为真,IIFd()将返回的真实数字。
  • ifFalse- 如果条件 为假,IIFd()将返回一个实数。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
double IIFd(bool condition, double ifTrue, double ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

IIFi()函数。

对整数也有类似的便利。如果是这样,这样的整数。如果不是,那就换一个数字。IIFi()函数需要三个强制性参数。

  • condition- 一个逻辑表达式。它可以是真的,也可以是假的。
  • ifTrue- 如果条件 表达式为真,IIFi()将返回的一个整数。
  • ifFalse- 如果条件 为假,IIFi()将返回一个整数。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
int IIFi(bool condition, int ifTrue, int ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

IIFs()函数。

对弦乐也有类似的便利。如果是这样,这样的字符串。如果不是,则是另一个字符串。IIFs()函数需要三个强制性参数。

  • condition- 一个逻辑表达式。它可以是真的,也可以是假的。
  • ifTrue- 如果条件 为真,IIFs() 将返回的字符串。
  • ifFalse- 如果条件 为假,IIFs()将返回的字符串。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
  if ( condition) return( ifTrue); else return( ifFalse);
}
 

使用IIFc()函数的例子。

如果给定的价格水平高于当前的买入价,那么在给定的价格水平上设置一条 蓝色的 水平线,否则为红色

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

如果不使用IIFc()函数,上述代码将看起来如下。

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

P.S. 附上一个测试IIFc()函数的脚本。

附加的文件:
test_iifc.mq4  3 kb
 

使用IIFs()函数的例子。

在大多数情况下,IIFs() 函数是在EA操作的注释块中使用。例如,在输出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. 附上一个测试IIFs()函数的脚本。

附加的文件:
test_iifs.mq4  2 kb
 

一个使用IIFd()函数的例子。

在初始化一些变量时,使用IIFd() 函数很方便。例如,开仓前 的止损和取舍的价格水平。

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

如果没有IIFd()函数,这段代码看起来会如下。

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

在测试器中使用交易功能的例子。

为了展示如何应用仅用于测试器的交易功能,我写了e_ForTester,一个摇摆专家顾问。进场信号是一对单向的蜡烛图。如果蜡烛图的方向是向上的,EA将关闭买入和卖出。如果蜡烛图的方向是向下的,专家顾问就会关闭销售并买入。市场上在任何时候都只有一个位置。退出是通过相反的信号,或通过停止/停止/棒。停和取是两个可以优化的外部参数。
在EA中使用了以下测试员专用的功能。

e_ForTester专家顾问在EURUSD H1图表上的交易。

P.S. 附上。

  • e_ForTester.mq4- 专家顾问,仅用于测试器中。
  • e_ForTester.rar- 测试报告。
  • e_ForTester.txt- 测试员日志。
附加的文件:
 
只打算在MetaTrader 4测试器中使用的功能被完全公布。因此,相应的b-ForTest 库已被发布。
 
我在读V.Yakimkin的书。"外汇市场--你的成功之道",并看到了以下几句话:"......从(道琼斯指数x日经指数)的差值......" 你能告诉我,伊戈尔,是否有可能实现它并将其作为一个指标输出......