• 首页
  • 四四色播
  • 色情社区
  • 偷拍摄视影视先锋
  • 艳母
  • 妈妈的丝袜
  • 欧美性大片
  • 四四色播

    你的位置:极品熟女 > 四四色播 > 【SD-618】スポ根コスプレ アスリートたちの濡れ濡れトレーニング 量化软件——赫兹MT5使用标签数据的示例

    【SD-618】スポ根コスプレ アスリートたちの濡れ濡れトレーニング 量化软件——赫兹MT5使用标签数据的示例

    发布日期:2024-07-22 01:23    点击次数:160

    【SD-618】スポ根コスプレ アスリートたちの濡れ濡れトレーニング 量化软件——赫兹MT5使用标签数据的示例

    轮廓【SD-618】スポ根コスプレ アスリートたちの濡れ濡れトレーニング

    本文先容了怎么通过MetaTrader5往返平台使用PyTorch Lightning和PyTorch Forecasting框架来已毕基于神经汇聚的金融技艺序列权衡。

    在本文中,咱们还将讲授聘请这两个框架的原因以及咱们使用的数据体式。

    开动化

    当先,咱们需要导入所需的库。这些库包括MetaTrader5(用于与MT5结尾交互)、PyTorch Lightning(用于检修模子)以过甚他一些用于数据处治和可视化的库。

    import MetaTrader5 as mt5

    import lightning.pytorch as pl

    from lightning.pytorch.callbacks import EarlyStopping

    import matplotlib.pyplot as plt

    import pandas as pd

    from pytorch_forecasting import Baseline, NHiTS, TimeSeriesDataSet

    from pytorch_forecasting.data import NaNLabelEncoder

    from pytorch_forecasting.metrics import MAE, SMAPE, MQF2DistributionLoss, QuantileLoss

    亚洲日韩

    from lightning.pytorch.tuner import Tuner

    接下来,咱们需要开动化MetaTrader5。这是通过调用mt.initialize()函数来完成的。如果你不成粗略地使用它来开动化它,你需要将MT5结尾的旅途动作参数传递给这个函数(在示例中“D:\Project\mt\MT5\terminal64.exe”是我的个东说念主旅途位置,在本色哄骗中你需要将它设置到你我方的旅途位置)。如果开动化收效,函数将复返True,不然复返False。

    if not mt.initialize("D:\\Project\\mt\\MT5\\terminal64.exe"):

    print('initialize() failed!')

    else:

    print(mt.version())

    mt.symbols_total()函数用于获取MT5结尾中可用的可往返品种的总额。咱们不错用它来判断咱们是否简略正确地赢得数据。如果总额大于0,咱们不错使用mt.copy_rates_from_pos()函数来获取指定往返品种的历史数据。在本例中,咱们赢得了“GOLD_micro”品种的“mt_data_len”M15(15分钟)周期数据的最新长度。

    sb=mt.symbols_total()

    rts=None

    if sb > 0:

    rts=mt.copy_rates_from_pos("GOLD_micro",mt.TIMEFRAME_M15,0,mt_data_len)

    mt.shutdown()

    终末,咱们使用mt.shutdown()函数关闭与MT5结尾的诱骗,并将赢得的数据退换为Pandas DataFrame体式。

    mt.shutdown()

    rts_fm=pd.DataFrame(rts)

    刻下,偷拍摄视影视先锋让咱们议论怎么对从MT5结尾赢得的数据进行预处治。

    咱们需要先将技艺戳退换为日历:【SD-618】スポ根コスプレ アスリートたちの濡れ濡れトレーニング

    rts_fm['time']=pd.to_datetime(rts_fm['time'], unit='s')

    在这里,咱们不再刻画怎么标志数据。你不错在我之前的两篇著作中找到法式(本文简介中有著作连气儿)。为了简明地演示怎么使用权衡模子,咱们只需将每个“max_encoder_length+2max_prediction_length”数据片断阔别为一组。每组有一个从0到“max_encoder_length+2max_prediction_length-1”的序列,并填充它们。通过这种形态,咱们将所需的标签添加到原始数据中。当先,咱们需要将原始技艺索引(即DataFrame的索引)退换为技艺索引。计较原始技艺索引的尾数除以(max_encoder_length+2max_prediction_length),并将效果用作新的技艺索引。这将技艺索引映射到从0到“max_encoder_length+2*max_prediction_length-1”的领域内:

    rts_fm['time_idx']= rts_fm.index%(max_encoder_length+2*max_prediction_length)

    咱们还需要将原始技艺索引退换为一个组。计较原始技艺指数除以“max_encoder_length+2*max_prediction_length”,并将效果用作新组:

    rts_fm['series']=rts_fm.index//(max_encoder_length+2*max_prediction_length)

    咱们将数据预处治部分封装到一个函数中。咱们只需要将咱们需要赢得的数据长度传递给它,它就不错完成数据预处治职责:

    def get_data(mt_data_len:int):

    if not mt.initialize("D:\\Project\\mt\\MT5\\terminal64.exe"):

    print('initialize() failed!')

    else:

    print(mt.version())

    sb=mt.symbols_total()

    rts=None

    if sb > 0:

    rts=mt.copy_rates_from_pos("GOLD_micro",mt.TIMEFRAME_M15,0,mt_data_len)

    mt.shutdown()

    # print(len(rts))

    rts_fm=pd.DataFrame(rts)

    rts_fm['time']=pd.to_datetime(rts_fm['time'], unit='s')

    rts_fm['time_idx']= rts_fm.index%(max_encoder_length+2*max_prediction_length)

    rts_fm['series']=rts_fm.index//(max_encoder_length+2*max_prediction_length)

    return rts_fm

    重写 pytorch_forecasting.TimeSeriesDataSet 类

    重写pytorch_foredicting中的to_datalader()函数。这允许您结尾是否对数据进行混洗以及是否丢弃终末一组批处治(主若是为了精雅终末一组数据长度不及导致的不可权衡乌有)。以下是您的操作法式:

    class New_TmSrDt(TimeSeriesDataSet):

    def to_dataloader(self, train: bool = True,

    batch_size: int = 64,

    batch_sampler: Sampler | str = None,

    shuffle:bool=False,

    drop_last:bool=False,

    **kwargs) -> DataLoader:

    default_kwargs = dict(

    shuffle=shuffle,

    drop_last=drop_last, #modification

    collate_fn=self._collate_fn,

    batch_size=batch_size,

    batch_sampler=batch_sampler,

    )

    default_kwargs.update(kwargs)

    kwargs = default_kwargs

    if kwargs["batch_sampler"] is not None:

    sampler = kwargs["batch_sampler"]

    if isinstance(sampler, str):

    if sampler == "synchronized":

    kwargs["batch_sampler"] = TimeSynchronizedBatchSampler(

    SequentialSampler(self),

    batch_size=kwargs["batch_size"],

    shuffle=kwargs["shuffle"],

    drop_last=kwargs["drop_last"],

    )

    else:

    raise ValueError(f"batch_sampler {sampler} unknown - see docstring for valid batch_sampler")

    del kwargs["batch_size"]

    del kwargs["shuffle"]

    del kwargs["drop_last"]

    return DataLoader(self,**kwargs)

    此代码创建从TimeSeriesDataSet经受的新类new_TmSrDt。to_datalader()函数随后在这个新类中被重写【SD-618】スポ根コスプレ アスリートたちの濡れ濡れトレーニング,以包括shuffle和drop_last参数。这么,您就不错更好地结尾数据加载经由。请记取在代码中使用New_TmSrDt替换TimeSeriesDataSet的实例。