MABullishAlignment - 回测结果详情

返回列表
基本信息
策略名称:
MABullishAlignment
时间范围:
20211104-20230101
行情:
熊市
时间框架:
4h
关键指标
回测天数

423

总交易数

161

日均交易次数

0.38

总收益率

-31.92%

年化收益率

-28.23%

市场变化

-71.17%

超额收益

39.25%

胜率

32.3%

盈亏比

1.16

SQN

-2.74

最大回撤

32.83%

起始资金

10000

配置文件内容
策略文件内容
# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement

# --- 必要的导入模块,请勿删除 ---
import numpy as np  # 数值计算库
import pandas as pd  # 数据处理库
from datetime import datetime, timedelta, timezone  # 时间处理
from pandas import DataFrame  # 数据框架
from typing import Optional, Union  # 类型提示

# Freqtrade策略框架核心模块
from freqtrade.strategy import (
    IStrategy,  # 策略基类
    Trade,  # 交易对象
    Order,  # 订单对象
    PairLocks,  # 交易对锁定
    informative,  # 信息性数据装饰器
    # 超参数优化相关参数类型
    BooleanParameter,  # 布尔参数
    CategoricalParameter,  # 分类参数
    DecimalParameter,  # 小数参数
    IntParameter,  # 整数参数
    RealParameter,  # 实数参数
    # 时间框架辅助函数
    timeframe_to_minutes,  # 时间框架转分钟
    timeframe_to_next_date,  # 下一个时间点
    timeframe_to_prev_date,  # 上一个时间点
    # 策略辅助函数
    merge_informative_pair,  # 合并信息性交易对数据
    stoploss_from_absolute,  # 绝对止损
    stoploss_from_open,  # 开仓价止损
)

# --------------------------------
# 添加自定义技术分析库
import talib.abstract as ta  # TA-Lib技术分析库
from technical import qtpylib  # QTPyLib技术分析库


