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

 
Mihail Marchukajtes: Esta é a razão pela qual a ZZ não é o melhor alvo

Eu tenho usado ZZ há cerca de 15 anos. Eu conheço todos os inconvenientes desta ferramenta. E eu sei muitas outras coisas, foi por isso que contei acima sobre a minha ideia.

---

O sistema deve encontrar pontos de compra/venda por si só. Não concorre com os players do mercado, mas com o próprio mercado (desculpe por alguma tautologia).

 
Eugeni Neumoin:

Eu pratico com a ZZ há cerca de 15 anos. Eu conheço todas as falhas desta ferramenta. E eu sei muito mais, por isso é que te falei da minha ideia acima.

---

O sistema deve identificar os pontos de compra/venda por si só. Não compete com os jogadores do mercado, mas com o próprio mercado (desculpe por alguma tautologia).

Podes dizer-me mais sobre isso? Como o implementou? Quando há uma luta entre compradores e vendedores, que resulta em uma cotação, eu entendo, mas se o adversário no jogo é o próprio mercado, eu não entendo. Se falamos de Alfa, ela aprendeu a jogar sozinha, de acordo com certas regras. Você não pode ditar as regras para o mercado, então ele não está competindo com o mercado, mas tentando ser como ele. Ela estuda o mercado, mas não compete com ele. Se o mercado é um jogador ideal e nós estamos a tentar ser melhores do que ele. Bem, sim. Eu concordo, mas então o exemplo alfa é irrelevante. Porque o alfa era autodidacta. Auto-treinado consigo mesmo. E, no entanto, descreva em poucas palavras como você fez dele exatamente um momento competitivo entre o mercado e ns em que o mercado é, a priori, um vencedor. A ZZ não tem valores finais a priori, por isso é inútil.
 

um artigo sobre Habra com o título "AI for people: simple words about technology"https://habr.com/ru/company/jetinfosystems/blog/471626/

Eu folheei o artigo - tudo se resumiu ao Machine Learning, .... e lembrei de uma velha anedota:

Um aluno está a fazer um exame de zoologia. Ele só sabe de pulgas. No exame, ele tem uma pergunta sobre cães.

O aluno começa:

- Os cães são mamíferos, cobertos de pêlo. Há pulgas no pêlo deles...então é tudo sobre pulgas....

Pregador:

- Muito bem, jovem, fala-nos dos gatos.

Estudante:

- Os gatos são mamíferos cobertos de cabelo. Eles têm pulgas no pêlo...mais sobre as pulgas....

Estudante:

- Vamos falar de peixe.

Estudante:

- Os peixes não são mamíferos. Eles não têm pêlo. Estão cobertas de escamas, mas se estivessem cobertas de pêlo haveria pulgas nelas....

 
 

O final do treino dos retornados


 
Eugeni Neumoin:

Não utilize ZZ ou quaisquer indicadores adicionais. Apenas OHLC de vários tf's (tf's devem diferir por um fator de 4-6. Por exemplo, 1-5-30-H3... até um mês de tempo. Selecione você mesmo) e, talvez, mais carrapatos para aviso prévio.

Pelos preços de máximos e mínimos separadamente estruturas convolucionais. Por OHLC - a estrutura de recorrência. E assim por diante, todos os preços usados. Os sinais de tudo isto são ainda alimentados, por exemplo, para a rede de malha completa.

Além disso, insira os ticks passados pela rede de recorrência para uma das entradas da rede de malha completa.

Otimizar a velocidade de aumento do depósito. Como resultado, a malha deve decidir por si só sobre o volume do lote e selecionar os pontos de abertura e fechamento. É aproximadamente assim.

Por que você está se apressando com palavras? Basta desenhar a estrutura da sua rede proposta. E vais ter muitas perguntas.

Mas é só ar quente. A ideia está certa, mas a direcção está errada.

 
Maxim Dmitrievsky:

O final do treino dos retornados


E pode prender um provador caseiro, será que evitou um erro muito comum? Ou em uma mensagem privada.

Boa sorte.

 
Vladimir Perervenko:

E pode prender um provador caseiro, será que evitou um erro muito comum? Ou em uma mensagem privada.

Boa sorte.

o caderno de Júpiter vai funcionar?

Arquivos anexados:
 
Maxim Dmitrievsky:

O portátil Júpiter vai funcionar?

