KimIVの便利な機能 - ページ 52

 

IIFc()関数です。

フォークの組み立てという点では非常に便利な機能です。だとしたら、この色。そして、そうでない場合は、別の色。関数IIFc()は3つの必須パラメータをとる。

  • 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() 関数は、3つの必須パラメータをとる。

  • 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() 関数は、3つの必須パラメータをとる。

  • 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() 関数は、3つの必須パラメータをとる。

  • 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()関数の使用例です。

与えられた価格水準が現在のBidより高ければ、与えられた価格水準に青色で、そうでなければ赤色で 水平線を 設定します。

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

追伸: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)+"п.")
         );
}

追伸: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);
}
 

テスターでの取引関数の使用例。

テスターで使用するための取引機能をどのように適用できるかを示すために、スイングExpert Advisorであるe_ForTesterを 作成しました。エントリーシグナルは、一方向のローソク足のペアです。ローソク足が上方向に向いたら、EAは買いと売りを閉じます。ローソク足が下向きであれば、Expert Advisorは売りを決済し、買いを実行します。マーケットには常に1つのポジションしか存在しない。出口は反対側の信号か、ストップ/ストップ/スティックで出ます。StopとTakeは、最適化が可能な外部パラメータです。
EAでは、以下のテスター専用機能を使用しています。

EURUSD H1チャートにおけるe_ForTester Expert Advisorのトレード。

追伸:添付します。

  • e_ForTester.mq4- テスターでの使用のみを目的としたExpert Advisorです。
  • e_ForTester.rar- テスターのレポートです。
  • e_ForTester.txt- テスターのログです。
ファイル:
 
MetaTrader4テスターでのみ使用することを目的とした機能を完全公開しています。そのため、対応するb-ForTest ライブラリーを掲載しました。
 
V.Yakimkinの本を読んでいました。"Forex market- your way to success" で、以下の行に出会いました。 "(DJI×日経)の差分..." イゴールさん、これを実装してインディケータとして出力することが可能かどうか教えてください...。