スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ
CopyRates


CopyRates


指定した通貨ペア・時間軸のMqlRates構造体型のヒストリーデータを取得し、コピー先配列へコピーします。
コピーされたデータの要素の順序は、従来のものと同じです。




コピーするデータ量が未知数の場合、コピー先配列は動的配列を使用する事をお勧めします。
動的配列であれば、要求されたデータ数がコピー先配列のサイズを超える場合、
要求されたデータが収まるようにメモリの再割り当てを行います。

コピーするデータ量が決まっている場合、過剰なメモリ割り当て防止の為に、
静的配列を使用する事をお勧めします。

コピー先配列の時系列プロパティに影響される事はありません。
配列に割り当てられた物理メモリの先頭からデータの貼り付けをします。


関数の呼び出しは3種類のバリアントがあります。


関数書式(コピー開始位置とコピー数を指定):
int    CopyRates(
   string            symbol_name,       // 通貨ペア名
   ENUM_TIMEFRAMES  timeframe,        // 時間軸
   int               start_pos,         // コピー開始位置
   int               count,             // コピー数
   MqlRates         rates_array[]      // コピー先配列
   );


関数書式(コピー開始日とコピー数を指定):
int    CopyRates(
   string            symbol_name,        // 通貨ペア名
   ENUM_TIMEFRAMES  timeframe,         // 時間軸
   datetime          start_time,        // コピー開始する日時
   int                count,             // コピー数
   MqlRates          rates_array[]      // コピー先配列
   );


関数書式(コピー開始日とコピー終了日を指定):
int    CopyRates(
   string            symbol_name,        // 通貨ペア名
   ENUM_TIMEFRAMES  timeframe,         // 時間軸
   datetime          start_time,        // コピー開始する日時
   datetime          stop_time,         // コピー終了日時
   MqlRates          rates_array[]      // コピー先配列
   );



■引数
引数名 初期値 I/O 詳細
symbol_name - In 通貨ペア名
timeframe - In 時間軸
start_time - In コピー開始する要素のオープン時間
start_pos - In コピー開始する要素位置
count - In コピーする要素数
stop_time - In コピー終了する要素のオープン時間
rates_array[] - Out コピー先のMqlRates構造体型配列



■戻り値
コピーされた要素数を返します。
エラーの場合は-1を返します。



■備考
要求したデータ範囲のデータがサーバー上の利用可能データの範囲外にある場合、戻り値は-1を返します。
TERMINAL_MAXBARS(チャート上のバーの最大数)を超えたデータを要求した場合、戻り値は-1を返します。

インジケータかでデータを要求する時、
要求された時系列がまだ構築されておらずサーバーからダウンロードする必要がある場合、戻り値は-1を返します。
エラーを返しますが、ダウンロード・構築プロセスは開始されます。

EAとスクリプトでデータを要求する時、
ターミナルがローカルデータに要求されたデータを持っていない場合は、サーバーからデータのダウンロードを開始します。

この関数はタイムアウト期間の間で準備されたデータ量を返しますが、ヒストリーデータのダウンロードは継続します。
次に同様の要求を行った場合、関数はより多くのデータを返します。

コピー開始日時とコピー数の引数でデータ要求した場合、
指定した日時以下の値のみコピーします。
この日時は任意のバーのオープン時間を意味します。

コピー開始日時とコピー終了日時の引数でデータ要求した場合、指定した日時の範囲のデータのみコピーします。
設定した日時の範囲は秒単位までカウントされます。
この日時は任意のバーのオープン時間を意味します。

現在の曜日が土曜日の場合、
timeframe=週足、start_time=今週の水曜日の日時、stop_time=今週の金曜日の日時の範囲でデータ要求した場合、
戻り値は0を返します。
これは週足のオープンタイムが常に日曜になる為、週足バーが指定した範囲に該当しない為です。

サンプルソース:
void OnInit() {
    MqlRates rates[];                   // コピー先配列用意
    int copied;                         // コピーした要素数

    ArraySetAsSeries(rates,true);       // コピー先配列を時系列アクセス設定
    
    copied = CopyRates(Symbol(),0,0,100,rates); // レートコピー
    
    if(copied > 0) {
        
        Print("コピーした要素数: " , copied);
        
        string format="始値 = %G, 高値 = %G, 安値 = %G, 終値 = %G, 出来高 = %d";
        string out;
        
        int size=fmin( copied,10); // 最小値をsizeに設定(上限:10)
        
        for(int i=0;i<size;i++) {
            out = StringFormat(format,
            rates[i].open,
            rates[i].high,
            rates[i].low,
            rates[i].close,
            rates[i].tick_volume);

            printf( "[%d]:%s %s",i,TimeToString(rates[i].time),out);
        }
    } else {
        printf("%sのヒストリーデータの取得に失敗しました",Symbol());
    }
}


結果:
USDJPY,H1: コピーした要素数: 100
USDJPY,H1: [0]:2015.04.30 22:00 始値 = 119.386, 高値 = 119.429, 安値 = 119.251, 終値 = 119.370, 出来高 = 5147 
USDJPY,H1: [1]:2015.04.30 21:00 始値 = 119.624, 高値 = 119.662, 安値 = 119.383, 終値 = 119.385, 出来高 = 4777 
USDJPY,H1: [2]:2015.04.30 20:00 始値 = 119.636, 高値 = 119.653, 安値 = 119.572, 終値 = 119.623, 出来高 = 3630 
USDJPY,H1: [3]:2015.04.30 19:00 始値 = 119.854, 高値 = 119.868, 安値 = 119.617, 終値 = 119.636, 出来高 = 5314 
USDJPY,H1: [4]:2015.04.30 18:00 始値 = 119.649, 高値 = 119.884, 安値 = 119.625, 終値 = 119.852, 出来高 = 10523 
USDJPY,H1: [5]:2015.04.30 17:00 始値 = 119.507, 高値 = 119.674, 安値 = 119.411, 終値 = 119.651, 出来高 = 11648 
USDJPY,H1: [6]:2015.04.30 16:00 始値 = 119.296, 高値 = 119.596, 安値 = 119.282, 終値 = 119.506, 出来高 = 14582 
USDJPY,H1: [7]:2015.04.30 15:00 始値 = 118.900, 高値 = 119.308, 安値 = 118.800, 終値 = 119.296, 出来高 = 11864 
USDJPY,H1: [8]:2015.04.30 14:00 始値 = 118.934, 高値 = 118.972, 安値 = 118.861, 終値 = 118.899, 出来高 = 4625 
USDJPY,H1: [9]:2015.04.30 13:00 始値 = 118.859, 高値 = 118.954, 安値 = 118.829, 終値 = 118.934, 出来高 = 5159 







スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system