(Claro. Obrigado. Vou dar uma vista de olhos e apresentar um relatório.

 
Maxim Dmitrievsky:

O portátil Júpiter está bem? Já fiz o download de tudo, não é segredo, pois o código está todo no vídeo.

É muito trabalho desmontar o código de outra pessoa. Veja apenas a função custom_tester() e apenas a parte destacada.

def custom_tester(symbol, timeframe, frompos, pricesnumber, lag, num, markup = 0.0):   
    symbols_list = [symbol]
    pr_test = pd.DataFrame()
    for i in symbols_list:
        rates = MT5CopyRatesFromPos(i, timeframe, frompos, pricesnumber)
        pr_test[i] = [y.close for y in rates]

    #creating price returns with lag
    returns = np.array(np.log(1 + pr_test.pct_change(lag)))
    returns = returns[lag:]
    comp_returns = np.array(returns)
    #                   
    for i in range(num-1):
        comp_returns = np.c_[comp_returns, returns]
    #putting returns into dataframe    
    comp_returns = pd.DataFrame(comp_returns)
    #shifting columns to use it as delayed features
    for i in range(num):
        comp_returns[i] = comp_returns.shift(i)
    #deleting first 'num' rows with NaN's
    comp_returns_shifted = pd.DataFrame(comp_returns[num:]).reset_index(drop=True)
    
    testpr = np.array(pr_test[lag+num:])
    X = pd.DataFrame(comp_returns_shifted)
    p = model.predict_proba(X) # непрерывное предсказание классификатора (типа вероятность)
    
    result = np.array([0])
    
    lastdeal = int(2)
    lastpr = float(0.0)

    for i in range (X[0].size):
# При первом входе
        if lastdeal == 2:
# переводим непрерывное предсказание в номинальные значенияю Порог 0.5
            if p[i][0] > 0.5:
                lastdeal = 1
            else:
                lastdeal = 0
            lastpr = testpr[i] # сохраняем значение Close 
            continue
# при следующей итерации
        if lastdeal == 1 and p[i][0] > 0.5:
            lastdeal = 0 # это я не понял зачем
# При вычислении результата ошибка
            result = np.append(result, result[-1] - markup + lastpr - testpr[i])
            lastpr = testpr[i]
            continue
# при последующей итерации
        if lastdeal == 0 and p[i][0] < 0.5:
            lastdeal = 1 # здесь не должно быть -1?
# и здесь ошибка
            result = np.append(result, result[-1] - markup + testpr[i] - lastpr)
            lastpr = testpr[i]
            continue
            
    plt.figure(figsize=(20,5))
    plt.plot(result)
    
    from sklearn.linear_model import LinearRegression
    y = result.reshape(-1,1)
    X = np.arange(result.size).reshape(-1,1)
    lr = LinearRegression()
    lr.fit(X,y)
#     print(lr.score(X,y))
    return lr.score(X,y)

Qual é o erro no cálculo do resultado? Você calcula o resultado para cada iteração adicionando o resultado +=testpr[i] - lastpr ao valor anterior. É a diferença entre o fecho do bar actual e o anterior. Idealmente, seria melhor usar Fechar - Abrir, mas não importa. O importante é que tendo recebido um sinal no fechamento da barra de corrente, você o considerará como um dif(s) sinal(s) da mesma barra. Isto é incorrecto. O prémio do sinal da barra de corrente é dif(Fechar) da barraseguinte. O sinal deve ser movido para a direita por uma barra para calcular correctamente o resultado. p = model.predict_proba(X) à direita por uma barra. Vou mostrar mais cálculos sobre R, é mais fácil para mim.

ifelse(p >= 0.5, 1, -1)%>% lag()%>% na.omit() -> sig
cumsum(sig * {diff(testpr) %>% tail(lenght(sig))})-> result

Na primeira linha, converter a previsão para nominal (1,-1), deslocá-la para a direita por uma barra, remover NA e obter um vetor de sinais. A segunda linha resume cumulativamente o produto do vetor de sinais e do vetor dif(fechado), tendo-o previamente alinhado com o vetor de sinais em comprimento. Isso vai dar-nos o resultado correcto.

Boa sorte.

Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
  • www.mql5.com
Дополнение до единицы значения переменной. Значение выражения содержит 1 во всех разрядах, в которых значение переменной содержит 0, и 0 во всех разрядах, в которых значения переменной содержит 1. Сдвиг вправо Двоичное представление x сдвигается вправо на y разрядов. Если сдвигаемое значение имеет беззнаковый тип, то осуществляется логический...
Razão: