時間足を文字列へ変換関数 PeriodToString

プログラム内で時間足を使用する場合にはint型で扱う場合がほとんどです。
しかしチャートの表示やログや外部ファイルへ出力する際にint型のままですと、ユーザーは直感的に分かり辛いかと思われます。
例えば「1440」は日足チャートを表していますが、MQL4プログラミングに慣れていなければ何を表している数値か判断できません。

PeriodToStringはint型の時間足を文字列へ変換するための関数です。
「1440」であれば「日足」といった具合に、トレーダーが見て分かりやすい文字列へ変換します。

string PeriodToString(
int period
);


period
   時間足をint型で入力


トレーダーにとって分かりやすい形式に変換された文字列



string PeriodToString(int period){
string value = "";

if(period == 0){
period = Period();
}

switch(period){
case PERIOD_M1: value = "1分足 (M1)"; break;
case PERIOD_M5: value = "5分足 (M5)"; break;
case PERIOD_M15: value = "15分足 (M15)"; break;
case PERIOD_M30: value = "30分足 (M30)"; break;
case PERIOD_H1: value = "1時間足 (H1)"; break;
case PERIOD_H4: value = "4時間足 (H4)"; break;
case PERIOD_D1: value = "日足 (D1)"; break;
case PERIOD_W1: value = "週足 (W1)"; break;
case PERIOD_MN1: value = "月足 (MN1)"; break;
default: break;
}
return(value);
}



Period()を実行してint型で取得した現在のチャートの時間足を、PeriodToString関数で変換して表示する例です。
サンプルプログラム内では、英語圏のユーザー向けに日本語の文字を使用しない、PeriodToStringEnも例として載せております。

#property copyright "Copyright 2016, gogojungle"
#property link "http://labo.fx-on.com"
#property version "1.00"
#property strict
#property indicator_chart_window

int OnInit(){
Comment(PeriodToString(Period()) + "¥n" + PeriodToStringEn(Period()));
return(INIT_SUCCEEDED);
}

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 period){
string value = "";

if(period == 0){
period = Period();
}

switch(period){
case PERIOD_M1: value = "1分足 (M1)"; break;
case PERIOD_M5: value = "5分足 (M5)"; break;
case PERIOD_M15: value = "15分足 (M15)"; break;
case PERIOD_M30: value = "30分足 (M30)"; break;
case PERIOD_H1: value = "1時間足 (H1)"; break;
case PERIOD_H4: value = "4時間足 (H4)"; break;
case PERIOD_D1: value = "日足 (D1)"; break;
case PERIOD_W1: value = "週足 (W1)"; break;
case PERIOD_MN1: value = "月足 (MN1)"; break;
default: break;
}
return(value);
}

string PeriodToStringEn(int period){
string value = "";

if(period == 0){
period = Period();
}

switch(period){
case PERIOD_M1: value = "1 minute (M1)"; break;
case PERIOD_M5: value = "5 minutes (M5)"; break;
case PERIOD_M15: value = "15 minutes (M15)"; break;
case PERIOD_M30: value = "30 minutes (M30)"; break;
case PERIOD_H1: value = "1 hour (H1)"; break;
case PERIOD_H4: value = "4 hours (H4)"; break;
case PERIOD_D1: value = "1 day (D1)"; break;
case PERIOD_W1: value = "1 week (W1)"; break;
case PERIOD_MN1: value = "1 month (MN1)"; break;
default: break;
}
return(value);
}
TwitterでシェアFacebookでシェアGoogle+でシェアはてなブックマークに追加

TOPへ