double MACDBuffer[];
double SignalBuffer[];
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,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd bufferfor(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MACDBuffer,Bars,9,0,MODE_SMA,i);
//t=MACDBuffer[0];//Print(t*10000);//---- doneint max,min;
staticdouble maxlast,minlast;
max = ArrayMaximum(MACDBuffer,20,1);
min = ArrayMinimum(MACDBuffer,20,1);
if (MACDBuffer[max]!=maxlast){
maxlast=MACDBuffer[max];
ObjectDelete ("highline");
ObjectCreate ("highline",1,WindowOnDropped( ) ,0,MACDBuffer[max],0,0);
}
if (MACDBuffer[min]!=minlast){
minlast=MACDBuffer[min];
ObjectDelete ("lowline");
ObjectCreate ("lowline",1,WindowOnDropped( ) ,0,MACDBuffer[min],0,0);
Print(min,max);
}
return(0);
}
与えられたバー数に対して、MACD指標の最小値(図のように)と最大値を決定する必要があるのですが。(この場合は20)。
価格に対してこれを行うコードを見つけ、愚かにもHIGH LOWをMACDに置き換えてみたのですが、何の効果もありませんでした...。
必要な MACD データを配列 massMACD[20] にコピーし、その配列の中から最小値ArrayMinimum(massMACD); と最大値
ArrayMaximum(massMACD); を求めます。
カスタムmacdacの末尾に挿入する。
追伸:より正しくて良いですが。
だとしたら、うまくいかない......。
必要な MACD データを配列 massMACD[20] にコピーし、この配列の中で検索します。
最小値 ArrayMinimum(massMACD); および
最大値 ArrayMaximum(massMACD); values.
をご覧ください。
問題は、どのようにしてデータをアレイにコピーするかということです。
とか、こんな感じ?
だとしたら、うまくいかない......。
カスタム MACDの最後に。
ナビゲーター ==>カスタムインディケータ==> MACD ==> PCM (マウス右ボタン) ==> 編集=>
は素晴らしい。
問題は、どのようにしてデータをアレイにコピーするかということです。
とか、こんな感じ?
man, それは同じことです。ただ、iMACDを呼び出すと そのソースコードと同じだけのリソースを消費する、という事実がないだけです。
iMACDとすべてのiCostumは配列メンバの値を返すので、ループしてバッファに集め、さらにopする必要があります。
というのは、1つの値しか得られず、20個必要なので、ループを使用します。
カスタム MACDの最後に。
ナビゲーター ==> カスタムインディケータ ==> MACD ==> PCM (マウス右ボタン) ==> 編集=>
ということです。)
ただ、確かに私が必要としていることはできませんが、一例として活用してみようと思います。
しゃい
を始めましょう。
20(19でも可)個のインジケータ値を配列にコピーするには、これだけで良いのでしょうか?
を始めましょう。
20(19でも可)個のインジケータ値を配列にコピーするだけで良いのでしょうか?
はっきり言って、誰かが何かを必要としていて、私が何かを知っているならば、私は喜んでその人を助けようとします。
でも、屁の後にいちいち尻を拭かないよ。
そうです、静的配列 doubleMACDBuffer[20] を宣言すれば十分で、動的配列 doubleMACDBuffer[] を宣言すれば十分ではありません。
artmedia70が教えて くれましたね。
はっきり言って、誰かが何かを必要としていて、私が何かを知っているならば、私は喜んでその人を助けようとします。
でも、屁の後にいちいち尻を拭かないよ。
そうです、静的配列 doubleMACDBuffer[20] を宣言すれば十分で、動的配列 doubleMACDBuffer[] を宣言すれば十分ではありません。
artmedia70が教えて くれましたね。
よし、静止画にしよう。
なぜ19__0と表示されるのですか?
OK、静止画にしましょう。
なぜ19__0と表示されるのですか?
なぜなら、正しく機能するからです。他に何か?