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

 
KimIV >> :

これ

ありがとうございます!昨日はなかったのか、見逃してしまいました。

 
beginner писал(а)>>

ありがとうございます!昨日はなかったのか、見逃してしまいました。

>> そうじゃなかった。

 

はい、次はこれです。

#include "b-KimIV.mqh" // 追加関数ライブラリ

 

KimIV様、e-SOTrailingを以下のように改造して頂きたいのですが:(この場合の全ての戦術は、最も近いフラクタルから ある程度離れたところにストップオーダーを置き、価格の後に移動させることです)。FindNearFractal関数を使えば、そんなに難しくはないのでは?

void TrailingOrders() {

......

pa=FindNearFractal(OrderSymbol(), 0, MODE_UPPER); //MarketInfo(OrderSymbol(), MODE_ASK);

......

pb=FindNearFractal(OrderSymbol(), 0, MODE_LOWER);//MarketInfo(OrderSymbol(), MODE_BID)のようになります。

 
beginner писал(а)>>

はい、次はこれです。

#include "b-KimIV.mqh" // 追加関数ライブラリ

>> 後日談>。

 
KimIV >> :

トップページですでに無理がある...。

ここに掲載するのは...更新するための投稿がブロックされたら、再投稿します。それでは、このスレッドから目を離さないでください :-)

ありがとうございます-これです。

 

ArrayZ()関数を使用します。

この関数は、配列で参照渡しされた数列の Z カウントを計算し、返します。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 27.10.2008                                                     |
//|  Описание : Возвращает Z-счёт числового ряда.                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    arr - массив значений числового ряда                                    |
//+----------------------------------------------------------------------------+
double ArrayZ(double& arr[]) {
  double x, z;
  int    i, l=0, n=ArraySize( arr), r=1, w=0;

  for ( i=0; i< n; i++) {
    if ( i==0) r=1;
    else {
      if ( arr[ i-1]* arr[ i]<0) r++;
    }
    if ( arr[ i]>0) w++; else l++;
  }

  if ( n>2) {
    if ( w>0 && l>0) {
      x=2* w* l;
      if ( x!= n) z=( n*( r-0.5)- x)/MathSqrt( x*( x- n)/( n-1));
    } else {
      if ( l==0) z=100; else z=-100;
      Print("ArrayZ(): Нет чередования серий!");
    }
    return( z);
  } else {
    Print("ArrayZ(): В массиве недостаточно элементов!");
    return(0);
  }
}

SZ. ArrayZ()関数をテストするスクリプトを添付します。ちなみに、このスクリプトは、Ralph Vinceの著書「The Mathematics of Capital Management」のデータを配列に詰めている。

ZZZ. 私のホームページでb-Array ライブラリを更新しました。

ファイル:
 

ArrayDeleteInt()関数

指定されたインデックスの配列要素の削除を実行する。新しい配列のサイズを返し、何も削除されなかった場合は-1 を 返す。ArrayDeleteInt()関数は、以下の必須パラメータを受け付ける。

  • m- 要素の配列.
  • i- 配列の要素のインデックス.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 31.10.2008                                                     |
//|  Описание : Выполняет удаление элемента массива с заданным индексом.       |
//|             Возвращает размер нового массива или -1,                       |
//|             если не удалось ничего удалить.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    i - индекс элемента                                                     |
//+----------------------------------------------------------------------------+
int ArrayDeleteInt(int& m[], int i) {
  int j, k=ArraySize( m);

  if ( i>=0 && i< k) {
    for ( j= i; j< k; j++) m[ j]= m[ j+1];
    k=ArrayResize( m, k-1);
    return( k);
  } else Print("ArrayDeleteInt(): Неверный индекс элемента массива! i=", i);

  return(-1);
}
ArrayDeleteInt()関数をテストするスクリプトを添付します。
ファイル:
 

ArrayDeleteDouble()関数

指定されたインデックスの配列要素を削除します。新しい配列のサイズを返し、何も削除されなかった場合は-1 を 返す。ArrayDeleteDouble()関数は、以下の必須パラメータを受け付ける。

  • m-double 型の要素からなる配列.
  • i- 配列の要素のインデックス.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 31.10.2008                                                     |
//|  Описание : Выполняет удаление элемента массива с заданным индексом.       |
//|             Возвращает размер нового массива или -1,                       |
//|             если не удалось ничего удалить.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    i - индекс элемента                                                     |
//+----------------------------------------------------------------------------+
int ArrayDeleteDouble(double& m[], int i) {
  int j, k=ArraySize( m);

  if ( i>=0 && i< k) {
    for ( j= i; j< k; j++) m[ j]= m[ j+1];
    k=ArrayResize( m, k-1);
    return( k);
  } else Print("ArrayDeleteDouble(): Неверный индекс элемента массива! i=", i);

  return(-1);
}
追伸:ArrayDeleteDouble()関数をテストするスクリプトを添付します。
ファイル:
 

ArrayDeleteString()関数

指定されたインデックスの配列要素の削除を実行する。新しい配列のサイズを返すか、何も削除できなかった場合は-1 を 返す。ArrayDeleteString()関数は、以下の必須パラメータを受け付ける。

  • m-文字列 型の要素からなる配列.
  • i- 配列の要素のインデックス.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 31.10.2008                                                     |
//|  Описание : Выполняет удаление элемента массива с заданным индексом.       |
//|             Возвращает размер нового массива или -1,                       |
//|             если не удалось ничего удалить.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    i - индекс элемента                                                     |
//+----------------------------------------------------------------------------+
int ArrayDeleteString(string& m[], int i) {
  int j, k=ArraySize( m);

  if ( i>=0 && i< k) {
    for ( j= i; j< k; j++) m[ j]= m[ j+1];
    k=ArrayResize( m, k-1);
    return( k);
  } else Print("ArrayDeleteString(): Неверный индекс элемента массива! i=", i);

  return(-1);
}
ZS. ArrayDeleteString()関数をテストするスクリプトを添付しています。
ファイル: