どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 43

 

ウィンドウに表示されているバーの中で最大のATR値を返す関数を書くのを手伝ってください。インターネットで検索しても、同じようなものは見つかりませんでした。

ありがとうございます。

 
dr.Vasgenich :

ウィンドウに表示されているバーの中で最大のATR値を取得する関数を書くのを手伝ってください。インターネットで検索しても、同じようなものは見つかりませんでした。

ありがとうございます。

/

extern int p = 4; // ATR期間

//------

int start()

{

int i;

ダブルエム

while( i < WindowBarsPerChart() - p )

{

double a = iATR( NULL, 0, p, i );

if ( m < a )

{

m=aである。

}

i++;

}

Alert( " 表示されているバー 数の最大ATR値をpipsで表示します ", m / Point ); //.

/////

return(0)です。

}

 

Boeing747 ありがとうございます。すぐにここに書けばよかった。

ですから、私のバージョンでの関数の最終的な変形は次のようになります。

double ATR_Max() {
int i;
ダブルエム
while( i < WindowBarsPerChart() - p ) { 。
double a = iATR( NULL, 0, p, i );
if ( m < a ) { 。
m=aである。
}
i++;
}
Alert( " The maximum ATR value for visible number of bars is - ", m );
return(m)です。
}

 
dr.Vasgenich :

Boeing747 ありがとうございます。すぐにここに書けばよかった。

ですから、私のバージョンでは、関数の最終的な変形は次のようになります。

double ATR_Max() {
int i;
ダブルエム
while( i < WindowBarsPerChart() - p ) { 。
double a = iATR( NULL, 0, p, i );
if ( m < a ) { 。
m=aである。
}
i++;
}
Alert( " The maximum ATR value for visible number of bars is - ", m );
return(m)です。
}

while( i < WindowBarsChart() - p ) に間違いがあったようです。

おそらく、iATR( NULL, 0, p, i ); 関数はチャート上のすべてのバーの値を計算するので、次のようなことができる、あるいはすべきです。

while( i < WindowBarsChart() ) に修正しました。iATR()関数は使ったことがないので、今度やってみます。

実は、iATR()関数を使わずに、そのままの形で関数を書いてもいいんです。

 
Boeing747 :

while( i < WindowBarsChart() - p ) に間違いがあったようです。

ほとんどの場合、iATR( NULL, 0, p, i );関数は、チャート上のすべてのバーの値を計算します。

while( i < WindowBarsChart() ) に修正しました。iATR()関数は使ったことがないので、今度やってみます。

基本的には、iATR()を使わずに、純粋な形で言えば、あなたの関数を書くことができます。


また、期間は関係ないと今更ながら思いました。取り外したほうがいいかもしれませんね。

配列でできないの?ウィンドウ内のすべてのAPRの値を配列に集め、この関数 - ArrayMaximumを使って最大値を 求める 私の知識不足で恐縮ですが、よろしくお願いします。




 
dr.Vasgenich :

期間は関係ないんじゃないかと、今さらながら思っています。取り外したほうがいいかもしれませんね。

これは配列で実現できないのでしょうか?ウィンドウ内のすべてのAPRの値を配列に集め、この関数 - ArrayMaximumを使って最大値を求める 私の知識不足で申し訳ないのですが、このようなことができるでしょうか?




はい、あなたはiATRを介してスクロールすることができます();ループ内のスコア配列にし、ArrayMaximumを 使用してATRの最大値を抽出します。 それはまだ最初のオプションのように配列を獲得するサイクルを使用する必要があるとして、まだ蝶を得る 。しかし、最大値の最初のバージョンではオプションArrayMaximumよりもはるかに経済的であるループをスクロールする過程で計算されました。あまり詳しくなくても、教科書や参考書などでArrayMaximumについて詳しく知ることができます。
 
Boeing747 :
はい、それはiATR();をスクロールすることが可能であり、それとスコアを配列するループで、その後ATRの最大値を抽出するためにArrayMaximumを使用して、同じそれは最初のバリアントのように配列を獲得するループを使用するように特別にbuttery判明。特別な知識は必要なく、教科書や参考書にArrayMaximumの詳細が記載されています。

ありがとうございます、明日確認してみます。もう一つ質問ですが、この関数でテスターのリソースを節約するには、最大値を計算するのが、ティック 毎ではなく、新しいバーが表示された後になるようにするにはどうしたらよいでしょうか?
 
dr.Vasgenich :

ありがとうございます!明日、動作確認をしてみます。もう一つ質問ですが、この関数でテスターのリソースを保存するには、最大値を各ティックではなく、新しいバーが表示された後に計算するようにするにはどうしたらよいでしょうか?

まずはこの方法で試してみてください

をグローバルレベルで宣言する。

を書き、ループの上に

if ( t != Time[0] )

{

t = Time[0]です。

// ATRmaxを計算するループ

}

この方法では,ループ内の計算は新しいバーの 開始時に一度だけ行われます.おそらく,もっと巧妙な方法があるのでしょう.

 

Boeing747さん、dr.Vasgenich さん、皆さん、「SRC」ボタンは使えないんですか、大丈夫ですか?

 
Zhunko :

Boeing747さん、dr.Vasgenich さん、皆さん、「SRC」ボタンは使えないんですか、大丈夫ですか?

SRC」ボタンを使うのを忘れてしまうんです。 習慣なんでしょうね。 60歳になるとなかなか気持ちの切り替えができません。 明日からあなたのボタンを使ってみます。