【MQL】過去のチャートデータを取得するスクリプト

過去のチャートデータを取得するにはチャートの自動スクロールを外してHomeボタンを押し続ければ良いのですが、数ヶ月以上になると時間が掛かるので面倒です。
 
そこでMT4のスクリプトから、チャートを過去へスクロールさせてデータを取得できるようにしてみました。
 

 GetHistoricalData.mq4

//+------------------------------------------------------------------+
//| GetHistoricalData.mq4 |
//| Copyright 2015, nekonote |
//| http://nya0nekonote.blog.fc2.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, nekonote"
#property link "http://nya0nekonote.blog.fc2.com/"
#property description "チャートを過去へスクロールしてヒストリカルデータを取得します。"
#property version "1.00"
#property strict

//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
long chart_shift = ChartGetInteger(0,CHART_SHIFT); // チャートの右端移動モードを控える
long chart_autoscroll = ChartGetInteger(0,CHART_AUTOSCROLL); // チャートの自動スクロールモードを控える
long chart_scale = ChartGetInteger(0,CHART_SCALE); // チャートのスケールを控える
int bars_count; // チャートの総バー数
int retry_count; // ヒストリカル取得のリトライ回数

// チャートの自動スクロールを外してスケールを最小にする
ChartSetInteger(0,CHART_SHIFT,0);
ChartSetInteger(0,CHART_AUTOSCROLL,0);
ChartSetInteger(0,CHART_SCALE,0);

// チャートを過去へスクロールしてヒストリカルデータを取得する
bars_count=iBars(NULL,0);
retry_count=0;

while(retry_count<5 && !IsStopped())
{
Comment("Bars Count = ",iBars(NULL,0),"\n","Retry Count = ",retry_count);
// チャートを過去へスクロール
ChartNavigate(0,CHART_BEGIN,-2048);
ChartRedraw();
// チャートが更新されるのを待つ
Sleep(1000);
// 総バー数が更新されたかチェックする
RefreshRates();
if(bars_count==iBars(NULL,0))
retry_count++;
else
retry_count=0;
bars_count=iBars(NULL,0);
}

// チャート状態を元に戻す
Comment("");
ChartSetInteger(0,CHART_SHIFT,chart_shift);
ChartSetInteger(0,CHART_AUTOSCROLL,chart_autoscroll);
ChartSetInteger(0,CHART_SCALE,chart_scale);
ChartNavigate(0,CHART_END);
ChartRedraw();

}
//+------------------------------------------------------------------+

 
やっている事はチャートを過去方向へスクロールして1秒ウェイトして総バー数をチェックして…の繰り返しです。
スクリプト実行中はチャート左上に総バー数が表示され、総バー数が5回連続で変化しなかった時は取得完了と見做して終了します。
GetHistoricalData_Comment.png
 
数年分のヒストリカルデータが取得できるForex.comなどで使うと便利ですよ!
 

コメント

Secret

プロフィール

nekonote

Author:nekonote

EAを作るのが趣味になってしまったらしい。

あとマニアックな運用とかetc...その時の気分で書き殴る(?)
そんなブログ

※当ブログ記事へのリンクはご自由にどうぞ

 
運用は…fx-onのみんなのMT4に公開しているかも?
fx-on 通常会員ページ
fx-on 出品者ページ

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
ブログランキング
にほんブログ村 為替ブログ システムトレード 自作EA派へ





QRコード
QR
RSSリンクの表示
リンク
FX情報サイト
 優秀トレーダーの投資法をゲット!
FX投資情報コミュニティfx-on.com


国内MT4取扱会社
外為ファイネスト カコテン iOsMA (type DI) EURAUD タイアップキャンペーン

アヴァトレード・ジャパン株式会社 カコテン iOsMA (type DI) EURAUD タイアップキャンペーン

FOREX.com×タイアップキャンペーン☆Beatrice-07 FXTF×ForexSolidタイアップキャンペーン



自作EA紹介


EAフォワード集計結果
海外MT4業者
海外業者を選ぶ際は、まず金融庁の「注意喚起」を熟読して下さい。無登録業者で事故っても自己責任ですよ!
自分はゲムトレード&GEMFOREXに突撃してみましたw




自分もカコテンシリーズを幾つか出品しています。 運用結果でネタが集まれば時々記事にします。

ゲムトレードはEAの将来価値をリスクヘッジするには良い仕組みを提供していると思います。ただし本当に実力のあるEAはfx-on等から買った方が良いでしょう。
取引明細には現れませんがIBのような仕組みでゲムトレードへ報酬が渡っていますので、単一EAの長期運用ではデメリットが成績に現れると思われます。

※繰り返しますが海外業者でトラブっても自己責任です。お忘れなく!
FX専用VPS
レンタルサーバーなら使えるねっと



みんなのMT4
紫色:リアル口座
水色:デモ口座
ねこぱんち | fx-on.com
ねこぱんちMAXでも | fx-on.com
ねこのまえあし | fx-on.com
€$ XM demo | fx-on.com
£$ FxPro demo | fx-on.com
€¥ IFC Markets demo 2nd! | fx-on.com
£¥ IC Markets demo  | fx-on.com
$¥ MGK Global demo | fx-on.com
BigBoss demo AUDJPY | fx-on.com
€x LandFX demo | fx-on.com
KAKO10 iIchimoku リアル OANDA | fx-on.com
KAKO10 iIchimoku デモ FXTF | fx-on.com
KAKO10_iMA(H27.5~) | fx-on.com
KAKO10 iMA デモ Axiory(運用終了) | fx-on.com
KAKO10 iMA デモ Axiory新鯖 | fx-on.com
Ava demo iOsMA方向性スイング(運用終了) | fx-on.com
カコテン iOsMA (type DI) デモ Centrade | fx-on.com
カコテン iMomentum (type DI) デモ Arena | fx-on.com
瞬殺!!! NCSEC demo ※運用終了 | fx-on.com
GEMFOREX demo 新サーバーお試し ※破綻 | fx-on.com
 | fx-on.com
 | fx-on.com
 | fx-on.com
 | fx-on.com