class MABullishAlignment(IStrategy):
    """
    MA多头排列策略 - 基于移动平均线多头排列的趋势跟踪策略
    
    策略核心逻辑:
    入场条件:MA7 > MA25 > MA99 且多头排列保持5根K线,且MA间距越来越大
    退场条件:多头排列被打破
    
    适用市场:上涨趋势市场
    风险等级:中等
    预期收益:中高
    """

    # Buy hyperspace params:
    buy_params = {
        'timeframe': "4h",
        'bullish_count': 3,
        'ma7_ma25_diff_pct': 6,
        'ma25_ma99_diff_pct': 10,
    }

    # Sell hyperspace params:
    sell_params = {
        'ma7_decreasing_count': 5,
    }

    # ==================== 策略基础配置 ====================
    
    # 策略接口版本号(Freqtrade要求)
    INTERFACE_VERSION = 3

    # 是否支持做空交易(False=仅做多)
    can_short: bool = False

    # ==================== 风险控制参数 ====================
    
    # 最小投资回报率设置(ROI - Return on Investment)
    # 这里设置为不止盈,让策略信号完全控制退出
    minimal_roi = {
        "0": 10  # 从开仓开始,需要1000%收益才止盈(实际上不会触发)
    }

    # 止损设置(负值表示亏损百分比)
    # 设置为-0.99即99%亏损才止损(实际上不会触发)
    stoploss = -0.99

    # 是否启用追踪止损(动态止损)
    trailing_stop = False

    # ==================== 时间和执行配置 ====================
    
    # 策略运行的时间周期(1h = 1小时K线)
    # ['1s', '1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w', '1M']
    timeframe = buy_params['timeframe']

    # 是否仅在新K线生成时运行指标计算(提高性能)
    process_only_new_candles = True

    # ==================== 信号控制参数 ====================
    
    # 是否使用退出信号(True=策略信号控制退出)
    use_exit_signal = True
    
    # 是否仅在盈利时才允许退出(False=亏损时也可退出)
    exit_profit_only = False
    
    # 如果有入场信号,是否忽略ROI退出(False=ROI优先)
    ignore_roi_if_entry_signal = False

    # 策略需要多少根历史K线才能产生有效信号
    # 设置为200是为了确保MA99有足够的数据计算
    startup_candle_count: int = 200

    # ==================== 订单类型配置 ====================
    
    # 不同操作的订单类型设置
    order_types = {
        'entry': 'limit',      # 入场使用限价单(更好的价格控制)
        'exit': 'limit',       # 出场使用限价单(更好的价格控制)
        'stoploss': 'market',  # 止损使用市价单(快速执行)
        'stoploss_on_exchange': False  # 不在交易所设置止损单
    }

    # 订单有效期设置
    order_time_in_force = {
        'entry': 'gtc',  # Good Till Cancelled - 订单有效直到取消
        'exit': 'gtc'    # Good Till Cancelled - 订单有效直到取消
    }

    # ==================== 图表显示配置 ====================
    
    # 策略图表配置,用于可视化分析
    plot_config = {
        # 主图显示(价格图上的指标)
        'main_plot': {
            'ma7': {'color': 'blue'},     # 7日均线 - 蓝色
            'ma25': {'color': 'orange'},  # 25日均线 - 橙色
            'ma99': {'color': 'red'},     # 99日均线 - 红色
        },
        # 子图显示(独立的指标图)
        'subplots': {
            "MA Distance": {  # MA间距图
                'ma_distance_7_25': {'color': 'green'},   # MA7与MA25的距离
                'ma_distance_25_99': {'color': 'purple'}, # MA25与MA99的距离
            }
        }
    }

    def informative_pairs(self):
        """
        定义额外的信息性交易对/时间间隔组合,从交易所缓存数据
        这些交易对不会被交易,除非它们也在交易对列表中指定
        
        返回值:空列表表示不需要额外的信息性数据
        """
        return []

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        """
        向给定的DataFrame添加技术分析指标
        
        这是策略的核心方法之一,负责计算所有需要的技术指标
        
        参数:
            dataframe: 包含OHLCV数据的pandas DataFrame
            metadata: 包含交易对信息的字典
            
        返回:
            添加了技术指标的DataFrame
        """
        
        # ==================== 移动平均线计算 ====================
        
        # 计算简单移动平均线(SMA - Simple Moving Average)
        dataframe['ma7'] = ta.SMA(dataframe, timeperiod=7)    # 7日短期均线
        dataframe['ma25'] = ta.SMA(dataframe, timeperiod=25)  # 25日中期均线
        dataframe['ma99'] = ta.SMA(dataframe, timeperiod=99)  # 99日长期均线
        
        # ==================== MA间距计算 ====================
        
        # 计算均线之间的距离(用于判断趋势强度)
        dataframe['ma_distance_7_25'] = dataframe['ma7'] - dataframe['ma25']    # 短期与中期均线距离
        dataframe['ma_distance_25_99'] = dataframe['ma25'] - dataframe['ma99']  # 中期与长期均线距离
        
        # ==================== 多头排列判断 ====================
        
        # 判断是否为多头排列(MA7 > MA25 > MA99)
        # 多头排列表示上升趋势,价格在均线之上且均线呈多头排列
        dataframe['bullish_alignment'] = (
            (dataframe['ma7'] > dataframe['ma25']) &   # 短期均线在中期均线之上
            (dataframe['ma25'] > dataframe['ma99'])    # 中期均线在长期均线之上
        ).astype(int)  # 转换为0/1数值
        
        # ==================== 连续多头排列计数 ====================
        
        # 计算连续多头排列的K线数量
        # 这个指标用于确保趋势的稳定性
        dataframe['bullish_count'] = 0
        for i in range(1, len(dataframe)):
            if dataframe.iloc[i]['bullish_alignment'] == 1:  # 当前K线为多头排列
                if dataframe.iloc[i-1]['bullish_alignment'] == 1:  # 前一根K线也是多头排列
                    # 连续计数+1
                    dataframe.iloc[i, dataframe.columns.get_loc('bullish_count')] = dataframe.iloc[i-1]['bullish_count'] + 1
                else:
                    # 重新开始计数
                    dataframe.iloc[i, dataframe.columns.get_loc('bullish_count')] = 1
            else:
                # 不是多头排列,计数归零
                dataframe.iloc[i, dataframe.columns.get_loc('bullish_count')] = 0
        
        # ==================== MA间距扩大判断 ====================
        
        # 判断MA间距是否在扩大(趋势加速的信号)
        # 间距扩大表示趋势在加强
        dataframe['ma_distance_expanding'] = (
            (dataframe['ma_distance_7_25'] > dataframe['ma_distance_7_25'].shift(1)) &  # 短中期间距在扩大
            (dataframe['ma_distance_25_99'] > dataframe['ma_distance_25_99'].shift(1))  # 中长期间距在扩大
        ).astype(int)  # 转换为0/1数值
        
        # ==================== MA相邻差值百分比判断 ====================
        
        # 计算相邻MA之间的差值百分比
        # 确保MA7与MA25的差值不超过5%
        dataframe['ma7_ma25_diff_pct'] = abs((dataframe['ma7'] - dataframe['ma25']) / dataframe['ma25']) * 100
        # 确保MA25与MA99的差值不超过5%
        dataframe['ma25_ma99_diff_pct'] = abs((dataframe['ma25'] - dataframe['ma99']) / dataframe['ma99']) * 100
        
        # 判断相邻MA差值是否都在5%以内
        dataframe['ma_diff_within_5pct'] = (
            (dataframe['ma7_ma25_diff_pct'] <= self.buy_params['ma7_ma25_diff_pct']) &  # MA7与MA25差值不超过5%
            (dataframe['ma25_ma99_diff_pct'] <= self.buy_params['ma25_ma99_diff_pct'])   # MA25与MA99差值不超过5%
        ).astype(int)  # 转换为0/1数值
        
        # ==================== MA7连续减小计算 ====================
        
        # 判断MA7是否在减小
        dataframe['ma7_decreasing'] = (dataframe['ma7'] < dataframe['ma7'].shift(1)).astype(int)
        
        # 计算MA7连续减小的次数
        dataframe['ma7_decreasing_count'] = 0
        for i in range(1, len(dataframe)):
            if dataframe.iloc[i]['ma7_decreasing'] == 1:  # 当前K线MA7在减小
                if dataframe.iloc[i-1]['ma7_decreasing'] == 1:  # 前一根K线MA7也在减小
                    # 连续计数+1
                    dataframe.iloc[i, dataframe.columns.get_loc('ma7_decreasing_count')] = dataframe.iloc[i-1]['ma7_decreasing_count'] + 1
                else:
                    # 重新开始计数
                    dataframe.iloc[i, dataframe.columns.get_loc('ma7_decreasing_count')] = 1
            else:
                # MA7没有减小,计数归零
                dataframe.iloc[i, dataframe.columns.get_loc('ma7_decreasing_count')] = 0
        
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        """
        基于技术分析指标,为给定的dataframe填充入场信号
        
        这是策略的核心方法之一,定义了何时买入(做多)
        
        入场逻辑说明:
        1. 多头排列必须保持至少5根K线(确保趋势稳定)
        2. MA间距必须在扩大(确保趋势在加强)
        3. MA7、MA25、MA99相邻两个相差不超过5%(确保均线聚合)
        4. 必须有交易量(确保市场活跃)
        
        参数:
            dataframe: 包含技术指标的pandas DataFrame
            metadata: 包含交易对信息的字典
            
        返回:
            添加了入场信号的DataFrame
        """
        
        # ==================== 入场条件设置 ====================
        
        dataframe.loc[
            (
                # 条件1:多头排列保持了5根K线
                # 这确保了趋势的稳定性,避免假突破
                (dataframe['bullish_count'] >= self.buy_params['bullish_count']) &
                
                # 条件2:MA间距在扩大
                # 这表示趋势正在加强,是较好的入场时机
                (dataframe['ma_distance_expanding'] == 1) &
                
                # 条件3:MA相邻差值在5%以内
                # 这确保均线相对聚合,避免在均线过度分散时入场
                (dataframe['ma_diff_within_5pct'] == 1) &
                
                # 条件4:确保有交易量
                # 有交易量才能确保订单能够成交
                (dataframe['volume'] > 0)
            ),
            'enter_long',  # 设置做多入场信号
        ] = 1

        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        """
        基于技术分析指标,为给定的dataframe填充退出信号
        
        这是策略的核心方法之一,定义了何时卖出(平仓)
        
        退出逻辑说明:
        1. 当多头排列被打破时立即退出(MA7不再大于MA25,或MA25不再大于MA99)
        2. 当MA7连续减小3次时退出(趋势转弱信号)
        3. 必须有交易量确保能够成交
        
        这种退出方式能够及时止损,避免趋势反转带来的大幅亏损
        
        参数:
            dataframe: 包含技术指标的pandas DataFrame
            metadata: 包含交易对信息的字典
            
        返回:
            添加了退出信号的DataFrame
        """
        
        # ==================== 退出条件设置 ====================
        
        dataframe.loc[
            (
                (
                    # 条件1:多头排列被打破
                    # 当MA7 <= MA25 或 MA25 <= MA99时,多头排列结束
                    # 这是趋势可能反转的重要信号
                    (dataframe['bullish_alignment'] == 0) |
                    
                    # 条件2:MA7连续减小3次
                    # MA7连续减小表示短期趋势转弱,及时退出避免损失
                    (dataframe['ma7_decreasing_count'] >= self.sell_params['ma7_decreasing_count'])
                ) &
                
                # 条件3:确保有交易量
                # 有交易量才能确保订单能够成交
                (dataframe['volume'] > 0)
            ),
            'exit_long',  # 设置平多仓信号
        ] = 1

        return dataframe
