トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 506

 
ミハイル・マルキュカイツ

みなさん、こんにちは!!!みんな、インジケーターの計算を 遅らせる方法を教えてくれませんか?新しいバーが開いたので、30秒後にインジケータを計算する必要があります!!!!

インジケータの計算に遅延が必要で、30秒待つ必要があります。または、それが書かれている場所や例を私に助言する、私はすべての上につまずいた、私は見つけることができません:-(

遅延は何のためにあるのですか?

 
ヴィタリー・ムジチェンコ

なぜ遅れたのか?


SMEからのデータは30秒遅れで読み込まれます。そして、時々、インジケータが計算され、データがロードされた後、インジケータを再コンパイルすると、バーライフの最初の5秒とは対照的に、データが完全にロードされているため、方向が変わってしまうのです。原則として、30秒あれば十分です。インジケーターで行うことは可能ですか?遅延のことなんですが...。

 
ミハイル・マルキュカイツ

SMEからのデータは30秒遅れで読み込まれます。そして、時々、インジケータが計算され、データがロードされた後、インジケータを再コンパイルすると、バーライフの最初の5秒とは対照的に、データが完全にロードされているため、方向が変わってしまうのです。原則として、30秒あれば十分です。インジケーターで行うことは可能ですか?遅延のことなんですが...。

1回限りのタイマーイベントを作るかのどちらかです。
新しいバータイムを記憶し、30秒が経過したかどうかをティックごとに チェックします。
 
アレクセイ・テレンテフ
ワンタイムタイマーイベントを作るかのどちらか。
または自分で作る:新しいバータイムを記憶し、各ティックが 30秒経過しているかどうかをチェックします。

タイマー機能がよくわからない。以前のアドバイスを参考に、以下のような関数にしたところ、遅延なくバーが計算されるようになりました。(これがないと、TFを切り替えるまで全くカウントされない)。

void OnTimer()
{
   int bars = Bars(_Symbol, _Period);
   if (bars <= 0) return;
   
   datetime T[];
   int res = CopyTime(_Symbol, _Period, 0, bars, T);
   if (res <= 0) return;
   
   // unused params
   double d[];
   long l[];
   int i[];
   OnCalculate(bars, bars - 1, T, d, d, d, d, l, l, i);
   ChartRedraw();
}

どのようなアレンジが良いのか、ご提案いただけないでしょうか?

 
ミハイル・マルキュカイツ

SMEからのデータは30秒遅れで読み込まれます。そして、時々、インジケータが計算され、データがロードされた後、インジケータを再コンパイルすると、バーライフの最初の5秒とは対照的に、データが完全にロードされているため、方向が変わってしまうのです。原則として、30秒あれば十分です。インジケーターで行うことは可能ですか?遅延のことなんですが...。

最初に来たのは

 int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
 // здесь ваши расчёты 
 int limit=rates_total-prev_calculated;
  if(limit>0) { 
  ...
  }

 // задержим на 30 сек
 if(time[0] > TimeCurrent()-30)
   return(rates_total-1);

 // остальной код
   ...
 
ヴィタリー・ムジチェンコ

最初に出てきたのは


面白い!!!ターキーにコードを入れてください、見てみます。しかし、そのような遅延はonTimerに記述されるべきだと思ったのですが、違いますか?

とにかくありがとうございます!!!
 
ミハイル・マルキュカイツ

みなさん、こんにちは!!!みんな、インジケーターの計算を 遅らせる方法を教えてくれませんか?新しいバーが開いたので、30秒後にインジケータを計算する必要があります!!!!

30秒後の遅延インジケータが必要なのですが、どこに書いてあるのか、または例を教えてください。

なぜ30秒なのか?- 60秒間、つまり1小節目で数えるのではなく、2小節目で数えるようにします。I.e. 新しい0本のバーがある場合、1本目はまだ30秒待つ必要がありますが、2本目は準備できています。

さらに、オープニング価格による最適化、テストが必要です。

 
Review of Econometric Models Applicable to Hedge Fund Returns Capturing Serial Correlation and Illiquidity by Ludovic Dubrana :: SSRN
  • papers.ssrn.com
Hedge Fund returns are often highly serially correlated mainly due to illiquidity exposures given that investments in such securities tend to be inactively traded and associated market prices are not always readily available. Following that, observed returns of such alternative investments tend to be smoother than “true” unobserved returns...
 

ざっと見た感じでは結論から言うと、GARCHモデルにとっては些細な情報を見たのです。この資料から何を読み取ればいいのかわからない?

 
エリブラリウス

なぜ30秒なのか?- 1小節目から数えるのではなく、2小節目から数えるように、一気に60秒間行ってください。例えば、新しい0本目のバーが出た場合、1本目はまだ30秒待つ必要がありますが、2本目は準備できていることになります。

また、オープニング価格での最適化やテストも行っていることでしょう。


BOO!!!でやってます。でも、メインストラテジーでは使えない、ディシジョンバーを後ろにずらす必要があるということで、基本戦略に反するので選択肢に入らない...ということです。

理由: