FORTS Bitte helfen Sie - Seite 12

 
komposter:
Kotz, Edward, kotz =)
Oh, bitte, ich mache es mit einem "U")))
 
Mikalas:

Das verstehe ich, aber warum konnte es nicht so gemacht werden, wie ich es oben beschrieben habe?

Es hätte keinen Einfluss auf die Geschwindigkeit der Informationsverarbeitung gehabt:

Wenn es irgendwelche Informationen über das Werkzeug gab - notieren Sie das Datum, an dem es zum ersten Mal auftauchte, und speichern Sie es im Speicher - 8 Bytes!

Sie können es auch nicht speichern, aber wenn Sie SymbolSelect() ausführen, wird es im Speicher abgelegt.

Wenn wir es mit der Funktion SeriesInfoInteger (SERIES_TERMINAL_FIRSTDATE) ansprechen, erhalten wir:

A -1 - keine Daten

Б. 0 - keine Daten verfügbar, aber nicht bereit

В. A - Datum der ersten Information

Dann wäre alles klar und transparent.

-1 - Auf den Server gehen

0 - Wir warten auf die nächste Iteration, um die Zeitreihe zu prüfen und/oder zu erstellen

> 0 Zeitreihen erstellen

Ihrem Verweis habe ich entnommen, dass SIE das fast getan hätten, aber das hat sich als falsch herausgestellt.

Offenbar hat ein Programmierer mit dem Schreiben begonnen und ein anderer hat es beendet

Ihre Umsetzung ist gut für FOREX, aber sehr ungünstig für FORTS.

Bei FORTS kann es sein, dass die Kurse lange Zeit nicht kommen und die Zeitreihe von der Plattform heruntergeladen wird.

und Sie müssen den gesamten Vorgang des Datenabrufs noch einmal wiederholen, und zwar mit Serveranmeldung!

Verwenden Sie Expert Advisors, um mit mehreren Symboldaten zu arbeiten, alles wird bequem und einfach sein. Die Indikatoren in der MT5-Umgebung sind in erster Linie dazu gedacht, ihre Zeitreihendaten schnell zu berechnen und die Ergebnisse der Berechnung auf dem Chart anzuzeigen. Mit der Weiterentwicklung der Plattform wurden viele Funktionen für Experten verfügbar, aber die grundlegenden architektonischen Einschränkungen blieben bestehen. Und es gibt keinen Grund, die Unterschiede zwischen Indikatoren und EAs vollständig zu beseitigen. Ich möchte Sie noch einmal daran erinnern, dass der wichtigste Unterschied darin besteht, dass die Expert Advisors ihren eigenen Verarbeitungsablauf haben. Die Indikatoren werden in einem Leistungsfluss berechnet, der viele weitere Funktionen erfüllt. Aus diesem Grund sind auch die Funktionen, die wir mit den Expert Advisors gemeinsam haben, unterschiedlich implementiert.

Für den Zugang zur Geschichte gibt es keine Universallösung. Das Terminal kann nicht im Voraus vorhersagen, was der Benutzer wünscht, d. h. ob der Expert Advisor nur ein Datum abrufen oder die gesamte verfügbare Historie anfordern möchte. Das Terminal wählt den schnellen Zugriff auf den Zeitrahmen, d.h. es versucht auf Anfrage des Benutzers, den aktuellen (mit dem Server synchronisierten) Stand der Historie vollständig zwischenzuspeichern. Ja, es gibt eine Reihe von Anwendungen, für die dieser Ansatz nicht geeignet ist. Aber wenn der Programmierer sich nicht auf die Forderung konzentriert, das Terminal "persönlich" neu zu schreiben, wird er eine Lösung in der bestehenden Funktionalität finden. Wenn es überhaupt keine Lösung gibt, stellt sich erst dann die Frage nach der Erweiterung der Funktionalität.

Beschreiben Sie ein spezifisches Problem mit einem spezifischen Code, ohne Verallgemeinerungen. Andernfalls erhält man eine unverständliche Funktionalität einer einzigen Funktion, die zu "alles ist falsch" und "alles ist unbequem" aufgebläht wird.

 
antt:

