//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 31.10.2008 |//| Описание : Выполняет вставку элемента массива с заданным индексом. |//| Возвращает размер нового массива. |//+----------------------------------------------------------------------------+//| Параметры: |//| m - массив элементов типа double |//| e - значение элемента |//| i - индекс элемента (-1 - добавить в конец массива) |//+----------------------------------------------------------------------------+int ArrayInsertDouble(double& m[],double e,int i=-1){int j, k=ArraySize( m);ArrayResize( m, k+1);if( i>=0&& i< k){for( j= k; j> i; j--) m[ j]= m[ j-1];
m[ i]= e;}else m[ k]= e;return( k+1);}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.10.2008 |//| Описание : Возвращает тип последнего удалённого ордера или -1 |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int GetTypeLastDeleted(string sy="",int mn=-1){datetime t;int i, k=OrdersHistoryTotal(), r=-1;if( sy=="0") sy=Symbol();for( i=0; i< k; i++){if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){if((OrderSymbol()== sy || sy=="")&&( mn<0||OrderMagicNumber()== mn)){if(OrderType()>1&&OrderType()<6&& t<OrderCloseTime()){
t=OrderCloseTime();
r=OrderType();}}}}return( r);}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 26.02.2008 |//| Описание : Возвращает расчётный номер бара от начала суток. |//| : Нумерация баров начинается с 1 (единица). |//+----------------------------------------------------------------------------+//| Параметры: |//| tf - таймфрейм (0 - текущий таймфрейм) |//| dt - дата и время открытия бара (0 - текущее время) |//+----------------------------------------------------------------------------+int iBarOfDayCalc(int tf=0,datetime dt=0){if( tf<=0) tf=Period();if( dt<=0) dt=TimeCurrent();if( tf>PERIOD_D1){Print("iBarOfDayCalc(): Таймфрейм должен быть меньше или равен D1");return(0);}double ms=MathMod( dt/60,1440);// количество минут от начала сутокint bd=MathFloor( ms/ tf)+1;// номер бара от начала сутокreturn( bd);}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 26.02.2008 |//| Описание : Возвращает реальный номер бара от начала суток. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL или "" - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| dt - дата и время открытия бара ( 0 - текущее время) |//+----------------------------------------------------------------------------+int iBarOfDayReal(string sy="",int tf=0,datetime dt=0){if( sy==""|| sy=="0") sy=Symbol();if( tf<=0) tf=Period();if( dt<=0) dt=TimeCurrent();if( tf>PERIOD_D1){Print("iBarOfDayReal(): Таймфрейм должен быть меньше или равен D1");return(0);}int cd=TimeDay( dt);// текущий день месяцаint nb=iBarShift( sy, tf, dt, False);// номер текущего бараint bd=0;// номер бара от начала сутокwhile(TimeDay(iTime( sy, tf, nb))== cd){
nb++;
bd++;}return( bd);}
ArrayInsertDouble()関数
指定されたインデックスの配列の要素を1つ挿入します。新しい配列の要素数(サイズ)を返します。挿入は次のように行います。まず、配列のサイズを1つ増やします。そして,挿入する要素以上のインデックスを持つすべての要素を1つずつ配列の末尾に移動させ,挿入する要素を入れるスペースを確保します.最後に、必要なセルに値が書き込まれる。ArrayInsertDouble() 関数は、以下のパラメータを持ちます。
ArrayInsertDouble(), ArrayInsertInt(), ArrayInsertString() 関数をテストするスクリプトを添付します。
ZZZYさん 私のサイトのb-Array ライブラリーを更新しました。
イゴール、配列の話をしているのだから、私の古いリクエストである配列のソート(「KimIVの便利な関数」)に戻ってくれないかな。さっきのはちょっと間違ってますね、不定期TORで申し訳ないです。
2次元の配列を指定した列(行)でソートしたいのですが、EXCELでの 操作に類似しています。この手順は、スピアマンの統計量「スピアマンの順位相関係数」を、相関行列 通貨(ポートフォリオ)のいくつかの変形分析で使用するために必要なものである。
BubbleSort2()関数です。
この関数は,2次元配列の要素を任意の列に分割してバブル化する。また、ソート方向も指定できます。BubbleSort2() 関数は、以下のパラメータを受け取ります。
GetTypeLastDeleted()関数。
説明: 最後に削除された注文の型、または-1 を返す。削除されたばかりの注文の種類にEAの操作ロジックを紐付けする必要がある場合もあるかと思います。例えば、BuyStopを 削除したばかりならそうすべきですが、BuyLimit なら別のことをすべき、などです。GetTypeLastDeleted()関数には、以下のオプションパラメータを指定することができる。
はい、次はこれです。
#include "b-KimIV.mqh" // 追加関数ライブラリ
Olegさん、こんにちは。
b-Positions. mqh ライブラリをエラーなくコンパイルするためには、このブランチにすでにある関数が必要です。
そこで、次のようにします。
>> グッドラック!
iBarLargest()関数を使用します。
この関数は、最大のバーのインデックスまたは -1 を返す。バーの大きさは、入力パラメータty- 検索項目の種類によって決まる2つの方法のうちの1つによって、この関数によって測定される。本体サイズだけでも、シャドウと合わせても。iBarLargest() 関数には、以下のオプションパラメータを指定できます。
iBarOfDayCalc()関数を使用します。
この関数は、計算された日の先頭からの小節番号を返します。バーには1から番号が振られています。つまり、ある一日のうちで最も開始時間の短いバーが1番、次のバーが2番、といった具合です。入退場時間の最適化に有効な機能です。詳細が気になる人がいたら、質問してください。できる限りお答えします。iBarOfDayCalc() 関数は、以下のオプションのパラメータを受け取ります。
SZY. iBarOfDayCalc() 関数をテストするためのスクリプトを添付します。下図は、スクリプトの使用方法を示しています。
関数 iBarOfDayReal()。
この関数は、日の初めからの実際の小節番号を返します。バーには1つの番号が付けられています。つまり、ある日の中で最も開始時間の短いバーが1番、次のバーが2番、といった具合です。この機能の実用的な使い道は、まだ見つかっていないんです。しかし、私はそれを持つように書いている :-)関数iBarOfDayCalc() と一緒に。iBarOfDayReal() 関数には、次のオプションパラメータを指定できます。
SZYさんiBarOfDayReal() 関数のテスト用スクリプトを添付します。下図は、スクリプトの使い方を示しています。
iBarOfDayReal()関数を使用します。
この機能はまだ実用化されていないんです。
yyyy...:)
私はトレーニングツールとして、移動距離を計算するスクリプトを書くことにしました。
マウスが何キロ走ったかをモニター上でカウントするプログラムがあるのですが、ご存知の方がいらっしゃれば教えてください。
ここで、現在の 日(週、月、年)の 開閉バーを足し算するか、あるいは、想像してみてください。
糸と針で毛皮のコートを縫うように、「開け閉め」「閉め」「閉め」「閉め」「閉め」「閉め」・・・。をグラフの途中で表示します。
同じものでもハイローでは...。
*
ヒッチは最初のステップから始まった。
チャートから現在の日のバーをフィルタリングするにはどうすればよいのでしょうか?
今回のダブりには、皆さんの機能を応用してみます。
イゴールこんにちは。
もしかしたら、あなたにとって簡単な課題を描けるかもしれません。(私にとっての)課題は次のようなものです。
シグナルラインが MACDと交差する、つまりMACDヒストグラムがゼロになる価格帯を設定するのです。
この問題の解決は、例えば、このインジケータを使用する取引システムのシグナルにおいて、次のバーのストッププライスや注文制限を計算するために必要です、
。
MACDヒストグラムがゼロ線(チャート上の価格線と線が交差すること)と交差する価格水準を視覚的に 表示するものです。
MACD= (FastEMA/SlowEMA - 1)の式で算出されるMACDのパーセンテージを指します。 第12期、第26期、シグナル9。
OmegaとMetostockのコードは持っているのですが、MT4で実装する方法がどこにもありません。
ありがとう ございました