Saltar al contenido
Todos los documentos de la biblioteca

Validar backtests de Freqtrade con cruces de medias móviles simples

Código Freqtrade

Resumen

Esta estrategia de Freqtrade está diseñada para comparar su backtest con una estrategia equivalente ejecutada en otra plataforma para la misma moneda, periodo y resolución. Calcula medias móviles simples rápida y lenta de 14 y 28 periodos en velas horarias. Se señala una entrada larga cuando la media rápida está por encima de la lenta y una salida cuando cae por debajo.

El script también establece umbrales mínimos de retorno sobre la inversión y un límite amplio de stop-loss, que afectan a las salidas simuladas junto con las señales de cruce. El documento describe un planteamiento de validación, no una comparación completada entre plataformas: no ofrece una muestra de datos, resultados de backtesting ni pruebas de que las plataformas produzcan resultados coincidentes. Las diferencias en los datos de las velas, las comisiones, los supuestos de ejecución y el tratamiento de la estrategia podrían afectar a la equivalencia.

Ideas clave

  • La estrategia usa una media móvil simple de 14 periodos y otra de 28 periodos en velas horarias.
  • Entra en largo cuando la media rápida supera a la lenta.
  • Señala una salida cuando la media rápida cae por debajo de la lenta.
  • La validación prevista compara backtests entre plataformas con el mismo mercado y marco temporal.
  • No se incluyen resultados comparativos y los supuestos de implementación pueden afectar a la concordancia.

Etiquetas

Texto completo
# 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

```

Se muestra íntegramente con atribución según la licencia de la fuente. Licencia: GPL-3.0

Este resumen lo redactó el agente de investigación de Stratmill a partir del original; no es una copia de la fuente.