Discusión sobre el artículo "Metamodelos en el aprendizaje automático y el trading: Timing original de las órdenes comerciales" - página 11

 
Maxim Dmitrievsky #:
Probablemente quería decir que los atributos y las etiquetas se construyen a través de funciones, por lo que de forma automática.

Probablemente.

Maxim Dmitrievsky #:
Cuando se aplica sobre nuevos datos, se utiliza el modelo ya entrenado, no es necesario borrar nada.

Y al inicializar el inicio del entrenamiento, ¿por qué borrarlo? No me aferro a las palabras, simplemente no entiendo - marcamos una vez al principio, y luego marcamos de nuevo inmediatamente..... No entiendo este punto.

Maxim Dmitrievsky #:
Si quieres lo mismo - haz que la duración mínima y máxima del comercio sea la misma, min=max
Si supiéramos cómo hacerlo bien, pero no sabemos cómo hacerlo bien....

Usted puede sustituir cualquier función de autopartición, esta es la flexibilidad del enfoque.

Nah, yo sólo quiero probar mi muestreo, y para ello tengo que entender lo que hay que quitar allí.

[Eliminado]  
Aleksey Vyazmikin #:

Probablemente.

Y al inicializar el inicio del entrenamiento, ¿por qué borrarlo? No me aferro a las palabras, simplemente no entiendo - hicimos marcado una vez al principio, y luego hacemos marcado de nuevo a la derecha de distancia.... No entiendo este punto.

No, sólo quiero probar mi muestreo, y para ello necesito entender qué hay que quitar ahí.

Puedes saltarte ese punto y usar tu muestreo, sí. He experimentado con distintas opciones. El reparto se hizo para refinar las etiquetas sobre comercio/no comercio.
[Eliminado]  
H.y. si hay interés, puedo lanzar otras variantes de realizaciones más "claras" y sencillas. Porque ésta es un poco difícil de entender. Hay muchas suposiciones aquí, te puedes confundir.

Incluyendo variantes con la conversión a ONNX, si hay tal movimiento.... Porque entonces usted puede reemplazar toda esta construcción con una red neuronal con arquitectura personalizada interesante y fácilmente transferirlo a la terminal.
 
Maxim Dmitrievsky #:
H.y. si hay interés, puedo lanzar otras variantes de realizaciones más "claras" y sencillas. Porque ésta es un poco difícil de entender. Aquí hay muchas suposiciones, te puedes confundir.

Incluyendo variantes con la conversión a ONNX, si hay tal movimiento.... Porque entonces usted puede reemplazar toda esta construcción con una red neuronal con arquitectura personalizada interesante y fácilmente transferirlo a la terminal.
Maxim, por favor publicar, tan pronto como tenga tiempo, una variante con la conversión a ONNX. Tengo todos estos modelos están drenando, incluso en traine, no entiendo cuál es el problema(
 
Maxim Dmitrievsky #:
H.y. si hay interés, puedo lanzar otras variantes de realizaciones más "claras" y sencillas. Porque esta es un poco difícil de entender. Hay muchas suposiciones aquí, te puedes confundir.

Incluyendo variantes con conversión a ONNX, si existe tal movimiento.... Porque entonces usted puede reemplazar toda esta construcción con una red neuronal con interesante arquitectura personalizada y fácilmente transferirlo a la terminal.

Estoy interesado en cualquier ejemplo de código con poca descripción, porque no entiendo muy bien el código python todavía.

[Eliminado]  
Aleksey Vyazmikin #:

Me interesa cualquier ejemplo de código con poca descripción, porque aún no entiendo muy bien el código python.

Python es muy simple. Literalmente un par de libros "Python for Complex Problems" - cubre el uso de paquetes básicos como numpy, pandas, sklearn. Y Mark Lutz - Aprendiendo Python, Volumen 1. El 2do es sobre clases, no necesitas mucho.
 
Maxim Dmitrievsky #:
Python es muy sencillo. Literalmente un par de libros "Python for Complex Problems" - cubre el uso de paquetes básicos como numpy, pandas, sklearn. Y Mark Lutz - Learning Python, Volume 1. El 2do es sobre clases, no necesitas mucho.

Gracias por la recomendación. Python puede ser fácil, pero mi memoria se ha vuelto mala - por lo que es difícil aprender cosas nuevas.

¿La columna "cerrar" después de crear una muestra con dos objetivos involucrados en otro lugar, o se puede llenar con ceros?

 

En general, tengo datos en este formato en un archivo csv

  • "Columnas con predictores "+ "Columna con una fecha de calendario en este formato 2010.01.04 07:24:00"+
  • " Columna Target_P - contiene información sobre la dirección de la operación"+
  • " Columna Target_100 - contiene el objet ivo "+ "Columna Target_100- conti ene el objetivo "+ "Columna Target_100 - contiene el objetivo
  • " Columna Target_100_Buy - contiene el resultado financiero al comprar"+
  • " Columna Target_100_Sell - contiene el resultado financiero al vender"+

En consecuencia, hago que se vean como se describe en el artículo a través de este 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 así

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]

A continuación, comento las funciones en su ejercicio

# 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)

Obtengo un error

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'
>>> 

Quiero probarlo, pero no puedo :(

[Eliminado]  
Aleksey Vyazmikin #:
TypeError: '>=' no soportado entre instancias de 'int' y 'datetime.datetime'

Lo primero que he notado es que tienes los índices del dataframe mal, debería ser datetime, es decir, la columna time debería estar indexada

 
Maxim Dmitrievsky #:

Lo primero que he notado es que tienes los índices del dataframe mal, debería ser datetime, es decir, la columna time debería estar indexada

¿Y cómo se puede comparar un valor idex (0,1,2) con una fecha de calendario?