28 !!! pares de moedas, 1 especialista. Outro graal, mas este eu acho que ninguém jamais mostrou. + CONTA DEMO - página 11

 

Sobre os Três Estarolas:

http://www.libex.ru/detail/book74148.html

 
É verdade, a capa é a mesma.
 
MetaQuotes:
Desfile de fotos sem fontes e provas...


2 Rosh

Em seu EA na página 5 você verificou a existência de Licitações e Desvios de fechamento de todos os t/fs. Você interpreta a ausência de tais desajustes como uma confirmação de que olhar para o futuro não é possível no testador. Eu ainda achava esta conexão estranha na época. Do meu ponto de vista, não é o comportamento de Close que deve ser testado, mas o comportamento de High e Low do t/f mais alto. E após a injusta reprovação da MQ mencionada acima, decidi dedicar algum tempo a ela. Mas era tarde demais.

Abaixo está o código do Expert Advisor que gera por si só os altos e baixos atuais da hora ou do dia no gráfico de um minuto. Em seguida, a cada tique compara-o com o Alto e o Baixo da hora ou do dia, obtido do H1 ou D1 e se houver uma discrepância, ele o envia para o registro e para o arquivo.

 
//+------------------------------------------------------------------+
//|                                           Simple Prospection.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2007, Yurixx"
#property link      ""
double curHi,curLo,HiH1,LoH1;
int    mm,hh,dd,curM1,curH1,curD1,kk,nn,handle;
string str,mHi,mLo,hHi,hLo;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  handle = FileOpen("FU.csv",FILE_CSV|FILE_WRITE," ");
  if(handle<1) { Print("File FU.csv not found, Error:", GetLastError());
                 return(false);   }
  if (Period()>PERIOD_M1)
  {  Print("Период тестирования не соответствует задаче");
     return(-1);
  }
  Print("Период тестирования ",Period()," минут");
  FileWrite(handle,"Date","Time","curHi","HiH1","curLo","LoH1");
  nn=D'2007.07.12 23:58:59';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  nn=D'2007.07.13 00:58:59';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  nn=D'2007.07.13 00:02:00';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  curHi=0.0;
  curLo=1000.0;
  curD1=-1;
  curH1=-1;
  curM1=-1;
  nn=0;//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {  
//----
  mm = TimeMinute(TimeCurrent());
  hh = TimeHour(TimeCurrent());
  dd = TimeDay(TimeCurrent());
  if (mm!=curM1)
  {  if (hh!=curH1)
     {  if (dd!=curD1)
        {  curHi=NormalizeDouble(Bid,Digits);
           curLo=NormalizeDouble(Bid,Digits);
           curD1=dd;
        }
        //curHi=NormalizeDouble(Bid,Digits);
        //curLo=NormalizeDouble(Bid,Digits);
        curH1=hh;
     }
     curM1=mm;
  }
  if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits);
  if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits);
  //HiH1 = iHigh(NULL,PERIOD_H1,0);
  //LoH1 =  iLow(NULL,PERIOD_H1,0);
  HiH1 = iHigh(NULL,PERIOD_D1,0);
  LoH1 =  iLow(NULL,PERIOD_D1,0);
  HiH1 = NormalizeDouble(HiH1,Digits);
  LoH1 = NormalizeDouble(LoH1,Digits);
  str = TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
  mHi = ", curHi=" + DoubleToStr(curHi,Digits);
  mLo = ", curLo=" + DoubleToStr(curLo,Digits);
  hHi = ", HiH1="  + DoubleToStr(HiH1, Digits);
  hLo = ", LoH1="  + DoubleToStr(LoH1, Digits);
  if (HiH1!=curHi||LoH1!=curLo)
  {  Print(str,mHi,hHi,mLo,hLo);
     FileWrite(handle,TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),curHi,HiH1,curLo,LoH1);
  }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{  Print("Работа закончена");
   FileClose(handle);
//---- done
   return(0);
}

E esta é uma parte do registro, que foi obtida executando esta EA no EURUSD, M1 de 2007.07.10 a 2007.07.14. Como você pode ver no texto da EA, a comparação foi com os dados diários. Entretanto, quando comparada aos dados horários, a situação não é melhor. Eu queria obter uma confirmação da possibilidade de olhar para o futuro ou para ter certeza de que não existe tal possibilidade. No entanto, acabou se revelando algo completamente diferente.

Como você pode ver na imagem, o tempo impresso no registro pelo testador e o tempo exibido pelo Expert Advisor ocasionalmente diferem um do outro. Além disso, há alguns contratempos incompreensíveis. As horas 2007.07.13 00:58, 2007.07.12 00:58, 2007.07.13 00:02, 2007.07.13 00:04, 2007.07.13 00:06 e 2007.07.13 00:07. E toda vez que o Expert Advisor sai 2007.07.12 23:58:59.

Talvez a discrepância de dados Alta e Baixa naqueles momentos tenha sido causada exatamente por essas falhas de tempo.

