当サイトでは以下のFX業者をおススメいたします。
———————————————————————————-
講座記事第106回時点でのOriginalPrice.mqhファイル全体のコード記述は以下の通りです。
//+------------------------------------------------------------------+
//| OriginalPrice.mqh |
//| MQL5ssei |
//| https://mqlinvestmentlab.com/ |
//+------------------------------------------------------------------+
#property copyright "MQL5ssei"
#property link "https://mqlinvestmentlab.com/"
#define BARS_MAX 100 //コピーするバー情報の数
class OriginalCBars
{//このクラスにはプライベートやプロテクテッドセグメントがない
public:
OriginalCBars(void);//コンストラクタ MqlRates型のpublic変数配列barを時系列順にセット
MqlRates bar[];
//バーデータをbar[]にコピーする
void Update(string parSymbol, ENUM_TIMEFRAMES parPeriod);
//終値にアクセスする
double Close(int parShift);
//高値にアクセスする
double High(int parShift);
//安値アクセスする
double Low(int parShift);
//始値にアクセスする
double Open(int parShift);
//オープン時間にアクセスする
datetime Time(int parShift);
//ティック量にアクセスする
long TickVolume(int parShift);
//取引数量にアクセスする
long Volume(int parShift);
};
OriginalCBars::OriginalCBars(void)
{//MqlRates型のpublic変数配列barを時系列順にセット
ArraySetAsSeries(bar,true);
}
void OriginalCBars::Update(string parSymbol,ENUM_TIMEFRAMES parPeriod)
{
CopyRates(parSymbol,parPeriod,0,BARS_MAX,bar);//barはMqlRates型のpublic変数配列
}
//終値情報にアクセスする
double OriginalCBars::Close(int parShift=0)
{
return(bar[parShift].close);
}
//高値情報にアクセスする
double OriginalCBars::High(int parShift=0)
{
return(bar[parShift].high);
}
//安値情報にアクセスする
double OriginalCBars::Low(int parShift=0)
{
return(bar[parShift].low);
}
//始値情報にアクセスする
double OriginalCBars::Open(int parShift=0)
{
return(bar[parShift].open);
}
//ティック数情報にアクセスする
long OriginalCBars::TickVolume(int parShift=0)
{
return(bar[parShift].tick_volume);
}
//オープン時間情報にアクセスする
datetime OriginalCBars::Time(int parShift=0)
{
return(bar[parShift].time);
}
//取引量情報にアクセスする
long OriginalCBars::Volume(int parShift=0)
{
return(bar[parShift].real_volume);
}
//Ask値を取得する関数
double Ask(string parSymbol=NULL)
{
if(parSymbol == NULL) parSymbol = _Symbol;
return(SymbolInfoDouble(parSymbol,SYMBOL_ASK));
}
//Bid値を取得する関数
double Bid(string parSymbol=NULL)
{
if(parSymbol == NULL) parSymbol = _Symbol;
return(SymbolInfoDouble(parSymbol,SYMBOL_BID));
}
//+------------------------------------------------------------------+
//| 最高値を取得する関数 |
//+------------------------------------------------------------------+
double HighestHigh(string parSymbol, ENUM_TIMEFRAMES parPeriod, int parBars, int parStart = 0)
{
double high[];//高値を格納する配列を用意
ArraySetAsSeries(high,true);//配列を時系列にセット
int copied = CopyHigh(parSymbol,parPeriod,parStart,parBars,high);//高値情報を配列にコピー
if(copied == -1) return(copied);//コピーエラーが発生したら終了
int maxIdx = ArrayMaximum(high);//最高値のあるインデックスを取得し変数に格納
double highest = high[maxIdx];//最高値を取得し変数に格納
return(highest);//最高値を戻り値として返す
}
//+------------------------------------------------------------------+
//| 最安値を取得する関数 |
//+------------------------------------------------------------------+
double LowestLow(string parSymbol, ENUM_TIMEFRAMES parPeriod, int parBars, int parStart = 0)
{
double low[];//安値を格納する配列を用意
ArraySetAsSeries(low,true);//配列を時系列にセット
int copied = CopyLow(parSymbol,parPeriod,parStart,parBars,low);//安値情報を配列にコピー
if(copied == -1) return(copied);//コピーエラーが発生したら終了
int minIdx = ArrayMinimum(low);//最安値のあるインデックスを取得し変数に格納
double lowest = low[minIdx];//最安値を取得し変数に格納
return(lowest);//最安値を戻り値として返す
}
———————————————————————————
外為ファイネストに関する記事は↓をご覧ください。
アヴァトレードジャパンに関する記事は↓をご覧ください。
フィリップ証券に関する記事は↓をご覧ください。
コメント