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

 
komposter:
吐け、エドワード、吐け =)
あ、お願いします、「う」でやります)))
 
Mikalas:

それはわかるのですが、なぜ上に書いたようなやり方ではダメだったのでしょうか?

情報の処理速度に影響を与えることはなかったはずです。

ツールに関する情報があれば、それが初めて登場した日付を記録し、メモリに格納する - 8バイト!

保存しないこともできますが、SymbolSelect()をすると、メモリに入れることになります。

SeriesInfoInteger (SERIES_TERMINAL_FIRSTDATE) 関数でアドレス指定すると、次のようになります。

A -1 - データなし

Б.0 - データなし、ただし準備中

В.A - 最初の情報の日付

そうすれば、すべてがクリアで透明なものになるはずです。

-1 - サーバーへ行く

0 - 次の反復を待って、時系列をチェックおよび/または構築します。

> 0 ビルド時系列

あなたの言及から、私はあなたがそれをほとんどやったと理解しましたが、そうでないことが判明しました。

あるプログラマーが書き始め、別の人が書き終えたらしい

あなたの実装はFOREXには向いていますが、FORTSには非常に不都合です。

FORTSの場合、相場が長期間来ないこともあり、プラットフォームから時系列をダウンロードする。

というメッセージが表示され、再度、サーバーにログインしてデータを取得するプロセスを繰り返さなければ なりません。

Expert Advisorを使えば、複数のシンボルデータを扱うことができ、すべてが便利で簡単になります。MT5環境のインジケーターは、主にその時系列データを素早く計算し、その計算結果をチャート上に表示するものです。プラットフォームの進化に伴い、専門家が利用できる多くの機能を獲得しましたが、基本的なアーキテクチャーの制約は残りました。また、インジケータとEAの違いを完全に排除する理由もありません。繰り返しになりますが、Expert Advisorは独自の処理フローを持っていることが最も重要な違いであると思います。指標はサービスフローで計算され、このフローは他の多くの機能を実行します。そのため、Expert Advisorと共通する機能であっても、実装が異なっています。

歴史へのアクセスについては、普遍的な解決策はありません。例えば、Expert Advisorが1つの日付だけを取得したいのか、利用可能な履歴全体を要求したいのか、といったユーザーの要望を端末が事前に予測することはできません。端末は、時間枠の高速アクセスを選択し、すなわち、ユーザの要求に応じて、現在の(サーバと同期した)履歴の状態を完全にキャッシュしようとする。はい、この方法が不便なアプリケーションのクラスがあります。しかし、プログラマーが「個人的に」端末を書き換えるという要求にこだわらなければ、既存の機能の中に解決策を見出すことができるだろう。もし、まったく解決策がないのであれば、そのときだけ機能拡張の問題が出てきます。

一般論は抜きにして、具体的な問題を具体的なコードで記述してください。そうでないと、1つの機能が肥大化して「何もかもがおかしい」「何もかもが不便」という、わけのわからない機能になってしまいます。

 
antt:

Expert Advisor を使って複数のシンボルデータを扱うと、すべてが便利でシンプルになります。MT5環境におけるインジケータは、主にその時系列データに対して高速に計算を行い、その結果をチャート上に表示することを目的として設計されています。プラットフォームの進化に伴い、専門家が利用できる多くの機能を獲得しましたが、基本的なアーキテクチャーの制約は残りました。また、インジケータとEAの違いを完全に排除する理由もありません。繰り返しになりますが、Expert Advisorは独自の処理フローを持っていることが最も重要な違いであると思います。指標はサービスフローで計算され、このフローは他の多くの機能を実行します。そのため、Expert Advisorと共通する機能でも、実装方法が異なります。

歴史へのアクセスについては、普遍的な解決策はありません。例えば、Expert Advisorが1つの日付だけを取得したいのか、利用可能な履歴全体を要求したいのか、といったユーザーの要望を端末が事前に予測することはできません。端末は、時間枠への迅速なアクセスを優先する選択をしました。つまり、ユーザーの要求に応じて、履歴の現在の(サーバーと同期した)状態を丸ごとキャッシュしようとします。はい、この方法が不便なアプリケーションのクラスがあります。しかし、プログラマーが「個人的に」端末を書き換えるという要求にこだわらなければ、既存の機能の中に解決策を見出すことができるだろう。もし、まったく解決策がないのであれば、そのときだけ機能拡張の問題が出てきます。

