FORTS Veuillez nous aider - page 12

 
komposter:
Vomis, Edward, vomis =)
Oh, s'il vous plaît, je le fais avec un "U"))).
 
Mikalas:

Je comprends cela, mais pourquoi cela n'aurait-il pas pu être fait de la manière que j'ai décrite ci-dessus ?

Cela n'aurait eu aucun effet sur la vitesse de traitement de l'information :

S'il y avait des informations sur l'outil - enregistrez la date de sa première apparition et stockez-la en mémoire - 8 octets !

Vous pouvez même ne pas le stocker, mais lorsque vous faites SymbolSelect(), vous le mettez en mémoire.

Lorsque nous l'adressons avec la fonction SeriesInfoInteger (SERIES_TERMINAL_FIRSTDATE), nous obtenons :

A -1 - pas de données

Б. 0 - aucune donnée disponible mais pas prêt

В. A - date de la première information

Tout serait alors clair et transparent.

-1 - Aller vers le serveur

0 - Nous attendons la prochaine itération pour vérifier et/ou construire la série chronologique.

> 0 Construire des séries temporelles

D'après votre référence, j'ai compris que VOUS aviez presque fait cela, mais il s'avère que non.

Apparemment, un programmeur a commencé à écrire et un autre a terminé.

Votre mise en œuvre est bonne pour le FOREX, mais très gênante pour le FORTS.

Pour FORTS, les cotations peuvent ne pas arriver pendant une longue période et la série chronologique est téléchargée de la plateforme.

et vous devez répéter tout le processus de récupération des données à nouveau, et avec une connexion au serveur!

Utilisez les conseillers experts pour travailler avec des données de symboles multiples, tout sera pratique et facile. Les indicateurs de l'environnement MT5 sont principalement conçus pour effectuer des calculs rapides sur les données de leurs séries temporelles et afficher les résultats du calcul sur le graphique. Au fur et à mesure de l'évolution de la plate-forme, ils ont obtenu de nombreuses fonctions accessibles aux experts, mais les restrictions architecturales de base sont restées. Et il n'y a aucune raison d'éliminer complètement les différences entre les indicateurs et les EA. Une fois de plus, je tiens à vous rappeler que la différence la plus importante est que les conseillers experts ont leur propre flux de traitement. Les indicateurs sont calculés dans un flux de services, et ce flux remplit de nombreuses autres fonctions. C'est pourquoi même la fonctionnalité que nous avons en commun avec les conseillers experts est mise en œuvre différemment.

Quant à l'accès à l'histoire, il n'existe pas de solution universelle. Le terminal ne peut pas prédire à l'avance ce que l'utilisateur veut, c'est-à-dire si le conseiller expert veut obtenir une seule date ou s'il veut demander tout l'historique disponible. Le terminal choisit l'accès rapide à l'historique, c'est-à-dire qu'à la demande de l'utilisateur, il essaie de mettre en cache l'état actuel (synchronisé avec le serveur) de l'historique dans son intégralité. Oui, il existe une catégorie d'applications pour lesquelles cette approche n'est pas pratique. Mais si le programmeur ne se concentre pas sur la demande de réécriture "personnelle" du terminal, il trouvera une solution dans la fonctionnalité existante. S'il n'y a aucune solution, c'est alors seulement que la question de l'extension de la fonctionnalité se pose.

Décrivez un problème spécifique avec un code spécifique, sans généralisation. Sinon, vous obtenez une fonctionnalité incompréhensible d'une seule fonction gonflée en "tout est faux" et "tout est gênant".

 
antt:

Utilisez les conseillers experts pour travailler avec des données de symboles multiples, tout sera pratique et facile. Les indicateurs de l'environnement MT5 sont principalement conçus pour effectuer des calculs rapides sur les données de leurs séries temporelles et afficher les résultats du calcul sur le graphique. Au fur et à mesure de l'évolution de la plate-forme, ils ont obtenu de nombreuses fonctions accessibles aux experts, mais les restrictions architecturales de base sont restées. Et il n'y a aucune raison d'éliminer complètement les différences entre les indicateurs et les EA. Une fois de plus, je tiens à vous rappeler que la différence la plus importante est que les conseillers experts ont leur propre flux de traitement. Les indicateurs sont calculés dans un flux de services, et ce flux remplit de nombreuses autres fonctions. C'est pourquoi même la fonctionnalité partagée avec les conseillers experts est mise en œuvre de manière différente.

Quant à l'accès à l'histoire, il n'existe pas de solution universelle. Le terminal ne peut pas prédire à l'avance ce que l'utilisateur souhaite, c'est-à-dire si le conseiller expert veut obtenir une seule date ou s'il veut demander tout l'historique disponible. Le terminal a fait un choix en faveur d'un accès rapide à l'historique, c'est-à-dire qu'à la demande de l'utilisateur, il essaie de mettre en cache l'état actuel (synchronisé avec le serveur) de l'historique dans son intégralité. Oui, il existe une catégorie d'applications pour lesquelles cette approche n'est pas pratique. Mais si le programmeur ne se concentre pas sur la demande de réécriture "personnelle" du terminal, il trouvera une solution dans la fonctionnalité existante. S'il n'y a aucune solution, c'est alors seulement que la question de l'extension de la fonctionnalité se pose.

Décrivez un problème spécifique avec un code spécifique, sans généralisation. Sinon, vous obtenez une fonctionnalité incompréhensible d'une seule fonction gonflée en "tout est faux" et "tout est gênant".