Verwenden Sie Expert Advisors, um mit mehreren Symboldaten zu arbeiten, alles wird bequem und einfach sein. Die Indikatoren in der MT5-Umgebung sind in erster Linie dazu gedacht, schnelle Berechnungen auf der Grundlage von Zeitreihendaten durchzuführen und die Ergebnisse der Berechnungen auf dem Chart anzuzeigen. Mit der Weiterentwicklung der Plattform wurden viele Funktionen für Experten verfügbar, aber die grundlegenden architektonischen Einschränkungen blieben bestehen. Und es gibt keinen Grund, die Unterschiede zwischen Indikatoren und EAs vollständig zu beseitigen. Ich möchte Sie noch einmal daran erinnern, dass der wichtigste Unterschied darin besteht, dass die Expert Advisors ihren eigenen Verarbeitungsablauf haben. Die Indikatoren werden in einem Leistungsfluss berechnet, der viele weitere Funktionen erfüllt. Deshalb sind auch die Funktionen, die mit den Expert Advisors geteilt werden, auf unterschiedliche Weise implementiert.

Was den Zugang zur Geschichte betrifft, so gibt es keine Universallösung. Das Terminal kann nicht im Voraus vorhersagen, was der Benutzer wünscht, d.h. ob der Expert Advisor nur ein einziges Datum abrufen oder die gesamte verfügbare Historie anfordern möchte. Das Terminal hat sich für einen schnellen Zugriff auf den Zeitrahmen entschieden, d.h. es versucht auf Wunsch des Benutzers, den aktuellen (mit dem Server synchronisierten) Stand der Historie in seiner Gesamtheit zwischenzuspeichern. Ja, es gibt eine Reihe von Anwendungen, für die dieser Ansatz nicht geeignet ist. Aber wenn der Programmierer sich nicht auf die Forderung konzentriert, das Terminal "persönlich" neu zu schreiben, wird er eine Lösung in der bestehenden Funktionalität finden. Wenn es überhaupt keine Lösung gibt, stellt sich erst dann die Frage nach der Erweiterung der Funktionalität.

Beschreiben Sie ein spezifisches Problem mit einem spezifischen Code, ohne Verallgemeinerungen. Andernfalls erhält man eine unverständliche Funktionalität einer einzigen Funktion, die zu "alles ist falsch" und "alles ist unbequem" aufgebläht wird.

Hallo, Anton!

Lassen Sie uns Ihre Antwort "aufschlüsseln":

1. "Verwenden Sie Experten, um mit Daten mit mehreren Zeichen zu arbeiten, alles wird bequem und einfach sein."

Ich benötige einen Verlauf (Close) für 3 Symbole mit Zuordnung zu einem Chart.

Gibt es eine andere Möglichkeit, den Verlauf von EA abzurufen?

Und ich muss einen "Gemüsegarten" anlegen, um Ergebnisse aus einem EA (in einem separaten Fenster) zu erhalten!

2. "Was den Zugang zur Geschichte betrifft, so gibt es keine Universallösung. Das Terminal kann nicht im Voraus vorhersagen, was der Benutzer wünscht, d.h. ob der Expert Advisor nur ein Datum abrufen oder die gesamte verfügbare Historie anfordern möchte.

Es ist nicht nötig, die Wünsche der Verbraucher vorherzusagen. Sie müssen nur "sagen", in welchem Zustand sich die Daten auf dem Symbol UND ALLES befinden!!!

Dann weiß der Nutzer genau, welche Aktionen er als Nächstes durchführen muss.

3)"Aber wenn ein Programmierer sich nicht auf die Anforderung konzentriert, das Terminal "persönlich" neu zu schreiben, wird er eine Lösung in der bestehenden Funktionalität finden.

Ich habe nicht gesagt, geschweige denn gefordert, etwas "für sich selbst" zu tun, und die Lösung wird natürlich immer in den bestehenden Funktionen zu finden sein.

4. "Wenn es überhaupt keine Lösung gibt, stellt sich die Frage nach der Erweiterung der Funktionalität. "

Sie brauchen den Funktionsumfang nicht zu erweitern, sondern können lediglich kleinere Änderungen vornehmen, um die Nutzung zu erleichtern und die Geschwindigkeit zu erhöhen.

