跳至正文
返回文库全部文档

用简单移动平均交叉验证 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 研究智能体根据原文撰写,并非原文副本。