記事"MQL5でのインディケーター の呼び方"についてのディスカッション - ページ 2

 

私にはファイルをコンパイルすることができません。

何が起こっているのか見当がつきません。

ありがとう、

ジョルディ

 
大きな仕事をありがとう!
 

ありがとう!

以下は、私が遊びながらまとめた簡単な例です。

もし間違っていたら修正しますので、ご指摘ください。

私が奇妙に思うのは、値がチャート上の単純な移動平均と一致しないようです。

################### スクリプトでは

int period = 21; // 21バーの移動平均
int sampleSize = 100;//This is thenumber of bars of data you want to fetch
int handle = iCustom(Symbol(),0, "ExamplesCustom Moving Average",
期間、// 期間
0, // オフセット
MODE_SMA、// 計算方法
PRICE_CLOSE // 終値で計算
);


void OnTick()
{

// これは移動平均がコピーされる配列です。

//
// この配列の最初の項目(0 番目の項目)は、最新のものです。
// 最後の項目は、配列の最後の項目です;

ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) <0){Print("CopyBufferMA1 error =",GetLastError());}

double currentMovingAverage = movingAverageValues[0];

double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];


################################# EAでは(注:OnInitとOnTick)

int OnInit(){

int period = 21; // 21バーの移動平均

int sampleSize = 100; //これは、
取得したいデータのバー数 です。int handle = iCustom(Symbol(),0, "ExamplesCustom Moving Average",
period, //期間
0, // オフセット
MODE_SMA, // 計算方法
PRICE_CLOSE // 終値で計算
);

}

OnTick()
{

// これは移動平均がコピーされる配列です。
//
// この配列の最初の項目(位置 0 の項目)は、最新のものです
// 最後の項目は、配列の最後の項目です ArraySize() - 1
double movingAverageValues[];

ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) <0){Print("CopyBufferMA1 error =",GetLastError());}

double currentMovingAverage = movingAverageValues[0];

double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];

}

 
素晴らしい記事
 
そうだね...このようなハンドルを毎回コード化するよりも、自分でインジケーターを考案してロボットのコードに組み込んだ方が簡単だね...退屈