ライブラリ: CheckHistory - 履歴チェックと読み込みの関数

 

CheckHistory - 履歴チェックと読み込みの関数:

MetaQuotesの履歴読み込み関数を少し変更しました。

作者: Andrey Khatimlianskii

 

このような機能があることに気づきました。

マーケット・ウォッチ」で選択されておらず、履歴が埋まっていないシンボルのインジケータからバッファ・データを削除する必要がある場合、このような機能をねじ込む必要があります:

.....
   uint start=GetTickCount();
   // 私の行 [スタート]
   long m=SymbolInfoInteger(symbol,SYMBOL_SELECT);
   if(m<1)
     {
      bool is_selected=SymbolSelect(symbol,true);
      Sleep(500);
     }
   // 私の行 [end]
   if(CheckTerminalHistory(symbol,period,size) || CheckServerHistory(symbol,period,size))
     {
      if(print_info)
        {
   
.....
 
私は何か間違ったことをしている。チャート(テスター) - H1。私は3000個(BarsToAnalyse=3000)の量のバー - H4をロードする必要があります。読み込めません。関数の行:
if ( first && !CheckLoadHistory( _Symbol,PERIOD_H4, BarsToAnalyze ) )
 
Forex_Noob:
私は何か間違ったことをしている。チャート(テスター) - H1。私は3000個(BarsToAnalyse=3000)の量のバー - H4をロードする必要があります。それはロードされません...関数を使用して行:

それはログに何を書くのですか?何が起こりますか?ハングアップするだけですか?

通常のチャートで実行した場合、ロードしますか?ブローカーのサーバーに履歴はあるか?

 

ロードは、SERIES_SYNCHRONIZED パラメータを持つSeriesInfoIntegerを使用して行われると理解していますか?

これは興味深いことで、確認する必要があります...私はこれらの過去の相場をいじっているので...チャートを開いて、バーのロードが止まるまでホームをシミュレートしています。これらの方法の違いは何だろう?

 
elugovoy:

ロードは、SERIES_SYNCHRONIZED パラメータを持つSeriesInfoIntegerを使用して行われると理解していますか?

これは興味深いことで、確認する必要があります...私はこれらの過去の相場をいじっているので...チャートを開いて、バーのロードが止まるまでホームをシミュレートしています。これらの方法の違いは何だろう?

何の違いもないはずです。この関数は、必要な履歴をすべてロードして再計算します。
 

2018年末に通用する唯一のもの。+5とありがとう!

何か改善策はありますか?

 
Vladimir Pastushak:

2018年末に通用する唯一のもの。+ありがとう!

何か改善策はありますか?

ウラジミール、なぞなぞはやめてくれ。

 
Andrey Khatimlianskii:

ウラジーミル、なぞなぞを言うな

急いでいたんだが、君のコードも履歴に問題があるシンボルでハングするんだ...。

履歴をロード するためのコードをたくさんテストしたが、どれもいくつかのtsfdでハングした。

君のコードもそうだ。

 
Vladimir Pastushak:

急いでいたので、あなたのコードも履歴に問題があるキャラクターではハングアップしてしまいます。

履歴を読み込む コードをたくさんテストしましたが、どれもいくつかのtsfdでハングしました。

あなたのコードも同じです。

iBarsでも特定の条件下でフリーズするという議論があった。

今それを調べる気はない。

 

こんにちは、


あなたのコードについて2つ質問があります。

関数

CheckServerHistory()関数内で

CheckServerHistory(...)
{
        ...
        if(first_server_date>TimeCurrent()-size*PeriodSeconds(period)) return(false);
        ...
}

これは本当に機能するのでしょうか?なぜなら、市場のクローズを考慮する場合、時間差と期間のカウントが異なるからです。


関数

CheckLoadHistory()

CheckLoadHistory(...)
{
        if(CheckTerminalHistory(symbol,period,size) || CheckServerHistory(symbol,period,size))
        { ... }
}


ここでは、最初に端末のデータをチェックし、その後にサーバーのデータをチェックします。

その逆は理にかなっているのでしょうか?