文章 "机器学习和交易中的元模型:交易订单的原始时序" - 页 11

 
Maxim Dmitrievsky #:
这可能意味着属性和标签是通过函数自动建立的。

大概是这样。

马克西姆-德米特里耶夫斯基(Maxim Dmitrievsky)#:
当应用于新数据时,会使用已经训练好的模型,不需要删除任何东西。

而在初始化开始训练时,为什么要删除呢?我并不拘泥于文字,我只是不明白--我们一开始就做了一次标记,然后我们马上又做了一次标记.....。我不明白这一点。

Maxim Dmitrievsky#:
如果你想要一样--让最小和最大交易持续时间一样,最小=最大
如果我们知道如何正确操作,但我们不知道如何正确操作....

您可以用任何自动分区函数代替,这就是该方法的灵活性。

不,我只是想试试我的取样,要做到这一点,我需要了解那里需要删除什么。

 
Aleksey Vyazmikin #:

也许吧

在初始化训练开始时,为什么要删除它?我不拘泥于文字,我只是不明白--我们一开始做了一次标记,然后马上又做了一次标记....。我不明白这一点。

不,我只是想试试我的采样,要做到这一点,我需要了解那里需要删除什么。

你可以跳过这一点,使用你的取样,是的。我尝试过不同的方案。重新划分是为了完善贸易/非贸易类的标签。
 
如果有兴趣,我可以推出其他更 "清晰"、更简单的变体。因为这个有点难以理解。这里有很多假设,你可能会感到困惑。

包括转换为 ONNX 的变体,如果有这样的运动....。因为这样你就可以用一个具有有趣的自定义架构的神经网络来替代所有这些构造,并轻松地将其转移到终端。
 
Maxim Dmitrievsky #:
如果有兴趣,我可以推出其他更 "清晰"、更简单的变体。因为这个有点难以理解。这里有很多假设,你可能会感到困惑。

包括转换为 ONNX 的变体,如果有这样的运动....。因为这样你就可以用一个有趣的自定义架构的神经网络取代所有这些构造,并轻松地将其转移到终端。
马克西姆,一旦你有时间,请尽快发布转换为 ONNX 的变体。我的所有此类模型都在耗电,甚至在 traine 上也是如此,我不明白这是怎么回事(......)。
 
Maxim Dmitrievsky #:
如果有兴趣,我可以推出其他更 "清晰"、更简单的变体。因为这个有点难以理解。

包括转换到 ONNX 的变体,如果有这样的运动的话....。因为这样你就可以用一个具有有趣的自定义架构的神经网络取代所有这些构造,并轻松地将其转移到终端。

我对任何有少量描述的代码示例都感兴趣,因为我还不太了解 python 代码。

 
Aleksey Vyazmikin #:

我对任何描述不多的代码示例都感兴趣,因为我还不太了解 python 代码。

Python 非常简单。我只看过几本书《Python for Complex Problems》--它涵盖了 numpy、pandas、sklearn 等基本软件包的使用。还有 Mark Lutz 的《学习 Python,第 1 卷》。第二本是关于类的,你不需要太多。
 
Maxim Dmitrievsky #:
Python 非常简单。从字面上看,有几本 "Python for Complex Problems"(《Python 解决复杂问题》)的书--它涵盖了 numpy、pandas、sklearn 等基本包的使用。还有 Mark Lutz 的《Learning Python, Volume 1》。第二本是关于类的,不需要太多。

谢谢你的推荐。Python 也许很简单,但我的记忆力已经变差了--所以很难学习新东西。

在创建有两个目标的样本后,"关闭 "列是否涉及到其他地方,或者是否可以用零填充?

 

一般来说,我的 csv 文件中的数据格式如下

  • "带有预测因子的列 "+ "带有日历日期的列,格式为 2010.01.04 07:24:00"+
  • "Target_P 列 - 包含有关交易方向的 信息 "+
  • "列 Target_100 - 包含目标 "+ "列 Target_100 - 包含目标 "+ "列Target_100 - 包含目标
  • " Target_100_Buy- 包含购买时的财务结果"+
  • " Target_100_Sell- 包含卖出时的财务结果"+"

因此,我通过以下代码使它们看起来与文章中描述的一样

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

打印如下

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]

接下来,我对您当年的函数进行注释

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

我得到了一个错误

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

我想测试一下,但做不到 :(

 
Aleksey Vyazmikin #:
类型错误:"int "和 "datetime.datetime "实例之间不支持">="。

我注意到的第一件事是你的数据帧索引不对,应该是 datetime,即时间列应该被索引

 
Maxim Dmitrievsky #:

我注意到的第一件事是你的数据帧索引不对,应该是 datetime,即时间列应该有索引

idex值(0,1,2)如何与日历日期进行比较?