FORTES Por favor, ajude - página 7

 
Continuar escondendo o código?
 
barabashkakvn:
Continuar escondendo o código?

Você sequer lê os posts?

Mikalas2015.03.26 18:56RU

Você gritou e chamou-os de chukchi, mas o problema não está resolvido!

//+------------------------------------------------------------------+
//|                                                         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);
  }

Ainda não escrevi o download do histórico, mas os dados estão no terminal, e NÃO saem dele na primeira vez!

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. 

no bolso|editar|apagar

 

Alguém pode explicar por favor:

Porque a função com identificador SERIES_TERMINAL_FIRSTDATE, quando há dados

no terminal retorna FALSE?

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

Alguém pode explicar por favor:

Porque a função com identificador SERIES_TERMINAL_FIRSTDATE, quando há dados

no terminal retorna FALSE?

5 seg. Vou lançar alguns links...
 
MigVRN:
5 seg. Vou lançar alguns links...

De Data Access Organisation Help --> Exemplo de script para download do histórico:

Если мы успешно прошли все проверки, то сделаем последнюю попытку обойтись без обращения к торговому серверу. Сначала узнаем начальную дату, для которой доступны минутные данные в формате 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:

Tudo acontece exatamente como diz na documentação. :)

Esboçou um indicador e um Expert Advisor para verificação + o resultado no vídeo.

1) Primeiro eu lanço um Expert Advisor no gráfico que tem uma função dentro do OnTick que funciona por 20 segundos.

O resultado é que o gráfico continua funcionando e exibe tudo como deveria ser. O gráfico também funciona como esperado.

2) Depois aplicamos ao gráfico o indicador que tem a funçãoOnCalculate durante 20 segundos.

O resultado - a conversa paira. Ao mesmo tempo, a próxima janela de bate-papo com o mesmo símbolo, onde um período diferente é definido, também fica pendurada. O vidro continua a funcionar como deveria. Depois que a função tiver funcionado, tudo volta ao normal.

3) O vídeo não o mostra - mas se você lançar um indicador em um chat (set 60 seg), e um EA no outro - o EA não começa a funcionar até que o indicador funcione mal em outro chat!

Anexei o vídeo separadamente - ele está diminuindo a velocidade no meu navegador.

Não me diga, para onde foi o multithreading ?!

Até que o indicador funcione, os carrapatos não chegam à EA!

 
Serj_Che:

Para onde diabos foi a multi-tarefa?!

Até que o indicador funcione, os carrapatos não chegam à EA!

Os carrapatos não chegam ao ticker, eles simplesmente não aparecem na tabela.
 
Serj_Che:

Para onde diabos foi a multi-tarefa?!

Até que o indicador funcione, os carrapatos não chegam à EA!

Sempre foi assim.

Mikalas:
As licitações estão chegando ao copo, ele simplesmente não aparece na tabela.

Os carrapatos da EA não funcionam. E tudo mais no bate-papo. Não verifiquei o temporizador e os eventos personalizados.

Mikalas:

Help Data access organization --> Exemplo de script para carregar o histórico:

Também de ajuda.

...Os arquivos de serviço no formato HCC atuam como fonte de dados para construir os dados de preços para os prazos solicitados no formato HC. Os dados no formato HC são séries temporais, que são preparadas ao máximo para acesso rápido. Eles são criados somente a pedido de um gráfico ou programa mql5 no volume que não exceda o parâmetro "Max bars in charts", e são salvos para uso posterior em arquivos com a extensão hc.

Para economizar recursos, os dados no cronograma são carregados e armazenados na RAM somente quando necessário. Em caso de ausência prolongada de solicitações, os dados são descarregados da RAM, salvando-os em um arquivo. Os dados para cada período de tempo são preparados independentemente dos dados prontos para outros períodos de tempo. As regras para a preparação e disponibilidade de dados são as mesmas para todos os prazos. Isto é, apesar da unidade de armazenamento de dados no formato HCC ser uma barra de minutos, a disponibilidade dos dados no formato HCC não significa a disponibilidade e acessibilidade dos dados no formato HC para o período de tempo M1 no mesmo volume.

 
Mikalas:

Alguém pode explicar por favor:

Porque a função com identificador SERIES_TERMINAL_FIRSTDATE, quando há dados

no terminal retorna FALSE?

Porque é a PRIMEIRA vez que ele acessa esta série em particular.
 
Mikalas:

De Data Access Organisation Help --> Exemplo de script para download do histórico:

Aí está. Você está no caminho certo. Para verificar como funciona exatamente o terminal, em vez de como você o imagina, um algoritmo simples de verificação.

  • Abra uma tabela "MIX-6.15 M1" no terminal. No gráfico está o indicador do primeiro posto.
  • Abra o "Catálogo de Dados Abertos" a partir do terminal.
  • Procurando a história no símbolo "MIX-6.15" desta forma ...Terminal\D0*******CF37AD***55***0E51F***75bases\Open-Demo\history
  • Terminal de descarga.
  • Apagar pasta "MIX-6.15".
  • Terminal de boot up. Vemos erro. Uma pequena brincadeira na tabela - mudar o cronograma várias vezes. Por exemplo, mudar M1 e M5 várias vezes. O erro desaparece. Isso significa que foram preparados dados de outro período de tempo (diferente daquele que é solicitado no código). Se você não quiser alterar os prazos manualmente - você mesmo deve preparar os dados.
  • Recarregue o terminal - sem erros.
  • Se não estiver claro, então repita a experiência.
Razão: