Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2007

 
Maxim Dmitrievsky:

Aqui as barras são reindexadas pelo tempo morto, porque pode haver barras perdidas na história, para que não haja buracos. Depois os valores vazios são deitados fora, e então nós detrendemos por MA.

Não há omissões no comerciante, uma vez que n últimas barras são tomadas. Eles não devem ser revertidos.

Acho que isso não afectaria muito. Mas eu posso refazê-lo e ver.

Bem, não refazer, mas apenas imprimir e compará-lo com o original - se a direção estiver correta.
 
Semelhante ao que foi escrito aqui, que prever uma barra desconhecida no passado é mais fácil do que prever uma barra futura
 
elibrarius:
Bem, não refaça, apenas imprima e compare com o original - se a direção não estiver errada
...        ...      ...
3267  0.001091  1.18140
3268  0.000421  1.18077
3269  0.001455  1.18191
3270  0.001636  1.18225
3271  0.001829  1.18258

[3258 rows x 2 columns]
>>>
...        ...      ...
3225  0.001091  1.18140
3226  0.000421  1.18077
3227  0.001455  1.18191
3228  0.001636  1.18225
3229  0.001829  1.18258

[3230 rows x 2 columns]

está tudo bem, o último valor corresponde ao preço da última barra no terminal

 

Partilharei a minha experiência - ao utilizar valores OHLC da barra actual da TF superior na barra minuto, assegurar a estabilidade dos dados obtidos, pode muito bem ser crítico ao aplicar o modelo, porque ninguém garante que o preço é obtido sem ter em conta a acumulação de OHLC da barra minuto actual.

Fiz uma função que resolve este problema, estou a partilhar

//+------------------------------------------------------------------+
//|Получение информации о ценах OHLC текущего бара                   |
//+------------------------------------------------------------------+
void Get_OHLC(string symbol,ENUM_TIMEFRAMES TF, double &arr_OHLC[])
{
   ArrayResize(arr_OHLC,4);
   arr_OHLC[0]=iOpen(symbol,TF,0);
   arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   if(TF!=PERIOD_M1)
   {
      double arr_High[];
      double arr_Low[];
      int copied=0;
      datetime s=iTime(symbol,TF,0);
      datetime f=iTime(symbol,PERIOD_M1,1);
      if(s<f)
      {
         copied=CopyHigh(symbol,PERIOD_M1,s,f,arr_High);
         if (copied>0)
         {
            arr_OHLC[1]=arr_High[ArrayMaximum(arr_High,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_High");
         }
         copied=CopyLow(symbol,PERIOD_M1,s,f,arr_Low);
         if (copied>0)
         {
            arr_OHLC[2]=arr_Low[ArrayMinimum(arr_Low,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_Low");
         }
      }
      else
      {
         if(s==f)//Если ТФ открылся на прошлом минутном баре
         {
            arr_OHLC[1]=iHigh(symbol,PERIOD_M1,1);
            arr_OHLC[2]=iLow(symbol,PERIOD_M1,1);
         }
         if(s>f)//Если ТФ открылся на текущем минутном баре
         {
            arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
            arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
         }
      }
   }
   else
   {
      arr_OHLC[0]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   }
}
 
Aleksey Vyazmikin:

Partilharei a minha experiência - ao utilizar valores OHLC da barra actual da TF superior na barra minuto, assegurar a estabilidade dos dados obtidos, pode muito bem ser crítico ao aplicar o modelo, porque ninguém garante que o preço é obtido sem ter em conta a acumulação de OHLC da barra minuto actual.

Eu fiz uma função que resolve este problema.

É um bug terminal ou o quê?
Eu pensei que com o primeiro tique, por exemplo, às 0:00 de segunda-feira, todas as barras até a semanal irão aparecer automaticamente.

Se for um bug, por favor envie um pedido com descrição e código para Servicedek para reprodução. Vai arranjá-lo no próximo lançamento.

 
elibrarius:

Isto é um bug terminal ou o quê?
Pensei que ao primeiro sinal, por exemplo, às 0:00 de segunda-feira, todos os bares até uma semana aparecerão automaticamente.

Se for um bug - envie um pedido com descrição e código para o servicedek para reprodução. Isto será corrigido no próximo lançamento.

a barra não abrirá até que o sinal seja recebido para o instrumento. Pode não haver nenhum tick durante muito tempo ;-)

 
elibrarius:

Isto é um bug terminal ou o quê?
Pensei que no primeiro tick, por exemplo, às 0:00 de segunda-feira todas as barras até a semanal aparecerão automaticamente.

Se for um bug - envie um pedido com descrição e código para o servicedek para reprodução. Isto será corrigido no próximo lançamento.

Isto é um bug, não um conserto.

A situação pode ser a seguinte: chega um novo tick de uma nova barra de minutos e usamos um indicador que não calculou a partir do primeiro tick e salta o tick, ou simplesmente entra no cálculo de todos os preditores, vai para este tempo e no meio do código pede a OHLC da barra atual. OHLC muda o tempo todo e pode ser crítico no caso de MO. Eu mesmo acabei de me deparar com diferentes cálculos de preditores, dependendo do tipo de modelagem do tick e, de fato, ao aplicar o modelo ao mercado.

 

para a terminologia, por favor aconselhe,

O "preditor" é apenas um dos elementos (um dos valores) de um vector que é submetido a treino?
apenas um monte de nomes sobre a mesma coisa.

 

Desculpe pela bochecha!

Você também pode executar esses dados através de redes neurais, se você tiver tempo livre, é claro.


EURUSD_options - este ficheiro contém todas as opções possíveis que podem estar na série cronológica.


EURUSD_data - a própria série cronológica (o último valor recebido está no final do arquivo).

Há três colunas, a primeira é o que deve ser previsto, as outras duas são variantes de respostas.

Na verdade, precisamos ensinar NS a escolher a variante certa entre duas. Se for possível prever o próximo valor de colunas com variantes de respostas, tudo bem também.

Arquivos anexados:
 
Evgeny Dyuka:

para a terminologia,

O "preditor" é apenas um dos elementos (um dos valores) de um vector que é submetido a treino?
apenas um monte de nomes sobre a mesma coisa.

Sim. Os sinónimos são "busca", "input", "preditor".
Razão: