Discussão do artigo "Aprofundando na "memória" do mercado através da diferenciação e do análise de entropia" - página 9

 
clemmo:

Estou recebendo esses erros:

1. Parece que a EA está tentando vender, mas colocando stops como se fosse uma compra?
2019.07.25 04:35:35.174 Trades '666': failed market sell 0.10 USDCHF sl: 0.98139 tp: 0.99039 [Invalid stops]

2. O EA se retira na formação de uma nova barra ou vela.

3. O EA só pode fazer negociações de venda (a menos que isso tenha sido projetado durante a fase de otimização?)

4. O EA usa um volume de negociação diferente somente para o NZDUSD?

update0: após mais testes, posso dizer que o problema da remoção automática está relacionado às configurações personalizadas da captura de tela dos hiperparâmetros. Tentarei isolar qual delas é.
update1:Está relacionado ao ajuste da profundidade do histórico para 1500. Tentarei verificar se valores diferentes geram resultados diferentes. Estou testando em M1 e M15 e tenho histórico de preços suficiente.
update2: O EA se removerá se History_depth 1027 >= ||<= 956

5. Após algum tempo, a janela de entropia diminuirá para um tamanho pequeno, como na captura de tela.

update3: Posso sugerir que o problema com o sell-only está relacionado a um período de tempo muito baixo usado nos testes (M1). Isso gera valores de entropia muito grandes que estão fora dos limites? O teste em M15>= cria ordens de compra e venda.

update4: Posso sugerir que o problema do tamanho da janela de entropia está relacionado ao tamanho inicial da janela do gráfico. Se ele for dimensionado em tela cheia, a janela será exibida corretamente.

update5: Depois de tentar modificar os números mágicos, todos os gráficos são removidos na próxima barra. Tentei reiniciar o terminal e usar novos gráficos. Não tenho certeza do que mais posso tentar, pois não há erros no registro. Não consigo fazer mais testes?

Olá, acho que há alguns problemas com a normalização da entropia, por isso ela muda seus valores ao longo do tempo. Talvez um pouco mais tarde eu conserte isso e inclua outro indicador sobre outros problemas - acho que não estou entendendo completamente. Talvez haja alguns erros no registro do terminal?

 

Olá, Maxim,

Tentei compilar o fractional_entropy_trader, mas apareceu a seguinte mensagem de erro:

'virtual_optimizer' - função já definida e com tipo diferente Auto_optimizer.mqh linha 47 col 18

Você pode me informar como posso corrigir esse problema?

Muito obrigado

Daniel

 

Muito complicado de entender,

Que conhecimentos básicos são necessários para lidar com esse tópico?

Isso tudo tem alguma coisa a ver com cálculo integral?

 
Alexander:

Muito complicado de entender,

Que conhecimentos básicos você precisa para lidar com esse tópico?

Isso tudo tem alguma coisa a ver com cálculo integral?

  1. Há apenas soma e multiplicação!
  2. Em vez de matemática, tente apenas entender o fluxo do programa.
  3. A entropia é simplesmente uma medida de desordem na física - aqui: alta entropia = muitas flutuações de preço.
 
kttongsg:

Oi Maxim,

Tentei compilar o fractional_entropy_trader, mas apareceu a seguinte mensagem de erro:

'virtual_optimizer' - função já definida e com tipo diferente Auto_optimizer.mqh linha 47 col 18

Você pode me informar como posso corrigir esse problema?

Muito obrigado

Daniel

Olá, acabei de ler o artigo e estou prestes a compilar, mas quero lhe dar uma ajuda rápida: Localize as duas definições de função e renomeie a que está em conflito, isso deve ser suficiente para você compilar.

 

Boa tarde,

Gostaria de voltar ao tópico

Prado Aprendizado de máquina: algoritmos para negócios

Listagem 5.4. Encontrando o valor mínimo de d que passa com sucesso no teste estatístico ADF