Além disso, aconselho prestar atenção à impressão de teste para arquivar, que está na função init(). Esta impressão mostra que os segundos não funcionam no testador. Assim, a função TimeToStr() no modo segundos e TimeSeconds() não funcionam. Talvez, era essa a intenção, mas então por que tanto o testador quanto o Expert Advisor imprimem os dados com segundos?

Não estou nem mesmo levantando a questão da discrepância entre dados altos e baixos, porque não está absolutamente claro de onde estes dados estão vindo neste tempo obscuro.

Mais uma coisa. Ao testar de 2007.07.09 a 2007.07.14 e não de 2007.07.10 a 2007.07.14 eu tentei obter alguns absurdos estranhos - dados de pagadores altos e baixos não são recebidos, ou seja, as variáveis HiH1 e LoH1 sempre têm valores zero.

Talvez eu tenha cometido um erro em algum lugar ?

 
Olá Yurixx.
Eu dirigi seu consultor especializado sem alterar nada no código. Aqui estão todos os dados do arquivo que ele emite:
Data Hora curHi HiH1 curLo LoH1<br/ translate="no"> 2007.07.12 23:58:00 0 58 23 12
2007.07.13 00:58:00 0 58 0 13
2007.07.13 00:02:00 0 2 0 13
Aqui está o log:
2007.08.13 09:54:51 2007.07.13 22:59 Prospecção simples EURUSD,M1: Trabalho concluído
2007.08.13 09:54:48 2007.07.10 00:00 Prospecção simples EURUSD,M1: Período de teste 1 min
2007.08.13 09:54:48 Prospecção simples iniciada para testes
2007.08.13 09:54:45 Prospecção simples: carregada com sucesso
Nem um único erro no teste de 2007.07.10 a 2007. 07.14. É verdade, então lembrei que tenho uma construção especial de teste da semana passada. O usual 208 construído a partir de 01 de agosto (agora atualizado um termo pela LibeUpdate) não tem erro também:
2007.08.13 10:13:04 2007.07.13 22:59 Prospecção simples EURUSD,M1: Trabalho finalizado
2007.08.13 10:13:04 2007.07.10 00:00 Prospecção simples EURUSD,M1: Período de teste de 1 minuto
2007.08.13 10:13:04 Prospecção simples iniciada para testes
A questão é que antes do teste eu baixei os dados perdidos do History Center (eu não iniciei este terminal por alguns meses) e depois recalculei todos os prazos - eu pressionei "Download" no History Center pela segunda vez, neste caso ele sugere recalcular todos os t/f automaticamente e não é necessário o conversor de período (caso as pessoas não estejam cientes desta característica).


Mas antes disso havia saídas de erro para o log:

2007.08.13 10:08:19 1999.05.26 02:01 Prospecção simples GBPUSD,M1: Trabalho concluído
2007.08.13 10:08:18 1999.01.04 09:31 Prospecção simples GBPUSD,M1: 1999.01. 04 09:31:00, curHi=1,6718, HiH1=1,6718, curLo=1,6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:30 Prospecção simples GBPUSD, M1: 1999.01. 04 09:30:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:29 Prospecção simples GBPUSD, M1: 1999.01. 04 09:29:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:28 Prospecção simples GBPUSD, M1: 1999.01. 04 09:28:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:27 Prospecção simples GBPUSD, M1: 1999.01. 04 09:27:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:26 Prospecção simples GBPUSD, M1: 1999.01. 04 09:26:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:25 Prospecção simples GBPUSD, M1: 1999.01. 04 09:25:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:24 Prospecção simples GBPUSD, M1: 1999.01. 04 09:24:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:23 Prospecção simples GBPUSD, M1: 1999.01. 04 09:23:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:22 Prospecção simples GBPUSD, M1: 1999.01. 04 09:22:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:21 Prospecção simples GBPUSD, M1: 1999.01. 04 09:21:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:20 Prospecção simples GBPUSD, M1: 1999.01. 04 09:20:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:19 Prospecção simples GBPUSD, M1: 1999.01. 04 09:19:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:18 Prospecção simples GBPUSD, M1: 1999.01. 04 09:18:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:17 Prospecção simples GBPUSD, M1: 1999.01. 04 09:17:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:16 Prospecção simples GBPUSD, M1: 1999.01. 04 09:16:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:15 Prospecção simples GBPUSD, M1: 1999.01. 04 09:15:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:14 Prospecção simples GBPUSD, M1: 1999.01. 04 09:14:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1. 6686
2007.08.13 10:08:18 1999.01.04 09:13 Prospecção simples GBPUSD, M1: 1999.01. 04 09:13:00, curHi=1.6682, HiH1=1.6697, curLo=1.6682, LoH1=1. 6597
2007.08.13 10:08:15 1999.01.04 09:13 Prospecção simples GBPUSD,M1: Período de teste 1 minuto
2007.08.13 10:08:15 Prospecção simples iniciada para testes

Eu baixei esses dados para EURUSD, mas comecei a testar para GBPUSD, que não foi bombeado e recalculado. Essa foi a razão das inconsistências.
Tente fazer o mesmo - carregar dados e sincronizar automaticamente ou usar o script conversor de período.

Vamos analisar a questão dos segundos, obrigado.
 

