Discussão do artigo "Reamostragem avançada e seleção de modelos CatBoost pelo método de força bruta" - página 15

 

Hi,

Obrigado pelo artigo. Eu tentei, mas, de alguma forma, não consegui obter uma boa curva de patrimônio (mesmo para o período de treinamento) no backtest do MT5, conforme mostrado no python (veja abaixo). Quando faço o backtest com o EA EURUSD do seu artigo, ele funciona. O que posso fazer para solucionar esse erro?


[Excluído]  
konorti:

Hi,

Obrigado pelo artigo. Eu tentei, mas, de alguma forma, não consegui obter uma boa curva de patrimônio (mesmo para o período de treinamento) no backtest do MT5, conforme mostrado no python (veja abaixo). Quando faço o backtest com o EA EURUSD do seu artigo, ele funciona. O que posso fazer para solucionar esse erro?

Olá, talvez seja um problema com o MARKUP do testador personalizado para usdjpy, portanto, os resultados são diferentes

[Excluído]  

Foi adicionado um novo método de busca de extremos (marcação de gráfico), como um padrão em ziguezague

from scipy.signal import argrelextrema

def add_peaks(dataset, order, plot=False):
    ilocs_min = argrelextrema(dataset.close.values,
                              np.less_equal, order=order)[0]
    ilocs_max = argrelextrema(dataset.close.values,
                              np.greater_equal, order=order)[0]
    dataset['low_lbl'] = False
    dataset['high_lbl'] = False
    dataset.loc[dataset.iloc[ilocs_min].index, 'low_lbl'] = True
    dataset.loc[dataset.iloc[ilocs_max].index, 'high_lbl'] = True

    if(plot):
        dataset.close.plot(figsize=(15, 5), alpha=.3)
        dataset[dataset['high_lbl']].close.plot(
            style='.', lw=10, color='red', marker="v")
        dataset[dataset['low_lbl']].close.plot(
            style='.', lw=10, color='green', marker="^")
        plt.show()

    conditions = [
        (dataset['low_lbl'] == False) & (dataset['high_lbl'] == False),
        dataset['low_lbl'] == True,
        dataset['high_lbl'] == True
    ]
    choices = [np.nan, 0, 1]
    dataset['labels'] = np.select(conditions, choices)
    dataset = dataset.drop(['low_lbl', 'high_lbl'], axis = 1)
    dataset = dataset.fillna(method='ffill')
    return dataset.dropna()

pr = add_peaks(pr, 15, plot=True)

Ao brincar com o parâmetro, você pode ajustar a frequência das negociações. Os testes mostraram que a marcação por extremos não é a melhor ideia. A abordagem do artigo funciona melhor.

 
Maxim Dmitrievsky:

Olá, talvez haja um problema com o MARKUP do testador personalizado para usdjpy, portanto, os resultados são diferentes

Obrigado. Tentei com MARKUPs diferentes (maior e menor) e também com períodos de tempo diferentes, mas não obtive sucesso. Vi alguns bons resultados no timeframe 4H/USDJPY, mas com outros pares de moedas não foi bem assim e tentei refazer o teste várias vezes sem sucesso. É possível filtrar de alguma forma as negociações para que o EA não esteja sempre no mercado, mas apenas com sinais fortes?
 

Oi Maxim,

O artigo atual está bom, mas o poder limitado de computação e o ajuste de curva são as maiores preocupações desses métodos tradicionais e, portanto, geralmente eu evito testar essas abordagens.

Você tem interesse em escrever um artigo sobre a implementação do "MuZero" da DeepMind no Forex?

https://deepmind.com/blog/article/muzero-mastering-go-chess-shogi-and-atari-without-rules

https://medium.com/applied-data-science/how-to-build-your-own-muzero-in-python-f77d5718061a

Estou lhe perguntando isso porque sou um programador MQL5 de nível básico e pode levar muito tempo para eu escrever do zero o que você provavelmente pode fazer facilmente.

Por favor, deixe-me saber sua opinião.


Vou definir o que escrever para o seguinte na codificação forex e você pode convertê-lo em código MQL5:

  • O valor: quão boa é a posição atual?
  • A política: qual é a melhor ação a ser tomada?
  • A recompensa: quão boa foi a última ação?

Obrigado.

MuZero: Mastering Go, chess, shogi and Atari without rules
MuZero: Mastering Go, chess, shogi and Atari without rules
  • deepmind.com
In 2016, we introduced AlphaGo, the first artificial intelligence (AI) program to defeat humans at the ancient game of Go. Two years later, its successor - AlphaZero - learned from scratch to master Go, chess and shogi. Now, in a paper in the journal Nature, we describe MuZero, a significant step forward in the pursuit of general-purpose...
 
Maxim, seria bom fazer um sinal no artigo, parece ter bons resultados.
[Excluído]  
elibrarius:
Maxim, seria bom dar um sinal no artigo, pois ele parece ter bons resultados.

Já existem métodos mais avançados, em termos de preparação de dados, e estou trabalhando com eles.

Monitorar cada artigo não é uma opção.

É mais para fins científicos e cognitivos.

 
Quando altero a data de início e de término do trem, o resultado dos backtests do modelo é ruim. O que posso fazer para melhorar o desempenho do modelo?
 
Como o rótulo do algoritmo de ml é desequilibrado, você usa um GaussMixtureModel para simular o preço nascido e, em seguida, faz uma amostragem do modelo, para poder treinar um algoritmo de ml melhor
 
Com relação ao artigo, embora eu não o tenha lido, achei-o muito poderoso. Por isso, decidi tirar um momento para dar alguns conselhos. Em primeiro lugar, a fonte de dados nesse mercado é apenas parte das fichas no mercado, ou uma pequena parte das fichas, é a maioria das fichas nas mãos dos traders que pode determinar a direção do mercado, por isso é difícil conseguir o que esperamos da coleta de dados, confiando em qual metodologia e abordagem para otimizar o que pode ser apenas um ajuste ao mercado passado. Em segundo lugar, esse mercado não é aleatório por um curto período de tempo. Por exemplo, quando há apenas dois operadores de vários lados e dois operadores de lado curto, um lado curto tem o preço N listado para venda e o outro lado curto tem o preço N-1 para venda. Uma compra N-1 de vários participantes, o preço atual de N, supondo que outro preço N de vários participantes compre, teoricamente, o preço deveria ser N; na verdade, o N vazio não é único, o mecanismo de agregação irá para N-1 para encontrar um negócio, portanto, o preço atual de N-1 provavelmente é tão médio. Portanto, N e N-1, N+1, etc. estão todos relacionados e não são completamente aleatórios, de modo que a otimização dos dados pode ser melhor a partir do momentum. Por fim, seja por meio de um EA ou de uma negociação manual, é difícil ganhar dinheiro com o mercado de forma estável, pois, se ele for estável, a riqueza será inevitavelmente transferida para um determinado participante do mercado, e esse mercado deixará de existir. Portanto, investimento é investir em risco, processo de risco de colheita, muito preocupado com a estabilidade das possíveis perdas, não me oponho a algumas pessoas nas transações de mercado que encontraram uma certa lei, o equivalente ao mercado BUG realizou riqueza apenas, de fato, o próprio mercado também está em processo de autoaperfeiçoamento devido à complexidade dos participantes, mas o ouro não é vermelho, ninguém é perfeito. A direção da negociação inteligente é, teoricamente, o processo de procurar constantemente por bugs de mercado, esse BUG é apenas um pequeno número de pessoas para usar, com mais pessoas no fracasso. Espero que meu comentário possa ser uma referência para você. vx tiger54088 pass by