エラー、バグ、質問 - ページ 1805

 
Alexey Kozitsyn:
@Slawa さん、はっきりさせてください、OnCalculate()関数の外でインジケータバッファを書き込むことに何か制約があるのでしょうか?OnTimer(), OnBookEvent(), OnChartEvent() 関数でバッファを書き込む場合、常にすべてが正しく書き込まれるのでしょうか?

明示的な制限はありません。試してみてはいかがでしょうか。

しかし、新しいバーを追加した瞬間にバッファの再分配が発生することがあります(再分配は予備で行われるため、新しいバーごとに行われるわけではありません)。

すべての処理は1つのスレッドで行われるため、衝突は起こらないはずですが、PS。トライ
削除済み  
Slawa:
明らかな制限はありません。試してみてください。

しかし、新しいバーを追加した瞬間にバッファの再分配が発生することがある(再分配はある程度の予備を持って行われるため、すべての新しいバーで行われるわけではない)。

ここで、詳細をお願いします。配分はどうなっているのか、どう処理すればいいのか。

ただ、新しいバーで「しゃっくり」に気がついたので質問を書きました。そして、これらのしゃっくりは、ヌルバッファーの値= 0(私が明示的に設定した空の値 - EMPTY_VALUE)です。今のところ、この瞬間をとらえることはできていない。インジケーターが "ジャンプ "してすぐに元に戻ることもあれば、"フリーズ "することもあります。スタックした場合、値はファイルに書き込まれず、バッファは描画されません。バッファは、OnBookEvent()に書き込まれる。

同じコードがOnCalculate()でも問題なく動作しますが、OnCalculate()では、建玉やその他の取引所パラメーターのすべての値を収集することはできません。

TFの切り替えでしか解決できない。はい、5-7個の同じインジケータが同時に動作し、異なるデータを書き込んでいます。

追加されました。

そうそう、今日も端末の電源を入れるときにまったく同じことに気づきました。すべてのバッファ、すべての値にはゼロがあり、インジケータからヒストリ(ファイルへの書き込み)が出ず、すべてがハングしました。つまり、すべてがハングアップしただけなのだ。市場はまだ閉まっていた。TFを変更したところ、履歴が戻りましたが、再度、SESSIONの値にタイムスタンプが必要かという質問に対して、端末クローズ時の最後の既知の値が記録されているとのことでした履歴の同期に成功、エラーなし。しかし、TimeCurrent()は誤った値(21時03分頃)を返しました。この値の実時間は23:49:59です。全体として、ある種の悲しみを感じる。

 
Alexey Kozitsyn:

ここで、詳細をお願いします。配分はどうなっているのか、どう処理すればいいのか。

ただ、新しいバーで「しゃっくり」に気がついたので質問を書きました。そして、これらのしゃっくりは、ヌルバッファーの値= 0(私が明示的に設定した空の値 - EMPTY_VALUE)です。今のところ、この瞬間をとらえることはできていない。インジケーターが "ジャンプ "してすぐに元に戻ることもあれば、"フリーズ "することもあります。スタックした場合、値はファイルに書き込まれず、バッファは描画されません。バッファは、OnBookEvent()に書き込まれる。

同じコードがOnCalculate()でも問題なく動作しますが、OnCalculate()では、建玉やその他の取引所パラメーターのすべての値を収集することはできません。

TFの切り替えでしか解決できない。はい、5-7個の同じインジケータが同時に動作し、異なるデータを書き込んでいます。

簡単なことです。新しいバーの最初のティックが来る。バッファは1000本分確保されており、完全に満杯になっている。

バッファを1250本に再割り当てし、以前のバッファから1000本を新しいバッファにコピーします。新しいバッファを古いバッファの代わりに置き、古いバッファを削除します。1001本目のバーを追加します。

それをどうするかということですか?

1つのシンボルのすべての指標は、1つのスレッドで次々にカウントされることに留意してください。一つの指標が遅くなると、シンボル処理のスレッド全体も遅くなる
削除済み  
Slawa:
簡単です。新しいバーの最初のティックが到着する。バッファは1000本分確保されており、完全に満杯になっている。バッファを1250本に再割り当てし、旧バッファから新バッファに1000本コピーします。新しいバッファを古いバッファの代わりに置き、古いバッファを削除します。1001本目のバーを追加します。それをどうするかということですか?1つのシンボルのすべての指標は、1つのスレッドで次々にカウントされることに留意してください。インジケータが遅くなると、シンボル処理のスレッド全体も遅くなる





1スレッドくらい知ってます。そして、私が理解した限りでは、再配布はOnCalculate()よりもOnBookEvent()に強く影響するのですね。
 
Alexey Kozitsyn:
単糸の件は承知しています。そして再配布は、私の理解では、OnCalculate()よりもOnBookEvent()に影響があるのでは?
新しいティックが到着すると再分配が行われます。新しいtickが到着した直後にOnCalculateが 順番に呼び出されます。そして、その後にのみ、インジケータが受信したイベントの処理が継続されます

しかし、インジケータ(このシンボルの任意のインジケータ!)がその計算(OnCalculate、OnTimer、OnChartEvent、OnBookEvent)を終了するまで、新しいティックは処理に到着しません。
削除済み  
Slawa:
再分配は新しいティック到着時に行われます。新しいティックがキューから到着した直後にOnCalculateが呼び出さ れます。そして、その後に初めて、インジケータが受信したイベントの処理が継続されます

しかし、インジケータ(このシンボル上の任意のインジケータ!)がその計算(OnCalculate、OnTimer、OnChartEvent、OnBookEvent)を終了するまで、新しいティックが処理されるために到着することはありません。

また、私が理解する限り、1つのシンボル上の指標は順次計算されます。つまり、私がi1、i2、i3指標を一列に投げた場合、それらは同じ順序で計算されるのでしょうか?

標準的なMAKDを追加しました。

 
Alexey Kozitsyn:

また、私が理解する限り、1つのシンボル上の指標は順次計算されます。つまり、私がi1、i2、i3指標を一列に投げた場合、それらは同じ順序で計算されるのでしょうか。

今、私はテストのために標準的なMAKDを追加しました。 それはリストの最後のものです。 私は、新しいバーが形成されたときにそれにハングアップするかどうかを確認します。

最初はそうですね、同じ順番で計算します。

しかし、異なる指標を削除-追加する場合、再計算の順序はあなたを驚かせるかもしれません。従って、シーケンスに依存しないでください。
削除済み  
Slawa:
最初はそうですね、同じ順番で計算します。

しかし、異なる指標を削除-追加した場合、再計算の順序に驚くかもしれません。だから、シークエンスに頼ってはいけないのです。
これは、もし私のインジケータがハングアップした場合、最後の1つである標準的なMAKDが計算されるかどうかを確認するために必要です。私の場合は、すべてMACDの前に行きます。
削除済み  
Slawa:

こういうことだったんですね。

GOLD-3.17で新しいバーが形成され、このシンボルによってOnBookEvent()で計算された私のすべての指標は、すべての現在の値がゼロになった。このインジケーターのロジックでは、新しいバーが形成された時点で、バッファはゼロにならず、すぐに現在の値が書き込まれます。MACDはゼロにならない。ログが空であることは、非同期がなかったことを意味し、すべての値は正しいはずです。この場合、不具合は5秒程度続きました。昨日は数分単位で不具合をキャッチしていました。

他のキャラクターは全て問題なかった。ここでも、インジケーターのロジックは、値を0にリセットしないのですそこで質問ですが、新しい商品を再分配する場合、理論上はゴミを含むはずです。しかし、ここで0.0とハングアップしてしまう...。

そうそう、もうひとつ、ひとつの指標がハングアップしても、他の指標はその値を維持するべきだったんだ!しかし、そのすべてが、一度にゼロになった。このような事態が起こる可能性はありますか?
削除済み  

BR-3.17でも同様のハングアップが発生しています。

スラワは どっちを掘ればいいんだ?交換データを収集し、表示するための良い方法があるのでは?