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

 
Aleksey Nikolayev:


A única coisa - para combater lacunas e vazões de citações, é melhor tomar close[i]-open[i], ao invés declose[i]-close[i-1], como incrementos.


Eu entendo, mas como é que isso ajuda com as lacunas nas citações? Não é melhor considerá-las para o H1?

"é melhor tomar o[i]-abrir[i] como um incremento" - talvez uma mudança percentual seja melhor?
 
Aleksey Nikolayev:

Não é difícil, tenho a certeza que o podes fazer se quiseres. A única coisa que você deve fazer é tomar close[i]-open[i] em vez declose[i]-close[i-1] como incrementos para controlar lacunas e vazões de citações.

fechar[i-1] e abrir[i] diferem por 1 tick. Para quê lutar com o primeiro tick?

 
Evgeniy Chumakov:


Vejo o que acontece com as lacunas, mas como ajuda lidar com as quedas de preços? Não é melhor calcular para o H1?

Quando uma barra = um incremento, não é um problema se algumas barras forem perdidas. Se o incremento for contado por duas barras, haverá muitos espigões.

Evgeniy Chumakov:


"Se queremos usar close[i]-open[i] como incrementos" - talvez seja melhor usar a mudança percentual?

Sim, assim está melhor. Você também pode tomar aumentos de logaritmo.

 
elibrarius:

fechar[i-1] e abrir[i] diferem por 1 tick. Para quê lutar com um carrapato?

Praticamente garantido para se livrar de lacunas e saltos na história.

 
Aleksey Nikolayev:

Quase que se livrar de lacunas e lacunas na história.

Pode ocorrer uma falha em qualquer outro tick dentro de um minuto. As barras em falta devem ser preenchidas a partir do último preço conhecido do último bar conhecido.
 
elibrarius:
Uma lacuna pode ocorrer em qualquer outro tick dentro de um minuto. As barras em falta devem ser preenchidas a partir do último preço conhecido do último bar conhecido.

As lacunas distribuídas uniformemente entre os bares não são muito assustadoras. Os desagradáveis são aqueles que estão apinhados juntos num determinado momento, que normalmente são espaços entre barras.

As barras "perdidas" é um conceito ambíguo, pode ser um feriado, uma sessão curta, etc., ou simplesmente deixar cair barras por razões completamente obscuras. Eu decidi que é mais fácil calcular os incrementos para uma barra do que mostrar Sherlock Holmes lidando com várias barras de um minuto do período de dez anos.

 
elibrarius:

Eu faço isto:

1) Eu crio um array de índices de strings com um comprimento igual ao número de strings, preencho-o com valores de 0 a N strings

2) Eu embaralho esta matriz

Onde RandomInteger() é qualquer variante do

3) então eu pego todos os valores destes índices em um loop e por ele do array principal a string requerida, ele se torna pseudo-aleatória depois de misturar os índices

Tentei este algoritmo com a função aleatória, que foi dada anteriormente. Acontece que há um deslocamento para a primeira metade do array numérico, se você pegar os primeiros n valores do array resultante e depois filtrar o array em ordem. E os grupos em linha são observados, o que também não é bom, mas melhor do que nada.

 
Aleksey Vyazmikin:

Tentei este algoritmo com a função aleatória que foi dada anteriormente. Acontece que há um deslocamento para a primeira metade da série numérica, se você pegar os primeiros n valores do array resultante e depois filtrar o array em ordem. E os grupos em fila são observados, o que também não é grande, mas melhor do que nada.

Estranho. Como será que isso pode ser explicado?
Eu tenho outra versão comentada, mas não gostei por razões lógicas:

        for (int r = 0; r<rows; r++) {//перебор train участка
                //j = r + RandomInteger(rows - r);//номер строки с которой поменять  
                j = RandomInteger(rows);//номер строки с которой поменять - так равномернее. Формулой выше меняются последние с последними. А тут с любыми.
                c = idx[r]; idx[r] = idx[j]; idx[j] = c;
        }

Qual RandomInteger() você usa? Eu uso XOR.

 
elibrarius:

fechar[i-1] e abrir[i] diferem por 1 tick. Para quê lutar com um carrapato?

Você está errado) eles não diferem por 1 tick, estes valores serão iguais. Só no caso de uma lacuna é que haverá uma diferença. Sim, fechar[i-1] não vai funcionar)))) para um novo bar
 
Alexander Alekseyevich:
Você está errado) eles não diferem por 1 tick, estes valores serão iguais.

https://www.mql5.com/ru/docs/runtime/testing

Uma nova barra de minutos abre-se não quando um novo minuto começa (o número de segundos torna-se 0), mas quando chega um tick - uma mudança de preço de pelo menos um ponto.

Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха, ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...