講座記事第106回時点でのOriginalPrice.mqhファイル全体のコード記述について

Uncategorized

※【おススメのMT5MQL5対応のFX業者】

MQL5にて開発した、MT5EAを実運用するにあたり、

当サイトでは以下の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);//最安値を戻り値として返す
}

———————————————————————————

※【おススメのMT5MQL5対応のFX業者】

外為ファイネストに関する記事は↓をご覧ください。

アヴァトレードジャパンに関する記事は↓をご覧ください。

フィリップ証券に関する記事は↓をご覧ください。

コメント

タイトルとURLをコピーしました