※他の方が販売されているものです。
外出先からいつでもチャート画像を取得可能!MT5でも使用可能。
EA使用時のポジション監視に!
高機能ですが、その分高いとのこと・・・・。
発注状態に変化がある度にPC内にチャート画像を保存するだけなら割と簡単にできます。
ということで、いろいろつけると手間がかかって高くなりますが、とりあえず口座履歴と時間で見比べればよいからチャートが保存されていると嬉しいという方向けに、単純に保存するだけのものを公開します。
ファイルはデータフォルダ\MQL\Filesの下に日付単位でフォルダを作成して保存します。
オーダーに変化があるたびにチャートを保存する
チャートの画像はChartScreenShort関数で取得可能なのですが、ファイルの保存先はMQL\Files以下に限定されてしまうようです。
//------------------------------------------------------------------
// 画像保存
#property copyright "Copyright 2017, Daisuke"
#property link "http://mt4program.blogspot.jp/"
#property version "1.00"
#property strict
#property indicator_chart_window
input int Width = 800; //画像幅
input int Height = 600; //画像高さ
//------------------------------------------------------------------
//初期化
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
//------------------------------------------------------------------
//終了処理
void OnDeinit(const int reason)
{
EventKillTimer();
}
//------------------------------------------------------------------
//タイマー処理
void OnTimer()
{
static int beforeOrderTotal = 0;
//ポジション数に変化があったら
int ordersTotal = OrdersTotal();
if( ordersTotal == beforeOrderTotal ) return ;
MqlDateTime current;
TimeToStruct(TimeCurrent(), current);
// yyyyMMdd_HHmmss形式に変換
string timestr = StringFormat("%04d%02d%02d_%02d%02d%02d", current.year, current.mon, current.day, current.hour, current.min, current.sec);
beforeOrderTotal = ordersTotal;
string name = Symbol() + "_" + PeriodToString(Period()) + "_" + timestr;
//保存フォルダ 日毎に分ける
string folder = StringFormat("%04d%02d%02d\\", current.year, current.mon, current.day);
//ファイルはMQL4\Files\以下に保存される
ChartScreenShot(0, folder + name + ".png", Width, Height);
}
//------------------------------------------------------------------
//計算イベント
int OnCalculate(const int rates_total, //各レート要素数
const int prev_calculated, //計算済み要素数
const datetime &time[], //要素ごとの時間配列
const double &open[], //オープン価格配列
const double &high[], //高値配列
const double &low[], //安値配列
const double &close[], //クローズ価格配列
const long &tick_volume[], //ティック数(要素の更新回数)
const long &volume[], //実ボリューム(?)
const int &spread[]) //スプレット
{
return rates_total;
}
//------------------------------------------------------------------
//期間を文字列に変更する
string PeriodToString(int timeframe)
{
if( timeframe == 0 )
{
timeframe = Period();
}
switch(timeframe)
{
case PERIOD_M1:
return "M1";
case PERIOD_M5:
return "M5";
case PERIOD_M15:
return "M15";
case PERIOD_M30:
return "M30";
case PERIOD_H1:
return "H1";
case PERIOD_H4:
return "H4";
case PERIOD_D1:
return "D1";
case PERIOD_W1:
return "W1";
case PERIOD_MN1:
return "MN1";
}
return "";
}
//+------------------------------------------------------------------+
「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧
Twitterもよろしくお願いします。
https://twitter.com/mt4program
ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 |
お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。