文章 "梯度提升(CatBoost)在交易系统开发中的应用. 初级的方法" - 页 8

[删除]  
谢谢。
 
Yu Zhang #:
我用了,要么是我自己做的,要么是我用了你提供的。 以下错误。



我认为你在 python 和 mql 中使用了不同数量的功能,可能出错了

 

马克西姆,请帮帮我。我得到的是这样的值,我不知道哪里出了问题。代码是你写的。我不太擅长 Python。谢谢

LOOK_BACK =25

关闭 0 1 1 2 3 4 ... 19 20 21 22 23 24

时间 ...

2022-02-07 00:00:00 1.14566 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 。

2022-02-07 01:00:00 1.14542 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 02:00:00 1.14529 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07-07 03:00:00 1.14414 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 04:00:00 1.14278 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07-07 05:00:00 1.14327 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 06:00:00 1.14385 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 07:00:00 1.14302 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 08:00:00 1.14314 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 09:00:00 1.14325 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 10:00:00 1.14340 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 11:00:00 1.14231 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 12:00:00 1.14212 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 13:00:00 1.14432 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 14:00:00 1.14551 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 15:00:00 1.14400 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 16:00:00 1.14383 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 17:00:00 1.14435 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 18:00:00 1.14341 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 19:00:00 1.14187 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 20:00:00 1.14267 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 21:00:00 1.14432 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07-07 22:00:00 1.14385 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-07 23:00:00 1.14420 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-08 00:00:00 1.14389 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NAN

2022-02-08 01:00:00 1.14405 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NAN

2022-02-08 02:00:00 1.14426 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NAN

2022-02-08 03:00:00 1.14354 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N

2022-02-08 04:00:00 1.14303 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-08 05:00:00 1.14303 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN ...

2022-02-08 06:00:00 1.14240 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

 
Roman Poshtar #:

马克西姆,请帮帮我。我得到的是这样的值,我不知道哪里出了问题。代码是你写的。我不太擅长 Python。谢谢

LOOK_BACK =25

关闭 0 1 1 2 3 4 ... 19 20 21 22 23 24

时间 ...

2022-02-07 00:00:00 1.14566 NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 01:00:00 1.14542 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 02:00:00 1.14529 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07-07 03:00:00 1.14414 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 04:00:00 1.14278 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07-07 05:00:00 1.14327 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 06:00:00 1.14385 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 07:00:00 1.14302 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 08:00:00 1.14314 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 09:00:00 1.14325 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 10:00:00 1.14340 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 11:00:00 1.14231 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 12:00:00 1.14212 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 13:00:00 1.14432 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 14:00:00 1.14551 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 15:00:00 1.14400 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 16:00:00 1.14383 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 17:00:00 1.14435 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 18:00:00 1.14341 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 19:00:00 1.14187 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 20:00:00 1.14267 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 21:00:00 1.14432 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07-07 22:00:00 1.14385 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-07 23:00:00 1.14420 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-08 00:00:00 1.14389 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-08 01:00:00 1.14405 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-08 02:00:00 1.14426 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-08 03:00:00 1.14354 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-08 04:00:00 1.14303 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-08 05:00:00 1.14303 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2022-02-08 06:00:00 1.14240 NaN NaN NaN NaN NaN NaN NaN NaN ...NaN NaN NaN NaN NaN NaN NaN NaN NaN。