回测报告
Result for strategy MABullishAlignment
                                              BACKTESTING REPORT                                              
┏━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      Pair ┃ Trades ┃ Avg Profit % ┃  Tot Profit ┃ Tot Profit % ┃     Avg Duration ┃  Win  Draw  Loss  Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│  ADA/USDT │      7 │         1.99 │     210.281 │          2.1 │ 2 days, 10:51:00 │    3     0     4  42.9 │
│  TRX/USDT │     14 │         0.32 │      71.224 │         0.71 │  3 days, 3:09:00 │    8     0     6  57.1 │
│ DOGE/USDT │      9 │          0.4 │      40.469 │          0.4 │ 2 days, 10:13:00 │    3     0     6  33.3 │
│  BNB/USDT │     14 │        -0.08 │     -25.907 │        -0.26 │ 2 days, 18:34:00 │    5     0     9  35.7 │
│  SOL/USDT │      6 │        -1.24 │    -181.555 │        -1.82 │ 3 days, 16:00:00 │    4     0     2  66.7 │
│  CRV/USDT │      8 │        -1.58 │    -197.027 │        -1.97 │ 2 days, 16:00:00 │    2     0     6  25.0 │
│ CAKE/USDT │     14 │        -0.76 │    -203.344 │        -2.03 │ 2 days, 14:51:00 │    4     0    10  28.6 │
│  XLM/USDT │     13 │        -1.08 │    -244.750 │        -2.45 │ 2 days, 18:09:00 │    4     0     9  30.8 │
│  ETH/USDT │      7 │        -2.11 │    -251.928 │        -2.52 │  2 days, 3:26:00 │    1     0     6  14.3 │
│  BTC/USDT │     13 │        -1.23 │    -293.815 │        -2.94 │  1 day, 23:05:00 │    5     0     8  38.5 │
│  XRP/USDT │     11 │        -1.74 │    -329.902 │         -3.3 │  2 days, 6:33:00 │    3     0     8  27.3 │
│ LINK/USDT │     13 │        -2.74 │    -508.402 │        -5.08 │ 2 days, 11:42:00 │    4     0     9  30.8 │
│ AAVE/USDT │     17 │         -2.5 │    -595.072 │        -5.95 │  2 days, 9:39:00 │    3     0    14  17.6 │
│  UNI/USDT │     15 │        -2.78 │    -681.990 │        -6.82 │ 2 days, 13:04:00 │    3     0    12  20.0 │
│     TOTAL │    161 │         -1.2 │   -3191.719 │       -31.92 │ 2 days, 13:46:00 │   52     0   109  32.3 │
└───────────┴────────┴──────────────┴─────────────┴──────────────┴──────────────────┴────────────────────────┘
                                           LEFT OPEN TRADES REPORT                                           
┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃     Pair ┃ Trades ┃ Avg Profit % ┃  Tot Profit ┃ Tot Profit % ┃     Avg Duration ┃  Win  Draw  Loss  Win% ┃
┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ BNB/USDT │      1 │         5.85 │      96.058 │         0.96 │ 4 days, 12:00:00 │    1     0     0   100 │
│ ADA/USDT │      1 │         2.78 │      44.150 │         0.44 │   1 day, 0:00:00 │    1     0     0   100 │
│    TOTAL │      2 │         4.32 │     140.208 │          1.4 │ 2 days, 18:00:00 │    2     0     0   100 │
└──────────┴────────┴──────────────┴─────────────┴──────────────┴──────────────────┴────────────────────────┘
                                                ENTER TAG STATS                                                
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃  Tot Profit ┃ Tot Profit % ┃     Avg Duration ┃  Win  Draw  Loss  Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│     OTHER │     161 │         -1.2 │   -3191.719 │       -31.92 │ 2 days, 13:46:00 │   52     0   109  32.3 │
│     TOTAL │     161 │         -1.2 │   -3191.719 │       -31.92 │ 2 days, 13:46:00 │   52     0   109  32.3 │
└───────────┴─────────┴──────────────┴─────────────┴──────────────┴──────────────────┴────────────────────────┘
                                               EXIT REASON STATS                                               