5. "Beschreiben Sie ein spezifisches Problem mit einem spezifischen Code, ohne zu verallgemeinern.Andernfalls wird die missverstandene Funktionalität einer einzigen Funktion zu "alles ist falsch" und "alles ist unpraktisch" aufgebläht.

OK, ich bereite mich auf eine "erweiterte" Erklärung des Problems mit einem spezifischen Code vor.

Nur leider kann man sich nicht auf das Nachschlagewerk "verlassen"...

Vielen Dank für Ihre Antwort.

 
Mikalas:


Wie immer geht der Nutzer davon aus, dass ich das Zentrum des Universums bin und sich die Welt um mich dreht. Sie müssen die vorhandenen Funktionen nutzen. Zumal mehr als einmal gezeigt wurde, wie man die Daten erhält.
 
barabashkakvn:
Wie immer geht der Nutzer davon aus, dass ich das Zentrum des Universums bin und sich die Welt um mich dreht. Sie müssen die vorhandenen Funktionen nutzen. Zumal mehr als einmal gezeigt wurde, wie man die Daten erhält.
Wie viel ist 2x2?
 
barabashkakvn:
Wie immer vertritt der Nutzer den Standpunkt, dass ich das Zentrum des Universums bin und sich die Welt um mich dreht. Sie müssen die Funktionen nutzen, die Sie haben. Außerdem wurde mehr als einmal gezeigt, wie man die Daten erhält.

Und Sie denken, dass es umgekehrt ist. Das Zentrum des Universums sind die Entwickler und die Welt dreht sich um sie? Ist das so?

Dann beantworten Sie eine Frage: Für wen wird dieses Terminal entwickelt? Machen sie es für sich selbst oder für den Nutzer?

Wenn sie es für sich selbst tun, keine Fragen ... Das ist in Ordnung.

Und wenn es für den Benutzer ist, dann sollte seine Meinung zumindest angehört werden...

 
antt :

........

Beschreiben Sie ein spezifisches Problem mit spezifischem Code ohne Verallgemeinerungen. Andernfalls stellt sich heraus, dass die missverstandene Funktionalität einer einzelnen Funktion zu „alles ist falsch“ und „alles ist unbequem“ aufgebläht wird.

Beschreiben:

Echtkonto FORTS Broker.

Problem - Ich erhalte keine Zeitreihendaten.

1. Die Bilder zeigen, dass sich Daten im Terminal befinden.

2. Hier ist der 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. Und hier ist das Ergebnis:

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

Wie kann man sich fortpflanzen?

Terminal angeschlossen und geöffnet, Verlauf aller Symbole vor dem Start von der Festplatte gelöscht

Indikatorprotokoll ab dem Zeitpunkt des Starts

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


Wie Sie sehen können, standen dem Indikator die Symboldaten in weniger als einer Sekunde nach dem Start zur Verfügung.

 
alexvd:

Wie kann man sich fortpflanzen?

Terminal angeschlossen und geöffnet, Verlauf aller Symbole vor dem Start von der Festplatte gelöscht

Indikatorprotokoll ab dem Zeitpunkt des Starts


Wie Sie sehen können, standen dem Indikator die Daten des Symbols in weniger als einer Sekunde nach dem Start zur Verfügung.

Guten Tag!

Mit anderen Worten: SEKUNDEN sind keine Zeit während des elektronischen Handels?

Mit anderen Worten: Mit einem synchronisierten Symbol und synchronisierten Zeitreihen können wir nicht

Balken(sofort) - ist das normal?

(Für mich) ist das ein Fehler.

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. Wenn es Daten im TERMINAL gibt (siehe Abb. alle Balken nach dem 16. März), sind wir gezwungen, zum Server zu gehen, ist das normal?

Die Unannehmlichkeiten und die lange Wartezeit auf die Informationen(für mich) sind offensichtlich.

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:

Guten Tag!

Eine SEKUNDE im elektronischen Handel ist also keine Zeit?

Eine Sekunde ab dem Start, d.h. einmal am Start. "Keine Zeit."