似乎无法通过 api 获取报价。不幸的是,我现在手头没有 Vinde 计算机 :(
 

我看到收盘价似乎还在。看来获取标志的功能被破坏了(可能是在 pandas 更新之后)。

终端日志中没有错误吗?

 
Maxim Dmitrievsky #:

我看到收盘价似乎还在。看来获取标志的功能被破坏了(可能是在熊猫更新之后)。

终端日志中没有错误吗?

试试这个功能(从 MT5 保存的带报价的文件中获取报价)。

def get_prices2(look_back = 15):
    pr = pd.read_csv('files/EURUSD_H1.csv', sep='\s+')
    # set df index as datetime
    prices = pd.DataFrame(columns=['time', 'close'])
    prices['time'] = pr['<DATE>'] + ' ' + pr['<TIME>']
    prices['time'] = pd.to_datetime(prices['time'], format='mixed')
    prices['close'] = pr['<CLOSE>']
    prices.set_index('time', inplace=True)
    prices.index = pd.to_datetime(prices.index, unit='s')
    prices = prices.dropna()

    ratesM = prices.rolling(MA_PERIOD).mean()
    ratesD = prices - ratesM
    for i in range(look_back):
        prices[str(i)] = ratesD.shift(i)
    return prices.dropna()

一切正常

                       close         0         1         2         3         4         5  ...         8         9        10        11        12        13        14
time                                                                                      ...                                                                      
2010-01-05 04:00:00  1.44222  0.000383 -0.000253  0.000365  0.000579  0.001307  0.000595  ...  0.002817  0.003726  0.004814  0.005897  0.008975  0.008813  0.009395
2010-01-05 05:00:00  1.44217  0.000355  0.000383 -0.000253  0.000365  0.000579  0.001307  ...  0.002043  0.002817  0.003726  0.004814  0.005897  0.008975  0.008813
2010-01-05 06:00:00  1.44635  0.004289  0.000355  0.000383 -0.000253  0.000365  0.000579  ...  0.001383  0.002043  0.002817  0.003726  0.004814  0.005897  0.008975
2010-01-05 07:00:00  1.44755  0.005241  0.004289  0.000355  0.000383 -0.000253  0.000365  ...  0.000595  0.001383  0.002043  0.002817  0.003726  0.004814  0.005897
2010-01-05 08:00:00  1.44520  0.002659  0.005241  0.004289  0.000355  0.000383 -0.000253  ...  0.001307  0.000595  0.001383  0.002043  0.002817  0.003726  0.004814
...                      ...       ...       ...       ...       ...       ...       ...  ...       ...       ...       ...       ...       ...       ...       ...
2024-02-12 08:00:00  1.07914  0.000194  0.000247  0.000193  0.000363  0.000834  0.001077  ...  0.000464  0.000548  0.000793  0.000515  0.001010  0.001005  0.000678
2024-02-12 09:00:00  1.08033  0.001239  0.000194  0.000247  0.000193  0.000363  0.000834  ...  0.001687  0.000464  0.000548  0.000793  0.000515  0.001010  0.001005
2024-02-12 10:00:00  1.07755 -0.001474  0.001239  0.000194  0.000247  0.000193  0.000363  ...  0.001549  0.001687  0.000464  0.000548  0.000793  0.000515  0.001010
2024-02-12 11:00:00  1.07691 -0.001997 -0.001474  0.001239  0.000194  0.000247  0.000193  ...  0.001077  0.001549  0.001687  0.000464  0.000548  0.000793  0.000515
2024-02-12 12:00:00  1.07685 -0.001965 -0.001997 -0.001474  0.001239  0.000194  0.000247  ...  0.000834  0.001077  0.001549  0.001687  0.000464  0.000548  0.000793

[87537 rows x 16 columns]
 
Maxim Dmitrievsky #:

请尝试此功能(从 MT5 保存报价的文件中获取报价)

一切正常

谢谢,我会试试的。

 
马克西姆,你的 Python 和 Windows 是什么?我怎么也想不起来。谢谢。
 
Roman Poshtar #:
马克西姆,你的 Python 和 Windows 是什么?我怎么也想不起来。谢谢。
阅读日志
 
Maxim Dmitrievsky #:
阅读日志。

无错误。MA 200

代码

def get_prices(look_back = 15):
    pr = pd.read_csv('D:/1111/EURUSD_H1.csv', sep='\s+')
    # set df index as datetime
    prices = pd.DataFrame(columns=['time', 'close'])
    prices['time'] = pr['<DATE>'] + ' ' + pr['<TIME>']
    prices['time'] = pd.to_datetime(prices['time'], format='mixed')
    prices['close'] = pr['<CLOSE>']
    prices.set_index('time', inplace=True)
    prices.index = pd.to_datetime(prices.index, unit='s')
    prices = prices.dropna()

    ratesM = prices.rolling(MA_PERIOD2).mean()
    ratesD = prices - ratesM
    for i in range(look_back):
        prices[str(i)] = ratesD.shift(i)

    print(prices.head(50))
    return prices.dropna()

以下是日志

C:\Users\Romanuch\AppData\Local\Programs\Python\Python38\python.exe "C:/Users/Romanuch/Downloads/8642 - 复制 - 复制 - 复制 - 复制/catboost_learning.py"
                       close   0   1   2   3   4  ...  19  20  21  22  23  24
time                                              ...                        
2020-02-17 00:00:00  1.08376 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 01:00:00  1.08410 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 02:00:00  1.08357 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 03:00:00  1.08365 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 04:00:00  1.08391 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 05:00:00  1.08384 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 06:00:00  1.08375 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 07:00:00  1.08394 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 08:00:00  1.08349 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 09:00:00  1.08405 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN
2020-02-17 10:00:00  1.08461 NaN NaN NaN NaN NaN  ... NaN NaN NaN NaN NaN NaN


[50 rows x 26 columns]

204:    learn: 0.7775606        test: 0.5931357 best: 0.5938959 (189)   total: 6.19 s    remaining: 24 s
205:    learn: 0.7777778        test: 0.5924840 best: 0.5938959 (189)   total: 6.22 s    remaining: 24 s
206:    learn: 0.7789725        test: 0.5925926 best: 0.5938959 (189)   total: 6.25 s    remaining: 23.9 s
207:    learn: 0.7795156        test: 0.5929184 best: 0.5938959 (189)   total: 6.27 s    remaining: 23.9 s
208:    learn: 0.7795156        test: 0.5928098 best: 0.5938959 (189)   total: 6.3 s     remaining: 23.9 s
209:    learn: 0.7799500        test: 0.5933529 best: 0.5938959 (189)   total: 6.33 s    remaining: 23.8 s
Stopped by overfitting detector  (20 iterations wait)

bestTest = 0.5938959487
bestIteration = 189

Shrink model to first 190 iterations.
The file cat_model.mqh has been written to disc

Process finished with exit code 0