skka3134

skka3134

email
telegram

加密通貨と量子化:7.AIの設定

使用 freqAI で何ができるか

  • 設定が完了したら、freqAI を使用して取得できます。

freqtrade を使用するためには、準備する必要があります

  1. 戦略
  2. 設定ファイル
  3. モデル
    それらのパスはここにあります
freqtrade/templates/FreqaiExampleStrategy.py、freqtrade/freqai/prediction_models/LightGBMRegressor.py、およびconfig_examples/config_freqai.example.json、それぞれ。

設定ファイルを設定する

    "freqai": {
        "enabled": true,
        "purge_old_models": 2,
        "train_period_days": 30, //トレーニングデータの日数
        "backtest_period_days": 7,
        "identifier" : "unique-id",
        "feature_parameters" : {
            "include_timeframes": ["5m","15m","4h"],
            "include_corr_pairlist": [
                "ETH/USD",
                "LINK/USD",
                "BNB/USD"
            ],
            "label_period_candles": 24,
            "include_shifted_candles": 2,
            "indicator_periods_candles": [10, 20]
        },
        "data_split_parameters" : {
            "test_size": 0.25
        }
    }

戦略を設定する


    startup_candle_count: int = 20

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:


        dataframe = self.freqai.start(dataframe, metadata, self)

        return dataframe

    def feature_engineering_expand_all(self, dataframe: DataFrame, period, **kwargs) -> DataFrame:

        dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
        dataframe["%-mfi-period"] = ta.MFI(dataframe, timeperiod=period)
        dataframe["%-adx-period"] = ta.ADX(dataframe, timeperiod=period)
        dataframe["%-sma-period"] = ta.SMA(dataframe, timeperiod=period)
        dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)

        return dataframe

    def feature_engineering_expand_basic(self, dataframe: DataFrame, **kwargs) -> DataFrame:

        dataframe["%-pct-change"] = dataframe["close"].pct_change()
        dataframe["%-raw_volume"] = dataframe["volume"]
        dataframe["%-raw_price"] = dataframe["close"]
        return dataframe

    def feature_engineering_standard(self, dataframe: DataFrame, **kwargs) -> DataFrame:

        dataframe["%-day_of_week"] = (dataframe["date"].dt.dayofweek + 1) / 7
        dataframe["%-hour_of_day"] = (dataframe["date"].dt.hour + 1) / 25
        return dataframe

    def set_freqai_targets(self, dataframe: DataFrame, **kwargs) -> DataFrame:

        dataframe["&-s_close"] = (
            dataframe["close"]
            .shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
            .rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
            .mean()
            / dataframe["close"]
            - 1
            )
        return dataframe

startup_candle_count は、戦略の起動期間を指します。戦略の起動期間は、この時間内に指標の計算に誤差が生じることを意味します。ただし、具体的な起動時間はどれくらいか、この問題を解決するために、戦略に startup_candle_count という属性を割り当てます。この値は、指標の計算に必要な最大期間です。例えば

startup_candle_count = 100
dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)

ダイナミックバルブ
変数テーブル
タイムキーフレーム
特徴
辞書
インストール要件

注意事項
VolumePairlists とは互換性がありません
ただし、ShufflePairlist とは互換性があります

freqAI の起動

freqtrade trade --config config_examples/config_freqai.example.json --strategy FreqaiExampleStrategy --freqaimodel LightGBMRegressor --strategy-path freqtrade/templates

freqAI を起動すると、すぐに新しいモデルが生成されます。新しいモデルのトレーニングを 30 分後に開始したい場合は、次のようにします。

    "freqai": {
        "live_retrain_hours": 0.5
    }

または、30 分前にトレーニングを開始しないように freqAI に指示することもできます。

    "freqai": {
        "expired_hours": 0.5
    }

古いモデルを削除してディスクスペースを節約したい場合は、次のようにします。

    "freqai": {
        "purge_old_models": true
    }

既にトレーニングされたモデルを使用したい場合は、identifier を指定します。

    "freqai": {
        "identifier": "example",
    }

その後、freqAI はすべての設定に基づいて必要なデータを自動的にダウンロードします(存在しない場合)。
バックテスト
バックテストモードは以前とは異なり、事前にデータをダウンロードする必要があり、時間範囲も大きくする必要があります。
バックテストモードを起動するコマンド

freqtrade backtesting --strategy FreqaiExampleStrategy --strategy-path freqtrade/templates --config config_examples/config_freqai.example.json --freqaimodel LightGBMRegressor --timerange 20210501-20210701

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。