FORTS 助けてください - ページ 7

 
コードを隠し続ける?
 
barabashkakvn:
コードを隠し続ける?

書き込みも読んでないのか?

ミカラス2015.03.26 18:56RU

叫んでチュクチと言ったが、問題は解決していない!

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//
bool is_failed = false;
datetime start_time;
datetime end_time;
int mix_bars, rts_bars, si_bars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
    start_time = StringToTime( "2015.03.17" );
    end_time = TimeCurrent();
//--- indicator buffers mapping
  mix_bars = GetBars( "MIX-6.15" , PERIOD_CURRENT, start_time, end_time ); 
  if ( mix_bars < 1 )
  {
    is_failed = true;
    Print( "Init failed. MIX-6.15 ");
  }
  rts_bars = GetBars( "RTS-6.15" , PERIOD_CURRENT, start_time, end_time ); 
  if ( rts_bars < 1 )
  {
    is_failed = true;
    Print( "Init failed. RTS-6.15 ");
  }
  si_bars = GetBars( "Si-6.15" , PERIOD_CURRENT, start_time, end_time ); 
  if ( si_bars < 1 )
  {
    is_failed = true;
    Print( "Init failed. Si-6.15 ");
  }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator Get bars function                               |
//+------------------------------------------------------------------+
int GetBars( string symbol, ENUM_TIMEFRAMES period, const datetime start_date, const datetime end_date )
{
  if ( !SymbolInfoInteger( symbol, SYMBOL_SELECT ) )
  {
    ResetLastError();
//---    
    if ( GetLastError() != ERR_MARKET_UNKNOWN_SYMBOL )
    {
      SymbolSelect( symbol, true );
    }
    else
    {
      Print( "GetBars: Неизвестный символ - ", symbol );
      return( 0 );
    }    
  }
//---  
  if ( MQL5InfoInteger( MQL5_PROGRAM_TYPE ) == PROGRAM_INDICATOR && Period() == period && Symbol() == symbol )
  {
    Print( "GetBars: Не пройдена проверка типа программы!" );
    return( 0 );
  }  
//---
  if ( SymbolIsSynchronized( symbol ) )
  {
    return( Bars( symbol, period, start_date, end_date ) );
  }
  else
  {
    long first_date = 0;
    datetime times[1];
//---    
    if ( SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) )
    {
      if ( first_date > 0 )
      {
//--- force timeseries build
        CopyTime( symbol, period, datetime( first_date ) + PeriodSeconds( period ), 1, times );
//--- check date
        if ( SeriesInfoInteger( symbol, period, SERIES_FIRSTDATE, first_date ) )
//---        
        if ( first_date > 0 && first_date <= long( start_date ) )
        {
          return( Bars( symbol, period, start_date, end_date ) );
        } 
      }
    }
    Print( "Необходима загрузка истории с сервера!");
  }       
//---  
  return( 0 );
}  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   if ( is_failed )
   {
     Print( "Sorry! Get Bars failed." );
   }
   else Print( "Bingo! We done.");
//--- return value of prev_calculated for next call
   return(rates_total);
  }

履歴のダウンロードはまだ書いていないのですが、データはターミナルに入っていて、初回は出てこないんです

2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Необходима загрузка истории с сервера!
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Init failed. RTS-6.15 
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Необходима загрузка истории с сервера!
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Init failed. Si-6.15 
2015.03.26 20:49:01.641 Test (MIX-6.15,M1)      Sorry! Get Bars failed. 

ポケットに入れる編集する削除 する

 

どなたか説明してください。

データが あるのになぜSERIES_TERMINAL_FIRSTDATEという 識別子を持つ関数があるのか?

がFALSEを返すか?

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date )
 
Mikalas:

どなたか説明してください。

データが あるのになぜSERIES_TERMINAL_FIRSTDATEという 識別子を持つ関数があるのか?

がFALSEを返すか?

5秒リンクを貼っておきますね...。
 
MigVRN:
5秒リンクを貼っておきますね...。

Help Organise data access --> 履歴をダウンロードするスクリプト例より。

Если мы успешно прошли все проверки, то сделаем последнюю попытку обойтись без обращения к торговому серверу. Сначала узнаем начальную дату, для которой доступны минутные данные в формате HCC.
Запросим это значение функцией SeriesInfoInteger() с модификатором SERIES_TERMINAL_FIRSTDATE и опять сравним со значением параметра start_date.

   if(SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date))
     {
      //--- there is loaded data to build timeseries
      if(first_date>0)
        {
         //--- force timeseries build
         CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times);
         //--- check date
         if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
            if(first_date>0 && first_date<=start_date) return(2);
        }
     }
 
 
MigVRN:

すべてがドキュメントに書かれているとおりになるのです。:)

インジケータとExpert Advisorをスケッチし、ビデオで確認。

1) まず、20秒間動作するOnTick内に関数を持つExpert Advisorをチャート上に投げます。

その結果、チャートは動作を継続し、すべてをあるべき姿で表示することができます。チャートも期待通りに動作します。

2) 次に、OnCalculate 機能を持つインジケータを20秒間チャートに適用します。

その結果、チャットがハングアップしてしまいます。同時に、別の期間を設定した同じシンボルの次のチャットウィンドウもハングアップします。ガラスは本来の性能を発揮し続けます。機能が働いた後は、すべてが元通りになります。

3) ビデオにはありませんが、1つのチャットでインジケータ(60秒設定)、もう1つのチャットでEAをキャストすると、別のチャットでインジケータが誤動作するまでEAが動作し始めません。

動画を別途添付 - 私のブラウザでは速度が低下しています。

マルチスレッドはどこへ行ったんだ?

インジケータが動作するまでは、ティックがEAに届かないのです

 
Serj_Che:

マルチスレッドは一体どこに行ったんだ!?

インジケータが動作するまでは、ティックがEAに届かないのです

ティッカーには届かず、チャートに表示されないだけです。
 
Serj_Che:

マルチスレッドは一体どこに行ったんだ!?

インジケータが動作するまでは、ティックがEAに届かないのです

いつもこうなんです。

ミカラス
入札はカップに届いている、ただチャートには表示されないだけだ。

EAのティックが効かない。その他、チャットに書かれていること全てタイマーとカスタム イベントは確認していません。

ミカラス

Help データアクセス組織→履歴を読み込むスクリプトの例。

また、ヘルプから

...HCCフォーマットのサービスファイルは、HCフォーマットで要求された 時間枠の価格データを構築するためのデータソースとして機能します。HC形式のデータは時系列であり、素早くアクセスできるように最大限に準備されている。これらは、"Max bars in charts "パラメータを超えない範囲で、チャートまたはmql5-programの要求に応じて作成さ れ、さらに使用するためにhc拡張子を持つファイルに保存されます。

リソース節約のため、必要な時だけタイムフレームのデータをロードしてRAMに保存 し、長時間要求がない場合はRAMからデータをアンロードしてファイルに保存します。各時間枠のデータは、他の時間枠の準備データとは独立に 用意されています。データの準備と利用可能性に関するルールは、すべての時間枠で同じです。すなわち、HCCフォーマットのデータ格納単位が分棒であるにもかかわらず、HCCフォーマットのデータが利用可能であることは、M1時間枠のHCフォーマットのデータが同量で利用可能であり、アクセス可能であることを意味するものではない。

 
Mikalas:

どなたか説明してください。

データが あるのになぜSERIES_TERMINAL_FIRSTDATEという 識別子を持つ関数があるのか?

がFALSEを返すか?

このシリーズにアクセスするのは初めてだからです。
 
Mikalas:

Data Access Organisation Help --> 履歴をダウンロードするスクリプト例より。

さあ、どうぞ。あなたは正しい道を歩んでいます。端末がどのように動作するか、想像するのではなく、具体的に確認するために、簡単なアルゴリズムで確認します。

  • ターミナルで「MIX-6.15 M1」チャートを1枚開く。チャート上には、最初の投稿にあったインジケータが表示されています。
  • ターミナルから「Open Data Catalog」を開く。
  • MIX-6.15というシンボルのヒストリーをこのように探しています ...\TerminalD0*******CF37AD**55**0E51F**75
  • アンロード端子です。
  • フォルダ"MIX-6.15 "を削除 する。
  • 端末を起動する。エラーを確認します。チャート上のちょっとしたジョーク - タイムフレームを何度か変更する。例えば、M1とM5を数回変更する。エラーが消えます。コードで要求されたものとは別の時間枠のデータが準備されたことを意味する。タイムフレームを手動で変更したくない場合 - 自分でデータを用意する必要があります。
  • 端末の再読み込み-エラーなし
  • もし、はっきりしない場合は、実験を繰り返してください。