Bonjour, Anton !

Laissez-nous "décomposer" votre réponse :

1. "Utilisez des experts pour travailler avec des données à caractères multiples, tout sera pratique et simple."

J'ai besoin d'un historique (clôture) sur 3 symboles avec affichage graphique.

Existe-t-il un autre moyen d'obtenir l'historique des fermetures de la part d'EA ?

Et je dois faire un "potager" pour tirer les résultats d'une EA (dans une fenêtre séparée) !

2. "En ce qui concerne l'accès à l'histoire, il n'y a pas de solution universelle. Le terminal ne peut pas prévoir à l'avance ce que l'utilisateur veut, c'est-à-dire si le conseiller expert veut obtenir une seule date ou s'il veut demander tout l'historique disponible".

Il n'est pas nécessaire de prévoir les souhaits du consommateur. Il suffit de "dire" dans quel état se trouvent les données sur le symbole ET TOUT ! !!

L'utilisateur saura alors exactement quelles sont les actions à effectuer ensuite.

3)"Mais si un programmeur ne se concentre pas sur l'obligation de réécrire le terminal "personnellement", il trouvera une solution dans la fonctionnalité existante.

Je n'ai pas dit, et encore moins exigé de faire quelque chose "pour soi", et la solution se trouvera bien sûr toujours dans la fonctionnalité existante.

4. "S'il n'y a pas de solution du tout, c'est là que se pose la question de l'extension de la fonctionnalité. "

Vous n'avez pas besoin d'étendre la fonctionnalité, vous pouvez simplement introduire des changements mineurs pour faciliter l'utilisation et la vitesse.

5. "Décrivez un problème spécifique avec un code spécifique, sans généralisation.Sinon, vous obtenez la fonctionnalité incomprise d'une seule fonction gonflée en "tout est faux" et "tout est gênant"".

OK, je vais me préparer à une explication "étendue" du problème avec un code spécifique.

Seulement, malheureusement, vous ne pouvez pas "compter" sur le livre de référence...

Merci de votre réponse.

 
Mikalas:


Comme toujours, la position de l' utilisateur est que je suis le centre de l'univers et que le monde tourne autour de moi. Vous devez utiliser les fonctionnalités disponibles. D'autant plus qu'il a été démontré plus d'une fois comment obtenir les données.
 
barabashkakvn:
Comme toujours, la position de l'utilisateur est que je suis le centre de l'univers et que le monde tourne autour de moi. Vous devez utiliser les fonctionnalités disponibles. D'autant plus qu'il a été démontré plus d'une fois comment obtenir les données.
Combien fait 2x2 ?
 
barabashkakvn:
Comme toujours, la position de l'utilisateur est que je suis le centre de l'univers et que le monde tourne autour de moi. Vous devez utiliser les fonctionnalités dont vous disposez. En outre, il a été montré plus d'une fois comment obtenir les données.

Et vous pensez que c'est l'inverse. Le centre de l'univers est constitué par les développeurs et le monde tourne autour d'eux ? C'est vrai ?

Répondez ensuite à une question : pour qui ce terminal est-il développé ? Le font-ils pour eux-mêmes ou pour l'utilisateur ?

S'ils le font pour eux-mêmes, pas de questions... C'est bon.

Et si c'est pour l'utilisateur, alors son avis devrait au moins être écouté...

 
antt :

........

Décrivez un problème spécifique avec un code spécifique, sans généralisations. Sinon, il s'avère que la fonctionnalité mal comprise d'une seule fonction est gonflée à "tout va mal" et "tout est gênant".

Décrivant :

Courtier compte réel FORTS.

Problème - Je ne reçois pas de données de séries chronologiques.

1. Les images montrent qu'il y a des données dans le terminal.

2. Voici le code :

 //+------------------------------------------------------------------+
//|                                                     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. Et voici le résultat :

 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
Dossiers :
20150331.log  7 kb
 

Comment se reproduire ?

Terminal connecté à l'ouverture, historique de tous les symboles effacés du disque avant le démarrage

Journal des indicateurs depuis le début

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: Данные получены.


Comme vous pouvez le voir, en moins d'une seconde à partir du moment du démarrage, les données du symbole sont devenues disponibles pour l'indicateur.

 
alexvd:

Comment se reproduire ?

Terminal connecté à l'ouverture, historique de tous les symboles effacés du disque avant le démarrage

Journal des indicateurs depuis le début


Comme vous pouvez le voir, en moins d'une seconde à partir du moment du démarrage, les données sur le symbole sont devenues disponibles pour l'indicateur.

Bonjour !

C'est-à-dire que les SECONDES ne sont pas un temps suffisant pour le commerce électronique ?

En d'autres termes, avec un symbole synchronisé et des séries temporelles synchronisées, nous ne pouvons pas obtenir

Barres(immédiatement)- est-ce normal ?

(Pour moi) c'est une erreur.

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. Quand il y a des données dans TERMINAL (voir fig. toutes les barres après le 16 mars), nous sommes obligés d'aller sur le serveur, est-ce normal ?

Le désagrément et le temps qu'il faut pour obtenir l'information(pour moi) sont évidents.

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:

Bonjour !

Donc une SECONDE dans le commerce électronique n'est pas du temps ?

Une seconde à partir du début, c'est-à-dire une fois au début. "Pas le temps."