┏━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃  Tot Profit ┃ Tot Profit % ┃     Avg Duration ┃  Win  Draw  Loss  Win% ┃
┡━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│  force_exit │     2 │         4.32 │     140.208 │          1.4 │ 2 days, 18:00:00 │    2     0     0   100 │
│ exit_signal │   159 │        -1.27 │   -3331.926 │       -33.32 │ 2 days, 13:43:00 │   50     0   109  31.4 │
│       TOTAL │   161 │         -1.2 │   -3191.719 │       -31.92 │ 2 days, 13:46:00 │   52     0   109  32.3 │
└─────────────┴───────┴──────────────┴─────────────┴──────────────┴──────────────────┴────────────────────────┘
                                                      MIXED TAG STATS                                                       
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃  Tot Profit ┃ Tot Profit % ┃     Avg Duration ┃  Win  Draw  Loss  Win% ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│           │  force_exit │      2 │         4.32 │     140.208 │          1.4 │ 2 days, 18:00:00 │    2     0     0   100 │
│           │ exit_signal │    159 │        -1.27 │   -3331.926 │       -33.32 │ 2 days, 13:43:00 │   50     0   109  31.4 │
│     TOTAL │             │    161 │         -1.2 │   -3191.719 │       -31.92 │ 2 days, 13:46:00 │   52     0   109  32.3 │
└───────────┴─────────────┴────────┴──────────────┴─────────────┴──────────────┴──────────────────┴────────────────────────┘
                         SUMMARY METRICS                          
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Metric                        ┃ Value                          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Backtesting from              │ 2021-11-04 00:00:00            │
│ Backtesting to                │ 2023-01-01 00:00:00            │
│ Trading Mode                  │ Spot                           │
│ Max open trades               │ 5                              │
│                               │                                │
│ Total/Daily Avg Trades        │ 161 / 0.38                     │
│ Starting balance              │ 10000 USDT                     │
│ Final balance                 │ 6808.281 USDT                  │
│ Absolute profit               │ -3191.719 USDT                 │
│ Total profit %                │ -31.92%                        │
│ CAGR %                        │ -28.23%                        │
│ Sortino                       │ -2.83                          │
│ Sharpe                        │ -1.57                          │
│ Calmar                        │ -4.39                          │
│ SQN                           │ -2.74                          │
│ Profit factor                 │ 0.56                           │
│ Expectancy (Ratio)            │ -19.82 (-0.30)                 │
│ Avg. daily profit             │ -7.545 USDT                    │
│ Avg. stake amount             │ 1649.983 USDT                  │
│ Total trade volume            │ 529159.926 USDT                │
│                               │                                │
│ Best Pair                     │ ADA/USDT 2.10%                 │
│ Worst Pair                    │ UNI/USDT -6.82%                │
│ Best trade                    │ ADA/USDT 21.76%                │
│ Worst trade                   │ SOL/USDT -18.90%               │
│ Best day                      │ 725.822 USDT                   │
│ Worst day                     │ -368.513 USDT                  │
│ Days win/draw/lose            │ 30 / 301 / 66                  │
│ Min/Max/Avg. Duration Winners │ 0d 08:00 / 7d 16:00 / 3d 20:42 │
│ Min/Max/Avg. Duration Losers  │ 0d 08:00 / 6d 08:00 / 1d 23:01 │
│ Max Consecutive Wins / Loss   │ 13 / 13                        │
│ Rejected Entry signals        │ 298                            │
│ Entry/Exit Timeouts           │ 0 / 0                          │
│                               │                                │
│ Min balance                   │ 6659.79 USDT                   │
│ Max balance                   │ 10123.918 USDT                 │
│ Max % of account underwater   │ 32.83%                         │
│ Absolute drawdown             │ 3323.92 USDT (32.83%)          │
│ Drawdown duration             │ 389 days 20:00:00              │
│ Profit at drawdown start      │ 123.918 USDT                   │
│ Profit at drawdown end        │ -3200.002 USDT                 │
│ Drawdown start                │ 2021-11-11 12:00:00            │
│ Drawdown end                  │ 2022-12-06 08:00:00            │
│ Market change                 │ -71.17%                        │
└───────────────────────────────┴────────────────────────────────┘

Backtested 2021-11-04 00:00:00 -> 2023-01-01 00:00:00 | Max open trades : 5
                                                             STRATEGY SUMMARY                                                             
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃           Strategy ┃ Trades ┃ Avg Profit % ┃  Tot Profit ┃ Tot Profit % ┃     Avg Duration ┃  Win  Draw  Loss  Win% ┃         Drawdown ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ MABullishAlignment │    161 │        -1.20 │   -3191.719 │       -31.92 │ 2 days, 13:46:00 │   52     0   109  32.3 │ 3323.92   32.83% │
└────────────────────┴────────┴──────────────┴─────────────┴──────────────┴──────────────────┴────────────────────────┴──────────────────┘