Oi Rosh !

Obrigado por sua resposta. Até onde eu entendo, você acha que o descasamento de dados altos e baixos de diferentes funis é devido à qualidade do fluxo de cotações. Assim, os castiçais são formados de forma diferente em diferentes funis e, portanto, podem ser diferentes por 1-2-3 pips. É bem possível.

Estive testando usando os dados do servidor de demonstração MQ. E não os estou escrevendo em tempo real, mas faço o download de todos os dados uma vez por semana, nos fins de semana. Na verdade eu pensava que os castiçais são desenhados em todos os TFs, pelo menos no servidor, pelo software do servidor, de forma síncrona para todos os TFs, com base em um único fluxo de citação e, portanto, tais diferenças são impossíveis. Se não for este o caso, é uma pena, teremos de levar isso em conta de alguma forma ... Combinar dados, sincronização, etc. para fazer tudo parecer bonito é, na minha opinião, o caminho errado. Tanto seu servidor quanto os servidores dos corretores entregam os dados conforme eles os entregam. E você tem que negociar sobre esses mesmos dados e não sobre o que eles se transformam depois de algum tempo. Para o processo de teste é especialmente importante. Todos conhecem o problema dos grails - um espaço no testador e uma perda no verdadeiro robô comercial. De onde vem? MQ insiste que olhar para o futuro é impossível e que a modelagem de carrapatos é bastante apropriada para o processo. Deve-se supor que este é o caso. Portanto, de fato, o problema são os dados ? A MQ não pode resolver este problema, os dados não dependem dele. Então você precisa fazer o testador funcionar corretamente em qualquer dado, não apenas nos dados que são penteados.

Mas meu posto não era sobre discrepâncias nos dados de diferentes t/f's, mas sobre confusão ao longo do tempo. E o fato de você ter postado não remove a questão. Pelo contrário, em conexão com seu posto, quero perguntar o seguinte.

Em meu registro, os dados de tempo do testador e da EA contêm segundos. No seu, os dados no testador não contêm segundos e os dados no seu EA contêm apenas zero segundos. Isto me leva a questionar: em que modo você realizou o teste. Quero ser claro - este EA destina-se apenas a testes no modo "todos os carrapatos". E o erro que eu encontrei só pode ser reproduzido a partir deste modo. Portanto, se você esteve testando em outro modo, por favor repita o teste, ele só levará um segundo.

Em princípio, não faz absolutamente nenhuma diferença em qual par e em qual faixa de datas testar. E nas TFs que não a M1, o Expert Advisor não funcionará. Entretanto, a fim de poder comparar nossos resultados, peço-lhes que façam um teste no EURUSD, na faixa entre 2007.07.10 e 2007.07.14, e, em um teste separado, na faixa entre 2007.07.09 e 2007.07.14.

Agradeço antecipadamente.

 
Yurixx:

Oi Rosh !

Em meu registro, tanto o testador quanto os dados de tempo da EA contêm segundos. No seu, os dados do testador não contêm segundos e os dados da EA contêm apenas zero segundos. O que leva à pergunta: que modo você usou para os testes? Quero ser claro - este EA destina-se apenas a testes no modo "todos os carrapatos". E o erro que eu encontrei só pode ser reproduzido a partir deste modo. Portanto, se você esteve testando em outro modo, por favor repita o teste, ele só levará um segundo.

Em princípio, não importa em que par e em que faixa de datas testar. E nas TFs que não a M1, o Expert Advisor não funcionará. Entretanto, a fim de poder comparar nossos resultados, peço-lhes que façam um teste no EURUSD, na faixa entre 2007.07.10 e 2007.07.14, e, em um teste separado, na faixa entre 2007.07.09 e 2007.07.14.

Agradecemos antecipadamente.


De fato, pesquisei agora e vi que não tinha segundos. Acho que tem a ver com o fato de que eu não tinha dados para GBPUSD carregados automaticamente durante 1 hora e 1 dia no primeiro teste (eu não tinha nenhum gráfico aberto no terminal), mas tentei verificá-lo agora pela segunda vez e não houve erro - carreguei os dados necessários no primeiro teste

Ou seja, a primeira vez que não houve dados para os períodos H1 e D1 para GBPUSD e, portanto, houve erros na modelagem.
 
Eu fiz um teste "no EURUSD na faixa 2007.07.10 a 2007.07.14, e, em um teste separado, na faixa 2007.07.09 a 2007.07.14" como você pediu, nenhuma diferença.
 
Rosh:

Vamos analisar a questão dos segundos, obrigado.


O erro com os segundos foi corrigido (no compilador). A construção corrigida estará disponível em breve.
 
Rosh:
O bug com segundos foi corrigido (no compilador). A construção corrigida estará disponível em breve.
Podemos esperar que na construção corrigida o tester grail77 não funcione mais?
 
granit77:
Rosh:
O bug com segundos foi corrigido (no compilador). A construção corrigida estará disponível em breve.
Podemos esperar que, no caso de um testador de construção corrigido, o Grail77 não funcione mais?

Vou verificar isso amanhã.