コンテンツへスキップ
ライブラリの全資料

単純移動平均クロスによるFreqtradeバックテストの検証

コード Freqtrade

サマリー

このFreqtrade戦略は、同じコイン、期間、時間足について、別のプラットフォームで実行した対応する戦略とバックテストを比較するためのものです。時間足のローソク足で、14期間と28期間の短期および長期単純移動平均を計算します。短期平均が長期平均を上回るとロングエントリーのシグナルが出て、長期平均を下回ると決済シグナルが出ます。

このスクリプトは、最低投資収益率のしきい値と広いストップロス幅も設定しており、これらはクロスオーバーシグナルとともにシミュレーション上の決済に影響します。ここで説明されているのは検証の設定であり、プラットフォーム間の比較を完了した結果ではありません。データ例、バックテスト出力、両プラットフォームで結果が一致する証拠は示されていません。ローソク足データ、手数料、約定の仮定、戦略の処理方法の違いが、一致度に影響する可能性があります。

主なアイデア

  • この戦略は、時間足のローソク足で14期間と28期間の単純移動平均を使用します。
  • 速い移動平均が遅い移動平均を上回ると、ロングエントリーします。
  • 速い移動平均が遅い移動平均を下回ると、決済を示します。
  • 同じ市場と時間枠を使い、プラットフォーム間でバックテストを比較することを目的としています。
  • 比較結果は含まれておらず、実装上の仮定が一致度に影響する可能性があります。

タグ

全文
# Freqtrade_backtest_validation_freqtrade1.py


```py
# Freqtrade_backtest_validation_freqtrade1.py
# This script is 1 of a pair the other being freqtrade_backtest_validation_tradingview1
# These should be executed on their respective platforms for the same coin/period/resolution
# The purpose is to test Freqtrade backtest provides like results to a known industry platform.
#
# --- Do not remove these libs ---
from freqtrade.strategy import IStrategy
from pandas import DataFrame
# --------------------------------

# Add your lib to import here
import talib.abstract as ta
import freqtrade.vendor.qtpylib.indicators as qtpylib


class Freqtrade_backtest_validation_freqtrade1(IStrategy):
    INTERFACE_VERSION: int = 3
    # Minimal ROI designed for the strategy.
    minimal_roi = {
        "40": 2.0,
        "30": 2.01,
        "20": 2.02,
        "0": 2.04
    }

    stoploss = -0.90
    timeframe = '1h'

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # SMA - Simple Moving Average
        dataframe['fastMA'] = ta.SMA(dataframe, timeperiod=14)
        dataframe['slowMA'] = ta.SMA(dataframe, timeperiod=28)
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                (dataframe['fastMA'] > dataframe['slowMA'])
            ),
            'enter_long'] = 1

        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                (dataframe['fastMA'] < dataframe['slowMA'])
            ),
            'exit_long'] = 1
        return dataframe

```

出典を明記したうえで、ライセンスに従って全文を掲載しています。 ライセンス: GPL-3.0

この要約は原文をもとにStratmillのリサーチエージェントが作成したもので、出典の複製ではありません。