インジケータでのOnDeinit - ページ 4

 
eevviill:
OKです。Deinitはゼロ化もしない。

まだ質問に答えていませんが、バッファをゼロにするというのはどういうことですか?

クライアント端末は、インジケータ・バッファの内容をゼロにしない。零点調整はプログラマが行うものとする。

バッファは、インジケータがアンロードさ れると自動的にクリアされます

 
stringo:

まだ質問に答えていませんが、バッファをゼロにするというのはどういうことですか?

クライアント端末は、インジケータ・バッファの内容をゼロにしない。零点調整はプログラマが行うものとする。

インジケーター読み込み時にバッファを自動削除

 ArrayInitialize(body_up,EMPTY_VALUE);
ArrayInitialize(body_down,EMPTY_VALUE);
ArrayInitialize(shadow_up,EMPTY_VALUE);
ArrayInitialize(shadow_down,EMPTY_VALUE);
  ArrayInitialize(yell_body_up,EMPTY_VALUE);
ArrayInitialize(yell_body_down,EMPTY_VALUE);
ArrayInitialize(yell_shadow_up,EMPTY_VALUE);
ArrayInitialize(yell_shadow_down,EMPTY_VALUE);
ininitでもdeinitでもうまくいきません。
 
eevviill:
initでもdeinitでもうまくいきません。
なぜdeinitで必要なのですか?また、なぜ動的な 指標配列を 初期化する必要があるのでしょうか?
 
eevviill:
init、deinitのいずれでも動作しません。

もう一度言います。

総再計算の前にのみ、配列を初期化する必要があります。また、これは配列の 各要素を埋める のではなく、選択的に埋める場合のみです

 
stringo:

もう1度

合計の再計算の前に、配列を初期化するだけです。しかも、それは配列を選択的に埋める場合のみで、次々に要素を埋めるわけではありません

eevviill:
これはinitでもdeinitでもうまくいきません。

なぜdeinitで必要なのですか?また、なぜ動的な 指標配列を 初期化する必要があるのでしょうか?

問題を読みましたか?

 
evillive:
なぜdeinitに必要なのか?また、なぜインジケーターの動的配列を初期化するのでしょうか?

なぜなら、どこかでそうしなければならないからです。イニテはダメだと言っている。

0小節しかカウントされないから。ターミナルを閉じた 後、数本のローソク足の後にターミナルを開くと、0バーはターミナルが閉じられた時間のオフセットで+1バーが計算されます。

 
stringo:

もう1度

総再計算の前に、配列を初期化するだけでよい。また、これは配列に選択的に入力する場合のみで、要素ごとに一列に入力するわけではありません

いいですね。要素0だけ埋める。

もし、問題が理解できないのであれば、もう一度説明します。

 
eevviill:

なぜなら、どこかでそうしなければならないからです。イニテはダメだと言っている。

0小節しかカウントされないから。ターミナルを閉じて、ローソク足数本後に開くと、0本バーが計算される+ターミナルを閉じるまでにシフトしてもう1本計算されていることが判明。

実際には、ゼロバーは正しく計算されていますが、その後、履歴が読み込ま れました。そして、新たなゼロバーが算出されました。
 
Vinin:
実はゼロバーは正しく計算されていたのですが、その後、履歴が読み込まれました。そして、新たなゼロバーが算出されました。

これです。そのためにバッファーゼロ化をしています。イニテはもう無理だって言ってるじゃん。

ダイニットしたい。しかし、そこでもうまくいかない。なぜ?

 
もう一度(指をくわえて)説明してみます。
  1. 前回の起動からX時間後に端末が起動した
  2. 履歴のダウンロードを開始したが、見つからない(端末が X 分間アイドル状態だった)
  3. 利用可能な履歴に対してOnCalculateを呼び出す prevtime=最後の既知の履歴時間、インジケータバッファサイズ Nバー
  4. サーバーから履歴をダウンロードしている間、チックが入る
  5. Time[0]はtick time、prevtimeとして記憶、バッファサイズはN+1本(NとN+1本の間にヒストリーのギャップがある)です。
  6. 履歴がダウンロードされた後、OnCalculateが再び呼び出されますが、今度は履歴に穴はなく、prevtimeはTime[0]と同じ日付になっています。新しいバーはなく(それぞれ、インディケータのバッファがクリアされていない)、インディケータN+X/タイムフレームのバーのバッファサイズとIndBuffer[0]はステップ5と同じではありません。