Discussão do artigo "Metamodelos em aprendizado de máquina e negociação: Tempo original das ordens de negociação" - página 11

 
Maxim Dmitrievsky #:
Provavelmente, isso significa que os atributos e rótulos são criados por meio de funções, portanto, automaticamente.

Provavelmente.

Maxim Dmitrievsky #:
Quando aplicado a novos dados, o modelo já treinado é usado, você não precisa excluir nada.

E ao inicializar o início do treinamento, por que excluí-lo? Não me apego às palavras, apenas não entendo - fizemos a marcação uma vez no início e, em seguida, marcamos novamente imediatamente..... Não entendo esse ponto.

Maxim Dmitrievsky #:
Se você quiser o mesmo - faça com que a duração mínima e máxima da negociação seja a mesma, min=max
Se soubéssemos como fazer isso corretamente, mas não sabemos como fazer isso corretamente....

Você pode substituir qualquer função de autopartição, essa é a flexibilidade da abordagem.

Não, eu só quero testar minha amostragem e, para isso, preciso entender o que precisa ser removido.

[Excluído]  
Aleksey Vyazmikin #:

Provavelmente.

E ao inicializar o início do treinamento, por que excluí-lo? Não me apego às palavras, apenas não entendo - fizemos a marcação uma vez no início e, em seguida, fazemos a marcação novamente logo depois.... Não entendo esse ponto.

Não, só quero tentar minha amostragem e, para isso, preciso entender o que precisa ser removido ali.

Você pode pular esse ponto e usar sua amostragem, sim. Fiz experimentos com diferentes opções. O reparticionamento foi feito para refinar os rótulos do tipo comercial/não comercial.
[Excluído]  
Se houver interesse, posso lançar outras variantes de realizações mais "claras" e simples. Porque esta é um pouco difícil de entender. Há muitas suposições aqui e você pode ficar confuso.

Incluindo variantes com conversão para ONNX, se houver tal movimento.... Porque assim você pode substituir toda essa construção por uma rede neural com uma arquitetura personalizada interessante e transferi-la facilmente para o terminal.
 
Maxim Dmitrievsky #:
Se houver interesse, posso lançar outras variantes de realizações mais "claras" e simples. Porque esta é um pouco difícil de entender. Há muitas suposições aqui e você pode ficar confuso.