def plotMinFFD():
from statsmodels.tsa.stattools import adfuller
path,instName='./','ES1_Index_Method12'
out=pd.DataFrame(columns=['adfStat','pVal','lags','nObs','95%
conf','corr'])
df0=pd.read_csv(path+instName+'.csv',index_col=0,parse_dates=True)
for d in np.linspace(0,1,11):
df1=np.log(df0[['Close']]).resample('1 D').last() # понизить до
# суточных наблюдений
df2=fracDiff_FFD(df1,d,thres=.01)
corr=np.corrcoef(df1.loc[df2.index,'Close'],df2['Close'])[0,1]
df2=adfuller(df2['Close'],maxlag=1,regression='c',autolag=None)
out.loc[d]=list(df2[:4])+[df2[4]['5%']]+[corr] # с критическим
# значением
out.to_csv(path+instName+'_testMinFFD.csv')
out[['adfStat','corr']].plot(secondary_y='adfStat')
mpl.axhline(out['95% conf'].mean(),linewidth=1,color=
'r',linestyle='dotted')
mpl.savefig(path+instName+'_testMinFFD.png')
return

Código Python do livro - essa função determina o grau mínimo de diferenciação fracionária, quem estiver familiarizado com Python, traduza. Na minha opinião

é exatamente o que está faltando no artigo para a aplicação prática do método (ou enviar uma pessoa preguiçosa para o endereço certo - de preferência com a função).

 
Олег:

Boa tarde,

Gostaria de voltar ao assunto


Listagem 5.4. Encontrar o valor mínimo de d que passa com sucesso no teste estatístico ADF

Código Python do livro - essa função determina o grau mínimo de diferenciação fracionária, quem estiver familiarizado com Python, traduza. Na minha opinião

é exatamente o que está faltando no artigo para a aplicação prática do método (ou enviar uma pessoa preguiçosa para o endereço certo - de preferência com a função).

O teste de Dickey-Fuller pode ser útil para alguns estudos estatísticos, mas no artigo o valor de d é pesquisado no otimizador, além disso, a versão proposta do algoritmo está sendo constantemente retreinada, portanto, na minha opinião, não seria muito útil aqui.

https://www.mql5.com/pt/code/13072
Statistical Functions
Statistical Functions
  • www.mql5.com
Набор статистических функций, которые позволяют рассчитывать некоторые значения, описывающие таймсерии, такие как корреляция между двумя таймсериями, линейная регрессия, стандартное отклонение и т.д. Набор также включает в себя более сложные функции, такие как определенный интеграл. Заголовочный файл "Statistics.mqh" содержит следующие функции...
 
Maxim Dmitrievsky:

O teste Dickey - Fuller pode ser útil para alguns estudos estatísticos, mas, no artigo, o valor de d é pesquisado no otimizador, e a versão proposta do algoritmo está sendo constantemente retreinada, portanto, na minha opinião, ele não seria muito útil aqui

Eu queria usar a determinação automática de d no estágio de treinamento com o processamento automático subsequente dos dados da amostra de treinamento e dos dados reais de negociação para vários algoritmos subsequentes (se estivermos falando de métodos de aprendizado de máquina - bem, não estamos, quero dizer...).
 
Олег:
Eu queria usar a detecção automática de d na fase de treinamento, seguida pelo processamento automático dos dados de amostra de treinamento e dos dados reais de negociação para vários algoritmos subsequentes (se estivermos falando de métodos de aprendizado de máquina - bem, não estamos, quero dizer...).

Dei um link acima, que parece funcionar

 

Existe um teste de Dickey-Fuller no MQL, mas é um teste de estacionariedade de uma série. Há um exemplo de pré-processamento pelo método Box-Cox no Hubre, para o qual o código de determinação automática do parâmetro lambda - que tem um valor semelhante ao d discutido - foi fornecido em um artigo antigo no site.

O método Box-Cox no forex nem sempre leva à estacionariedade da série (quase sempre não até o fim) e é necessário um processamento adicional. É como uma tentativa de substituir o método BC por diferenciação fracionária (com determinação automática do melhor valor de d) que minha pergunta deve ser analisada.

Tenho total respeito por você e pelo artigo que escreveu, mas minha pergunta é realmente desnecessária dentro da estrutura do artigo, já que é um plano para o futuro....