Diskussion zum Artikel "Metamodelle für maschinelles Lernen und Handel: Ursprünglicher Zeitpunkt der Handelsaufträge" - Seite 11

 
Maxim Dmitrievsky #:
Da ist wahrscheinlich gemeint, dass die Attribute und Beschriftungen durch Funktionen, also automatisch, aufgebaut werden.

Wahrscheinlich.

Maxim Dmitrievsky #:
Wenn es auf neue Daten angewendet wird, wird das bereits trainierte Modell verwendet, man muss nichts löschen.

Und warum sollte man es bei der Initialisierung zu Beginn des Trainings löschen? Ich klammere mich nicht an Worte, ich verstehe es nur nicht - wir haben am Anfang einmal markiert, und dann markieren wir sofort wieder..... Ich verstehe diesen Punkt nicht.

Maxim Dmitrievsky #:
Wenn Sie dasselbe wollen - machen Sie die minimale und maximale Handelsdauer gleich, min=max
Wenn wir wüssten, wie man es richtig macht, aber wir wissen nicht, wie man es richtig macht....

Sie können jede beliebige Autopartitionierungsfunktion ersetzen, das macht die Flexibilität des Ansatzes aus.

Nein, ich möchte nur meine Stichprobe ausprobieren, und dazu muss ich verstehen, was dort entfernt werden muss.

[Gelöscht]  
Aleksey Vyazmikin #:

Wahrscheinlich.

Und warum sollte man sie bei der Initialisierung des Ausbildungsbeginns löschen? Ich klammere mich nicht an Worte, ich verstehe nur nicht - wir haben am Anfang einmal markiert, und dann markieren wir gleich wieder.... Diesen Punkt verstehe ich nicht.

Nee, ich will nur meine Stichprobe machen, und dazu muss ich verstehen, was dort entfernt werden muss.

Sie können diesen Punkt überspringen und Ihr Sampling verwenden, ja. Ich habe mit verschiedenen Optionen experimentiert. Die Neuaufteilung wurde vorgenommen, um die Kennzeichnung von Handel/Nichthandel zu verfeinern.
[Gelöscht]  
Falls Interesse besteht, kann ich weitere Varianten mit "klareren" und einfacheren Realisierungen einführen. Denn diese hier ist etwas schwer zu verstehen. Es gibt hier eine Menge Annahmen, die einen verwirren können.

Inklusive Varianten mit Umstellung auf ONNX, falls es so ein Werk gibt.... Denn dann kann man diese ganze Konstruktion durch ein neuronales Netz mit interessanter benutzerdefinierter Architektur ersetzen und es einfach auf das Terminal übertragen.
 
Maxim Dmitrievsky #:
Falls Interesse besteht, kann ich weitere Varianten mit "klareren" und einfacheren Realisierungen einführen. Denn diese hier ist etwas schwer zu verstehen. Es gibt hier eine Menge Annahmen, die einen verwirren können.

Inklusive Varianten mit Umstellung auf ONNX, falls es so ein Werk gibt.... Denn dann kann man diese ganze Konstruktion durch ein neuronales Netz mit interessanter benutzerdefinierter Architektur ersetzen und es einfach auf das Terminal übertragen.
Maxim, bitte veröffentlichen Sie, sobald Sie Zeit haben, eine Variante mit Umwandlung in ONNX. Ich habe alle solche Modelle sind abtropfen lassen, auch auf Traine, ich verstehe nicht, was ist das Problem(
 
Maxim Dmitrievsky #:
Falls Interesse besteht, kann ich weitere Varianten mit "klareren" und einfacheren Realisierungen einführen. Denn diese hier ist etwas schwer zu verstehen. Es gibt hier eine Menge Annahmen, die einen verwirren können.

Einschließlich Varianten mit Umwandlung in ONNX, wenn es eine solche Bewegung gibt.... Denn dann kann man diese ganze Konstruktion durch ein neuronales Netz mit interessanter benutzerdefinierter Architektur ersetzen und es einfach auf das Terminal übertragen.

Ich bin an jedem Codebeispiel mit kleiner Beschreibung interessiert, da ich Python-Code noch nicht sehr gut verstehe.

[Gelöscht]  
Aleksey Vyazmikin #:

Ich bin an allen Codebeispielen mit wenig Beschreibung interessiert, da ich Python-Code noch nicht sehr gut verstehe.

Python ist sehr einfach. Buchstäblich ein paar Bücher "Python for Complex Problems" - es deckt die Verwendung von grundlegenden Paketen wie numpy, pandas, sklearn. Und Mark Lutz - Python lernen, Band 1. Das 2. Buch handelt von Klassen, man braucht nicht viel.
 
Maxim Dmitrievsky #:
Python ist sehr einfach. Buchstäblich ein paar "Python for Complex Problems" Bücher - es deckt die Verwendung von grundlegenden Paketen wie numpy, pandas, sklearn. Und Mark Lutz - Learning Python, Volume 1. Das 2. Buch handelt von Klassen, da braucht man nicht viel.

Danke für die Empfehlung. Python mag einfach sein, aber mein Gedächtnis ist schlecht geworden - daher ist es schwer, neue Dinge zu lernen.

Ist die Spalte "close" nach dem Erstellen einer Probe mit zwei Zielen irgendwo anders involviert, oder kann sie mit Nullen gefüllt werden?

 

Im Allgemeinen habe ich Daten in diesem Format in einer csv-Datei

  • "Spalten mit Prädiktoren "+ "Spalte mit einem Kalenderdatum in diesem Format 2010.01.04 07:24:00"+
  • " Spalte Target_P - enthält Informationen über die Richtung des Handels"+
  • " Spalte Target_100 - en thält das Ziel "+ "Spalte Tar get_100 - e nthält das Ziel "+ "Spalte Target_100 - enthält das Ziel
  • " Spalte Ziel_100_kaufen - enthält das finanzielle Ergebnis beim Kauf"+
  • " Spalte Target_100_Sell - enthält das finanzielle Ergebnis des Verkaufs"+

Dementsprechend lasse ich sie durch diesen Code so aussehen, wie im Artikel beschrieben

# Загрузите данные из файлов
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)

Druckt wie folgt

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]

Als nächstes kommentiere ich die Funktionen in Ihrem Jahr

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

Ich erhalte einen Fehler

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

Ich möchte es testen, aber ich kann nicht :(

[Gelöscht]  
Aleksey Vyazmikin #:
TypeError: '>=' nicht unterstützt zwischen Instanzen von 'int' und 'datetime.datetime'

Das erste, was mir aufgefallen ist, ist, dass Sie die falschen Dataframe-Indizes haben, es sollte datetime sein, d.h. die Zeitspalte sollte indiziert werden

 
Maxim Dmitrievsky #:

Das erste, was ich bemerkt habe, ist, dass Sie die falschen Dataframe-Indizes haben, es sollte datetime sein, d.h. die Zeitspalte sollte indiziert werden

Und wie kann ein idex-Wert (0,1,2) mit einem Kalenderdatum verglichen werden?