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

 
Mihail Marchukajtes:

Olá a todos!!! Rapazes, podem dizer-me como atrasar o cálculo do indicador? Uma nova barra foi aberta e o indicador precisa ser calculado após 30 segundos!!!!!

Preciso de um atraso no cálculo do indicador, ele precisa esperar 30 segundos ou me avisar onde está escrito ou um exemplo, tropecei em tudo, não consigo encontrar :-(

Para que serve um atraso?

 
Vitaly Muzichenko:

Porquê o atraso?


Os dados da SME são carregados com um atraso de 30 segundos. E às vezes o indicador é calculado e depois os dados são carregados, depois eu recompilo o indicador e ele muda de direção, porque os dados são carregados completamente, ao contrário dos primeiros 5 segundos da vida útil da barra. Como regra, 30 segundos é suficiente. É possível fazer isto com o indicador? Refiro-me ao atraso.....

 
Mihail Marchukajtes:

Os dados da SME são carregados com um atraso de 30 segundos. E às vezes o indicador é calculado e depois os dados são carregados, depois eu recompilo o indicador e ele muda de direção, porque os dados são carregados completamente, ao contrário dos primeiros 5 segundos da vida útil da barra. Como regra, 30 segundos é suficiente. É possível fazer isto com o indicador? Refiro-me ao atraso.....

Ou você cria um evento de timer único,
ou faça-o você mesmo: um novo tempo de bar é memorizado e cada tick é verificado se 30 segundos tiverem passado.
 
Aleksey Terentev:
Ou criar um evento de timer único,
ou faça-o você mesmo: um novo tempo de bar é memorizado e cada tick é verificado se 30 segundos tiverem passado.

A função do temporizador não é muito clara. Usei conselhos anteriores para fazer a seguinte função e agora a barra é calculada sem atrasos. (sem ele, não conta nada até que você troque o TF)

void OnTimer()
{
   int bars = Bars(_Symbol, _Period);
   if (bars <= 0) return;
   
   datetime T[];
   int res = CopyTime(_Symbol, _Period, 0, bars, T);
   if (res <= 0) return;
   
   // unused params
   double d[];
   long l[];
   int i[];
   OnCalculate(bars, bars - 1, T, d, d, d, d, l, l, i);
   ChartRedraw();
}

Qual é a melhor maneira de organizar isto, poderia sugerir ????

 
Mihail Marchukajtes:

Os dados da SME são carregados com um atraso de 30 segundos. E às vezes o indicador é calculado e depois os dados são carregados, depois eu recompilo o indicador e ele muda de direção, porque os dados são carregados completamente, ao contrário dos primeiros 5 segundos da vida útil da barra. Como regra, 30 segundos é suficiente. É possível fazer isto com o indicador? Refiro-me ao atraso.....

A primeira coisa que veio:

 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 limit=rates_total-prev_calculated;
  if(limit>0) { 
  ...
  }

 // задержим на 30 сек
 if(time[0] > TimeCurrent()-30)
   return(rates_total-1);

 // остальной код
   ...
 
Vitaly Muzichenko:

A primeira coisa que veio à tona:


Interessante!!! Põe o teu código no peru, eu vou ver o que se passa. Mas eu pensei que tal atraso deveria ser descrito no onTimer, não?

Obrigado de qualquer maneira!!!
 
Mihail Marchukajtes:

Olá a todos!!! Rapazes, podem dizer-me como atrasar o cálculo do indicador? Uma nova barra foi aberta e o indicador precisa ser calculado após 30 segundos!!!!!

Preciso de um indicador atrasado após 30 seg. ou avisa-me onde está escrito ou um exemplo, tropecei por todo o lado, não o consigo encontrar :-(

Porquê 30 seg? - Faça-o durante 60 segundos - ou seja, não conte até à 1ª barra, mas até à 2ª. Ou seja, você tem uma nova barra 0, você ainda tem que esperar pela primeira por 30 segundos, mas a segunda está pronta.

Além disso, você deve otimizar e testar através da abertura de preços.

 
Review of Econometric Models Applicable to Hedge Fund Returns Capturing Serial Correlation and Illiquidity by Ludovic Dubrana :: SSRN
  • papers.ssrn.com
Hedge Fund returns are often highly serially correlated mainly due to illiquidity exposures given that investments in such securities tend to be inactively traded and associated market prices are not always readily available. Following that, observed returns of such alternative investments tend to be smoother than “true” unobserved returns...
 
elibrarius:

Porquê 30 segundos? - Faça isso durante 60 segundos de uma só vez - ou seja, não conte a partir da 1ª barra, mas a partir da 2ª. Ou seja, a nova barra 0 está fora, ainda tem de esperar 30 segundos pela primeira, mas a segunda está pronta.

Além disso, você provavelmente faz otimização e testes nos preços de abertura.


Eu faço-o com barras! Mas não funciona com a estratégia principal, significa que precisamos de deslocar a barra de decisão para trás, o que é contrário à estratégia básica, por isso não é uma opção....