//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 17.05.2008 |//| Описание : Возвращает значение максимального элемента массива. |//+----------------------------------------------------------------------------+//| Параметры: |//| x - массив значений числового ряда |//+----------------------------------------------------------------------------+double ArrayMax(double& x[]) {
if (ArraySize(x)>0) return(x[ArrayMaximum(x)]);
else {
Print("ArrayMax(): Массив пуст!");
return(0);
}
}
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st bufferfor(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd bufferfor(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- donereturn(0);
}
この記事を見て ください、言うほど簡単なことではありませんし、一般的にかなり有用です。
RSI_Extremums_Sample.mq4 に似たようなことが書いてあるの ですが、 私にはできません。 とか、必要ないんだけど...。
RSI_Extremums_Sample.mq4( )に似たようなものが あるが、このコードは扱えない。不要なものが多すぎるし、インジケータが描画する・・・。 とか、必要 ないんだけど...。
ArrayMaximum "関数を使用して、カスタムインジケータの最も近い最大値を計算することは可能でしょうか?
それとも、そのために他の機能が必要なのでしょうか?
私はこの方法で試してみました。
そして、何も出てきません。達人たちよ、その方法を教えてくれ!ただ一つわからないのは、例えばMACD指標の極値を計算する場合、n期間の価格の極値ではなく、どのように計算するのでしょうか?
キーブロックのHIGHとLOWをMACDに変更する必要があると思うのですが・・・。でも、どうしてなのか......私がふざけようとしたことは、すべて無効化で終わってしまったんです。
MACDの配列を作成する必要があることは理解したのですが...。
double MACDBuffer[];
他のExpert Advisorでもこのような文字列を見たことがあります。
でも、片方だけ測るわけにもいかないし......。
どうすればいいのか、アドバイスをお願いします。
記事.
は、Kim'sの中で同じようなものを見つけました。
question: インジケータ値の配列を作成するにはどうすればよいですか?
は、Kim'sに似たようなものがありました。
質問:インジケータ値の配列を作成する方法は?
質問されたことを読み返したら、最初間違えてた(
で、インジケーターデータのバッファを取得することができます。
1)バッファに iMACDの値を集めてループを実行する
2) MACDからソースコードを取り、そこにバッファがあります。
質問されたことを読み返すと、最初は間違えていました(
インジケーターのデータでバッファを取得するには、次のようにします。
1) バッファにiMACDの値を集めてループを実行する
2) バッファのあるMACDからソースコードを取り出します。
バッファをどう可視化すればいいのか、そうでないと理解できない......。
Print(MACDBuffer[1]); ?ゼロと表示される...なぜ?理論的には1本目のバーの値であるべきだが...。
そしてもうひとつ...iMACDという直接の関数があるのに、なぜMAを使ってMACDを計算するのでしょうか?
また、バッファをどのように可視化すればいいのかがわからない......。
Print(MACDBuffer[1]); ?ゼロと表示される...なぜ?1本目のバーの値のはず...。
そしてもうひとつ...なぜMACDをMAで計算するのですか?
必要なものを教えてください。
が、頭の悪い人でもわかるように、もっとわかりやすくすべきです。
ご要望をお聞かせください。
を、頭の悪い人にもわかるように、わかりやすく説明します。
MACDインジケータの 最小値(画像)と最大値を、指定された数のバーに対して決定する必要があります。(この場合は20)。
価格に対してこれを行うコードを見つけ、愚かにもHIGH LOWをMACDに置き換えてみたのですが、何の効果もありませんでした......。
いい話をするのがDCの仕事です。怠け者で、いつもMCのせいにしている。
ありがとうございました。
与えられたバー数に対して、MACD指標の最小値(図のように)と最大値を決定する必要があるのですが。(この場合は20)。
価格に対してこれを行うコードを見つけ、愚かにもHIGH LOWをMACDに置き換えてみたのですが、何の効果もありませんでした...。
PS.こちらの方が正しくて良いのですが。