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