一般論は抜きにして、具体的な問題を具体的なコードで記述してください。そうでないと、1つの機能が肥大化して「何もかもがおかしい」「何もかもが不便」という、わけのわからない機能になってしまいます。

こんにちは、Anton!

あなたの答えを「分解」してみましょう。

1."複数の文字データを扱うのにエキスパートを使えば、すべてが便利で簡単になる"

チャート表示で3つのシンボルの履歴(終値)が必要です。

EAからクローズ履歴を取得する他の方法はありますか?

そして、EAから結果を引き出すために「菜園」を作らなければならない!(別ウィンドウで。)

2."歴史へのアクセス "に関しては、普遍的な解決策はない。エキスパートアドバイザーが1つの日付だけを取得したいのか、利用可能なすべての履歴を要求したいのか、といったユーザーの要望を端末が事前に予測 することはできません」。

消費者の希望を予測する必要はないのです。データがどのような状態であるかをシンボルAND ALLで「伝える」だけです!!!!

そうすれば、ユーザーは次にどのような行動をとればいいのか、正確に把握することができます。

3.でも、プログラマーが「個人的に」端末を書き換えるという要件にこだわらなければ、既存の機能の中に解決 策を見出すことができるはずです。

ましてや「自分で」何かをやれとは言っていませんし、解決策はもちろん既存の機能の中に必ずあるはずです。

4."全く解決策がない場合、その時に機能拡張の 問題が出てくる。"

機能を拡張する必要はなく、使いやすさや速さを追求したマイナーチェンジを導入すればいいのです。

5."一般化せず、具体的な問題を具体的なコードで記述 する。そうでないと、一つの機能で勘違いした機能が肥大化し、「全てが間違っている」「全てが不便 だ」となってしまうのです "

よし、具体的なコードで問題点を「拡大解釈」して説明する覚悟を決めよう。

ただ、残念ながら参考書は「あてにならない」んですよね...。

ご返信ありがとうございます。

 
Mikalas:


相変わらず、自分は宇宙の中心で、世界は自分を中心に回っているというのがユーザーの立場です。使える機能は使わないといけない。特に、データの取得方法は何度も示されています。
 
barabashkakvn:
相変わらず、自分は宇宙の中心で、世界は自分を中心に回っているというのがユーザーの立場です。使える機能は使わないといけない。特に、データの取得方法は何度も示されています。
2x2はいくらですか?
 
barabashkakvn:
いつものことですが、ユーザーの立場は「私が宇宙の中心で、世界は私を中心に回っている」というものです。持っている機能を使わなければならない。しかも、そのデータの取り方は、一度ならず示されている。

そして、その逆だと思うんですね。宇宙の中心は開発者であり、世界は開発者を中心に回っている?そうなんですか?

そして、この端末は誰のために設計されているのか、一つの質問に答えてください。自分たちのために作っているのか、ユーザーのために作っているのか。

自分たちのためにやってくれるなら、文句はない.いいんです。

そして、ユーザーのためなら、その意見も最低限聞くべき...。

 
antt :

.......。

一般化せずに、特定のコードで特定の問題を説明します。そうでなければ、単一の機能の誤解された機能が「すべてが間違っている」と「すべてが不便である」ということに吹き飛ばされることがわかります。

記述:

リアルアカウントFORTSブローカー。

問題-時系列データを取得していません。

1.写真は、ターミナルにデータがあることを示しています。

2.コードは次のとおりです。

 //+------------------------------------------------------------------+
//|                                                     Ind_test.mq5 |
//|                                          Copyright 2015, Mikalas |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Mikalas"
#property link        "http://www.mql5.com"
#property version    "1.00"
//
#property indicator_separate_window

#property indicator_buffers 1
#property indicator_plots    1