Incluindo variantes com conversão para ONNX, se houver tal movimento.... Porque assim você pode substituir toda essa construção por uma rede neural com uma arquitetura personalizada interessante e transferi-la facilmente para o terminal.
Maxim, por favor, publique, assim que tiver tempo, uma variante com conversão para ONNX. Todos os modelos que tenho estão se esgotando, mesmo no terminal, e não entendo qual é o problema(.
 
Maxim Dmitrievsky #:
Se houver interesse, posso lançar outras variantes de realizações mais "claras" e simples. Porque esta é um pouco difícil de entender. Há muitas suposições aqui, você pode ficar confuso.

Incluindo variantes com conversão para ONNX, se houver tal movimento.... Porque assim você pode substituir toda essa construção por uma rede neural com arquitetura personalizada interessante e transferi-la facilmente para o terminal.

Estou interessado em qualquer exemplo de código com pouca descrição, pois ainda não entendo muito bem o código python.

[Excluído]  
Aleksey Vyazmikin #:

Estou interessado em qualquer exemplo de código com pouca descrição, pois ainda não entendo muito bem o código python.

Python é muito simples. Literalmente, alguns livros "Python for Complex Problems" (Python para Problemas Complexos) - ele aborda o uso de pacotes básicos como numpy, pandas, sklearn. E Mark Lutz - Learning Python, Volume 1. O segundo é sobre classes, você não precisa de muito.
 
Maxim Dmitrievsky #:
Python é muito simples. Literalmente, alguns livros "Python for Complex Problems" (Python para problemas complexos) abordam o uso de pacotes básicos como numpy, pandas e sklearn. E Mark Lutz - Learning Python, Volume 1. O segundo é sobre classes, não precisa de muito.

Obrigado pela recomendação. Python pode ser fácil, mas minha memória ficou ruim, então é difícil aprender coisas novas.

A coluna "close" (fechar) depois de criar uma amostra com dois alvos envolvidos em outro lugar, ou ela pode ser preenchida com zeros?

 

Em geral, tenho dados neste formato em um arquivo csv

  • "Colunas com preditores "+ "Coluna com uma data de calendário neste formato 2010.01.04 07:24:00"+
  • " Coluna Target_P - contém informações sobre a direção da negociação"+
  • " Coluna Target_100 - contém o alvo "+ "Coluna Target_100 - contém o alvo "+ "Coluna Target_100 - contém o alvo
  • " Coluna Target_100_Buy - contém o resultado financeiro ao comprar"+
  • " Coluna Target_100_Sell - contém o resultado financeiro da venda"+

Dessa forma, eu os faço parecer como descrito no artigo por meio deste código

# Загрузите данные из файлов
Load_train_data = pd.read_csv('E:\\FX\\MT5_CB\\MQL5\\Files\\Catboost_Tester_M02_104_SMO\\Setup\\train.csv',sep=';')

# Сохранили предикторы
train_data = Load_train_data.loc[:, :'iVolumes_B0_S15_D1']

# Сохранили значения целевой
train_labels = Load_train_data['Target_100']

# Преобразование столбца 'Time' в формат datetime
Load_train_data['Time'] = pd.to_datetime(Load_train_data['Time'], format='%Y.%m.%d %H:%M:%S')

# Преобразование обратно в строку с нужным форматом
#Load_train_data['Time'] = Load_train_data['Time'].dt.strftime('%Y-%m-%d %H:%M:%S')

# Сохранили значение столбца
train_taime  = Load_train_data['Time']

# Вывод результата
print(train_taime)

# Создали новый DataFrame объединением столбцов
combined_data = pd.concat([train_taime, train_data, train_labels], axis=1)


# Добавили новый столбец "close" после "train_taime" со значениями "1.1"
combined_data.insert(combined_data.columns.get_loc('Time') + 1, 'close', 1.1)

# Переименовали столбец "Target_100" в "labels"
combined_data.rename(columns={'Target_100': 'labels'}, inplace=True)

# Добавили столбец с данными из train_labels
combined_data['meta_labels'] = train_labels

pr = combined_data

# Вывод результата
print(combined_data)

Imprime assim

0        2010-01-04 07:24:00
1        2010-01-04 21:02:00
2        2010-01-04 21:14:00
3        2010-01-04 21:56:00
4        2010-01-04 23:08:00
                ...         
28193    2018-03-12 01:18:00
28194    2018-03-12 02:52:00
28195    2018-03-12 03:08:00
28196    2018-03-12 03:38:00
28197    2018-03-12 08:32:00
Name: Time, Length: 28198, dtype: object
                      Time  close  ...  labels  meta_labels
0      2010-01-04 07:24:00    1.1  ...       0            0
1      2010-01-04 21:02:00    1.1  ...       0            0
2      2010-01-04 21:14:00    1.1  ...       0            0
3      2010-01-04 21:56:00    1.1  ...       0            0
4      2010-01-04 23:08:00    1.1  ...       0            0
...                    ...    ...  ...     ...          ...
28193  2018-03-12 01:18:00    1.1  ...       0            0
28194  2018-03-12 02:52:00    1.1  ...       0            0
28195  2018-03-12 03:08:00    1.1  ...       0            0
28196  2018-03-12 03:38:00    1.1  ...       1            1
28197  2018-03-12 08:32:00    1.1  ...       0            0

[28198 rows x 2412 columns]

Em seguida, comento as funções em seu ano

# make dataset
#pr = get_prices()
#pr = labelling_relabeling(pr, relabeling=False)
#a, b = tester(pr, MARKUP, use_meta=False, plot=False)
#pr['meta_labels'] = b
#pr = pr.dropna()
#pr = labelling_relabeling(pr, relabeling=True)

Recebo um erro

Traceback (most recent call last):
  File "F:/FX/Python/meta_modeling_Viborka.py", line 386, in <module>
    res.append(brute_force(pr[pr.columns[1:]], bad_samples_fraction=0.5))
  File "F:/FX/Python/meta_modeling_Viborka.py", line 128, in brute_force
    X = X[X.index >= START_DATE]
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\ops\common.py", line 81, in new_method
    return method(self, other)
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\arraylike.py", line 60, in __ge__
    return self._cmp_method(other, operator.ge)
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\indexes\range.py", line 964, in _cmp_method
    return super()._cmp_method(other, op)
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\indexes\base.py", line 6783, in _cmp_method
    result = ops.comparison_op(self._values, other, op)
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\ops\array_ops.py", line 296, in comparison_op
    res_values = _na_arithmetic_op(lvalues, rvalues, op, is_cmp=True)
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\ops\array_ops.py", line 171, in _na_arithmetic_op
    result = func(left, right)
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\computation\expressions.py", line 239, in evaluate
    return _evaluate(op, op_str, a, b)  # type: ignore[misc]
  File "C:\Program Files\Python38\lib\site-packages\pandas\core\computation\expressions.py", line 70, in _evaluate_standard
    return op(a, b)
TypeError: '>=' not supported between instances of 'int' and 'datetime.datetime'
>>> 

Quero testá-lo, mas não consigo :(

[Excluído]  
Aleksey Vyazmikin #:
TypeError: '>=' not supported between instances of 'int' and 'datetime.datetime'

A primeira coisa que notei é que você tem os índices de dataframe errados, deveria ser datetime, ou seja, a coluna de tempo deveria ser indexada

 
Maxim Dmitrievsky #:

A primeira coisa que notei é que você está com os índices de dataframe errados; deveria ser datetime, ou seja, a coluna de tempo deveria ser indexada

E como um valor idex (0,1,2) pode ser comparado a uma data de calendário?