//--- plot Label1
#property indicator_label1   "Data"
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrYellow
#property indicator_style1   STYLE_SOLID
#property indicator_width1   1
//---
ENUM_TIMEFRAMES time_frame; //Таймфрейм
//
string sec_symbol;
//
input string StartData = "2015.03.16" ; //Дата начала расчёта индикатора
//--- indicator buffers
double MainBuffer[];
//---
datetime start_time;
datetime end_time;
datetime sec_times[];
//
int   sec_bars;
//
int next_month;
//+------------------------------------------------------------------+
//| Indicator Expert set second symbol function                      |
//+------------------------------------------------------------------+
string SetSecSymbol( const string aSymbol )
{
   int str_tire = 0 ;
   int str_tochka = 0 ;
   ushort let_symbol;
   string str_month, str_year;
   long aYear;
    
   int str_size = StringLen ( aSymbol );
    
   for ( int i = 0 ; i < str_size; i++ )
  {
    let_symbol = StringGetCharacter ( aSymbol, i );
      
     if ( let_symbol == '-' )
    {
      str_tire = i;
    }
      
     if ( let_symbol == '.' )
    {
      str_tochka = i;
    }
  }
    
   if ( ( str_tire != 0 ) && ( str_tochka != 0 ) )
  {
    str_month = StringSubstr ( aSymbol, str_tire + 1 , str_tochka - str_tire - 1 );
    str_year = StringSubstr ( aSymbol, str_tochka + 1 , str_size - str_tochka - 1 );
    
     if ( str_month == "12" )
    {
      str_month = IntegerToString ( next_month );
        
      aYear = StringToInteger ( str_year );
      aYear = aYear + 1 ;
      str_year = IntegerToString ( aYear );
    }
     else
    {
       long aMonth = StringToInteger ( str_month );
      aMonth = aMonth + next_month;
      
       if ( aMonth > 12 )
      {
        aMonth = aMonth - 12 ;
        aYear = StringToInteger ( str_year );
        aYear = aYear + 1 ;
        str_year = IntegerToString ( aYear );
      } 
      str_month = IntegerToString ( aMonth );
    }
  }
//--- Set new symbol 
   return ( StringSubstr ( aSymbol, 0 , str_tire + 1 ) + str_month + "." + str_year );
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
bool CheckBrent( const string a_symbol )
{
   ushort let_symbol;
   int str_size = StringLen ( a_symbol );
    
   for ( int i = 0 ; i < str_size; i++ )
  {
    let_symbol = StringGetCharacter ( a_symbol, i );
      
     if ( let_symbol == '-' )
    {
       string str_info = StringSubstr ( a_symbol, 0 , i );
//---      
       if ( str_info == "BR" )
      {
         return ( true );
      }
    }
  }
   return ( false );
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
{
  time_frame = PERIOD_CURRENT ;
  next_month = 3 ;
//---
   if ( CheckBrent( _Symbol ) ) next_month = 1 ;
//---
  sec_symbol = SetSecSymbol( _Symbol );
//---
   SymbolSelect ( sec_symbol, true );  
//---
  end_time = datetime ( SymbolInfoInteger ( _Symbol , SYMBOL_EXPIRATION_TIME ) );
  start_time = datetime ( StringToTime ( StartData ) + 19 * 3600 + 10 * 60 );
//---  
   IndicatorSetInteger ( INDICATOR_DIGITS , 0 );
   IndicatorSetString ( INDICATOR_SHORTNAME , "FORTS" );
   SetIndexBuffer ( 0 , MainBuffer, INDICATOR_DATA );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArraySetAsSeries ( MainBuffer, true );
//---
   if ( ( TimeCurrent () - start_time ) < 60 )
  {
     Print ( "Слишком мал промежуток времени!" );
     return ( INIT_FAILED );
  }
//--- 
   Print ( "OnInit: Получение баров для символа " , sec_symbol, "..." ); 
  sec_bars = GetBars( sec_symbol, time_frame, start_time, end_time );
//---
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//|  Custom indicator deinitialization function                      |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason )
{
   if ( reason == REASON_INITFAILED )
  {
     ChartIndicatorDelete ( 0 , 1 , "FORTS" ); 
  }
}
//+------------------------------------------------------------------+
// Custom indicator Check timer function                             |
//+------------------------------------------------------------------+
bool CheckTimer( const uint start_value, const uint per_value )
{
   uint end_value = GetTickCount ();
  
   if ( end_value < start_value )
  {
     if ( ( start_value - end_value ) >= per_value ) return ( true );
  } 
   else
  {
     if ( ( end_value - start_value ) >= per_value ) return ( true );
  }
   return ( false );
}
//+------------------------------------------------------------------+
//| Custom indicator Get local data function                         |
//+------------------------------------------------------------------+
int GetLocalData( const string a_symbol, ENUM_TIMEFRAMES a_period, datetime start_date, datetime end_date )
{
   datetime times[ 1 ];
//---  
   long first_date = SeriesInfoInteger ( a_symbol, PERIOD_M1 , SERIES_TERMINAL_FIRSTDATE );  
  
   if ( first_date > 0 )
   Print ( "GetLocalData: Первая дата в терминале есть." );
  {
//--- force timeseries build
     CopyTime ( a_symbol, a_period, datetime ( first_date ) + PeriodSeconds ( a_period ), 1 , times );
//--- check date
    first_date = SeriesInfoInteger ( a_symbol, PERIOD_M1 , SERIES_FIRSTDATE );
//---        
     if ( first_date > 0 && first_date <= long ( start_date ) )
    {
       bool is_sync = bool ( SeriesInfoInteger ( a_symbol, a_period, SERIES_SYNCHRONIZED ) ); 
//---     
       if ( is_sync )
      {
         Print ( "GetLocalData: Серия синхронизирована." );
         return ( Bars ( a_symbol, a_period, start_date, end_date ) );
      }
    }  
  }
   Print ( "GetLocalData: Не удалось построить таймсерию!" );
   return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator Get server data function                        |
//+------------------------------------------------------------------+
int LoadServerData( const string a_symbol, ENUM_TIMEFRAMES period, const datetime start_date, const datetime end_date  )
{
   SeriesInfoInteger ( a_symbol, PERIOD_M1 , SERIES_SERVER_FIRSTDATE );
   int fail_cnt = 0 ;
//---
   while ( fail_cnt < 10 )
  {
     uint start_tick = GetTickCount ();
//---    
     while ( !CheckTimer( start_tick, 5 ) )
    {
       if ( SymbolIsSynchronized ( a_symbol ) )
      {
         Print ( "LoadServerData: Символ синхронизирован." );
         return ( GetLocalData( a_symbol, period, start_date, end_date ) );
      }
    }
    fail_cnt++;
    start_tick = GetTickCount ();
  }
   Print ( "LoadServerData: Не удалось загрузить историю с сервера!" );
   return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator Get bars function                               |
//+------------------------------------------------------------------+
int GetBars( string symbol, ENUM_TIMEFRAMES period, const datetime start_date, const datetime end_date )
{
//---Check for symbol present
   if ( ! SymbolInfoInteger ( symbol, SYMBOL_SELECT ) )
  {
     ResetLastError ();
//---    
     if ( GetLastError () != ERR_MARKET_UNKNOWN_SYMBOL )
    {
       SymbolSelect ( symbol, true );
    }
     else
    {
       Print ( "GetBars: Неизвестный символ - " , symbol );
       return ( 0 );
    }    
  }
//---Check program  
   if ( MQL5InfoInteger ( MQL5_PROGRAM_TYPE ) == PROGRAM_INDICATOR && Period () == period && Symbol () == symbol )
  {
     Print ( "GetBars: Не пройдена проверка типа программы!" );
     return ( 0 );
  }  
//---
   if ( SymbolIsSynchronized ( symbol ) )
  {
     Print ( "GetBars: Символ синхронизирован." );
//---Check series syncronization
     bool is_sync = bool ( SeriesInfoInteger ( symbol, period, SERIES_SYNCHRONIZED ) );
   
     if ( is_sync )
    {
       Print ( "GetBars: Серия синхронизирована." );
       return ( Bars ( symbol, period, start_date, end_date ) );
    }
     else
    {
       Print ( "GetBars: Локальная загрузка..." );
       return ( GetLocalData( symbol, period, start_date, end_date ) );
    }  
  }
   else
  {
     Print ( "GetBars: Символ НЕ синхронизирован. Загрузка данных с сервера..." );
     return ( LoadServerData( symbol, period, start_date, end_date ) );
  }       
//---  
   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[])
{
   int nStartBar = rates_total - prev_calculated;
//---
   ArraySetAsSeries ( time, true );
   ArraySetAsSeries ( close, true );
   ArraySetAsSeries ( sec_times, true );
//---
   Print ( "OnCalculate: Получение баров для символа " , sec_symbol, "..." );
  sec_bars = GetBars( sec_symbol, time_frame, start_time, end_time );
//---  
   if ( sec_bars < 1 )
  {
     Print ( "OnCalculate: Не получены бары по символу - " , sec_symbol );
     return ( prev_calculated );
  }
   else
  {
    sec_bars = CopyTime ( sec_symbol, time_frame, 0 , sec_bars, sec_times );
     if ( sec_bars < 1 )
    {
       Print ( "OnCalculate: Не скопированы тийминги по символу - " , sec_symbol );
       return ( prev_calculated );
    }
  }
   Print ( "OnCalculate: Данные получены." );
 
   return ( rates_total );
}

//+------------------------------------------------------------------+

3.そしてここに結果があります:

 2015.03 . 31 06 : 39 : 16.826 Ind_test (BR- 4.15 ,M1)   OnInit : Получение баров для символа BR- 5.15 ...
2015.03 . 31 06 : 39 : 16.827 Ind_test (BR- 4.15 ,M1)   GetBars: Символ НЕ синхронизирован. Загрузка данных с сервера...
2015.03 . 31 06 : 39 : 16.848 Ind_test (BR- 4.15 ,M1)   LoadServerData: Символ синхронизирован.
2015.03 . 31 06 : 39 : 16.848 Ind_test (BR- 4.15 ,M1)   GetLocalData: Первая дата в терминале есть.
2015.03 . 31 06 : 39 : 16.848 Ind_test (BR- 4.15 ,M1)   GetLocalData: Не удалось построить таймсерию!
2015.03 . 31 06 : 39 : 16.848 Ind_test (BR- 4.15 ,M1)   OnCalculate : Получение баров для символа BR- 5.15 ...
2015.03 . 31 06 : 39 : 16.848 Ind_test (BR- 4.15 ,M1)   GetBars: Символ синхронизирован.
2015.03 . 31 06 : 39 : 16.848 Ind_test (BR- 4.15 ,M1)   GetBars: Серия синхронизирована.
2015.03 . 31 06 : 39 : 16.848 Ind_test (BR- 4.15 ,M1)   OnCalculate : Не получены бары по символу - BR- 5.15
2015.03 . 31 06 : 39 : 49.379 Ind_test (ED- 6.15 ,M1)   OnInit : Получение баров для символа ED- 9.15 ...
2015.03 . 31 06 : 39 : 49.379 Ind_test (ED- 6.15 ,M1)   GetBars: Символ НЕ синхронизирован. Загрузка данных с сервера...
2015.03 . 31 06 : 39 : 49.399 Ind_test (ED- 6.15 ,M1)   LoadServerData: Символ синхронизирован.
2015.03 . 31 06 : 39 : 49.399 Ind_test (ED- 6.15 ,M1)   GetLocalData: Первая дата в терминале есть.
2015.03 . 31 06 : 39 : 49.399 Ind_test (ED- 6.15 ,M1)   GetLocalData: Не удалось построить таймсерию!
2015.03 . 31 06 : 39 : 49.399 Ind_test (ED- 6.15 ,M1)   OnCalculate : Получение баров для символа ED- 9.15 ...
2015.03 . 31 06 : 39 : 49.399 Ind_test (ED- 6.15 ,M1)   GetBars: Символ синхронизирован.
2015.03 . 31 06 : 39 : 49.399 Ind_test (ED- 6.15 ,M1)   GetBars: Серия синхронизирована.
2015.03 . 31 06 : 39 : 49.399 Ind_test (ED- 6.15 ,M1)   OnCalculate : Не получены бары по символу - ED- 9.15
2015.03 . 31 06 : 39 : 55.555 Ind_test (Eu- 6.15 ,M1)   OnInit : Получение баров для символа Eu- 9.15 ...
2015.03 . 31 06 : 39 : 55.555 Ind_test (Eu- 6.15 ,M1)   GetBars: Символ НЕ синхронизирован. Загрузка данных с сервера...
2015.03 . 31 06 : 39 : 55.567 Ind_test (Eu- 6.15 ,M1)   LoadServerData: Символ синхронизирован.
2015.03 . 31 06 : 39 : 55.567 Ind_test (Eu- 6.15 ,M1)   GetLocalData: Первая дата в терминале есть.
2015.03 . 31 06 : 39 : 55.567 Ind_test (Eu- 6.15 ,M1)   GetLocalData: Не удалось построить таймсерию!
2015.03 . 31 06 : 39 : 55.567 Ind_test (Eu- 6.15 ,M1)   OnCalculate : Получение баров для символа Eu- 9.15 ...
2015.03 . 31 06 : 39 : 55.567 Ind_test (Eu- 6.15 ,M1)   GetBars: Символ синхронизирован.
2015.03 . 31 06 : 39 : 55.567 Ind_test (Eu- 6.15 ,M1)   GetBars: Серия синхронизирована.
2015.03 . 31 06 : 39 : 55.567 Ind_test (Eu- 6.15 ,M1)   OnCalculate : Не получены бары по символу - Eu- 9.15
2015.03 . 31 06 : 40 : 01.683 Ind_test (GAZR- 6.15 ,M1) OnInit : Получение баров для символа GAZR- 9.15 ...
2015.03 . 31 06 : 40 : 01.683 Ind_test (GAZR- 6.15 ,M1) GetBars: Символ НЕ синхронизирован. Загрузка данных с сервера...
2015.03 . 31 06 : 40 : 01.694 Ind_test (GAZR- 6.15 ,M1) LoadServerData: Символ синхронизирован.
2015.03 . 31 06 : 40 : 01.694 Ind_test (GAZR- 6.15 ,M1) GetLocalData: Первая дата в терминале есть.
2015.03 . 31 06 : 40 : 01.694 Ind_test (GAZR- 6.15 ,M1) GetLocalData: Не удалось построить таймсерию!
2015.03 . 31 06 : 40 : 01.694 Ind_test (GAZR- 6.15 ,M1) OnCalculate : Получение баров для символа GAZR- 9.15 ...
2015.03 . 31 06 : 40 : 01.694 Ind_test (GAZR- 6.15 ,M1) GetBars: Символ синхронизирован.
2015.03 . 31 06 : 40 : 01.694 Ind_test (GAZR- 6.15 ,M1) GetBars: Серия синхронизирована.
2015.03 . 31 06 : 40 : 01.694 Ind_test (GAZR- 6.15 ,M1) OnCalculate : Не получены бары по символу - GAZR- 9.15
ファイル:
20150331.log  7 kb
 

再生方法は?

端末を接続して開くと、起動前にすべてのシンボルの履歴がディスクから削除される。

スタート時点からのインジケーターログ

2015.03.31 11:00:35.611 tmp6 (GAZR-6.15,M1)     OnInit: Получение баров для символа GAZR-9.15...
2015.03.31 11:00:35.611 tmp6 (GAZR-6.15,M1)     GetBars: Символ НЕ синхронизирован. Загрузка данных с сервера...
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     LoadServerData: Символ синхронизирован.
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     GetLocalData: Не удалось построить таймсерию!
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     OnCalculate: Получение баров для символа GAZR-9.15...
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     GetBars: Символ синхронизирован.
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     GetBars: Серия синхронизирована.
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     OnCalculate: Не получены бары по символу - GAZR-9.15
2015.03.31 11:00:36.306 tmp6 (GAZR-6.15,M1)     OnCalculate: Получение баров для символа GAZR-9.15...
2015.03.31 11:00:36.306 tmp6 (GAZR-6.15,M1)     GetBars: Символ синхронизирован.
2015.03.31 11:00:36.306 tmp6 (GAZR-6.15,M1)     GetBars: Серия синхронизирована.
2015.03.31 11:00:36.306 tmp6 (GAZR-6.15,M1)     OnCalculate: Данные получены.
2015.03.31 11:00:37.123 tmp6 (GAZR-6.15,M1)     OnCalculate: Получение баров для символа GAZR-9.15...
2015.03.31 11:00:37.123 tmp6 (GAZR-6.15,M1)     GetBars: Символ синхронизирован.
2015.03.31 11:00:37.123 tmp6 (GAZR-6.15,M1)     GetBars: Серия синхронизирована.
2015.03.31 11:00:37.123 tmp6 (GAZR-6.15,M1)     OnCalculate: Данные получены.


このように、起動から1秒足らずでシンボルデータがインジケーターに反映されるようになりました。

 
alexvd:

再生方法は?

端末を接続して開くと、起動前にすべてのシンボルの履歴がディスクから削除される。

スタート時点からのインジケーターログ


このように、起動から1秒以内にシンボルのデータがインジケーターに反映されるようになりました。

アフタヌーン!

つまり、電子取引にはSECONDSは時間ではないのですか?

つまり、同期したシンボルと 同期した時系列では、得られない

バー(すぐ)-これは正常なのでしょうか?

(私にとっては)間違いです。

2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     GetBars: Символ синхронизирован.
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     GetBars: Серия синхронизирована.
2015.03.31 11:00:35.638 tmp6 (GAZR-6.15,M1)     OnCalculate: Не получены бары по символу - GAZR-9.15

2.TERMINALにデータがある 場合(図3.16以降の全バー参照)、強制的にサーバーに移動させられてしまいますが、これは正常なのでしょうか?

情報を得るまでの不便さ、時間の長さは(私にとって) 当然である。

2015.03.31 11:00:35.611 tmp6 (GAZR-6.15,M1)     OnInit: Получение баров для символа GAZR-9.15...
2015.03.31 11:00:35.611 tmp6 (GAZR-6.15,M1)     GetBars: Символ НЕ синхронизирован. Загрузка данных с сервера...
 
Mikalas:

こんにちは。

電子商取引における1秒は、時間ではないのですか?

スタートから1秒、すなわちスタート時に1回。"時間じゃない"
理由: