2
关注
19
关注者

量化分析助力网格策略(一):筛选目标币种

创建于: 2025-02-07 11:11:31, 更新于: 2025-02-17 17:38:28
comments   0
hits   260

量化分析助力网格策略(一):筛选目标币种

网格交易是一种自动化的交易策略,旨在通过市场价格的波动来赚取利润,而不依赖于市场的单边趋势。这种策略的核心思想是设定一系列价格区间,当市场价格在这些区间内波动时,自动进行买入和卖出操作,从而实现盈利。与其他依赖趋势的策略不同,网格交易利用市场的自然波动进行操作,可以在上涨和下跌的过程中都能获得收益。

网格交易的工作原理

网格交易的主要操作是:通过设定固定的价格区间,在市场价格波动时进行自动买入和卖出。当市场价格达到设定的买入点时,系统会自动执行买入操作;当市场价格上涨到设定的卖出点时,则自动卖出,从而赚取买卖之间的差价。整个过程是自动化的,无需人工干预。

如何筛选适合网格交易的币种

网格交易策略的核心在于利用价格波动进行自动化买卖,因此需要选择那些价格波动性较强且频繁的币种。为了筛选出适合网格交易的币种,我们通常会依赖几个关键的指标,如振幅(Amplitude)、涨幅(Change)等。通过这些指标,我们可以评估每个币种的价格波动情况,进一步判断其是否适合网格交易。

在网格交易策略中,我们的目标是通过市场价格的自然波动来自动执行买入和卖出操作,而不是依赖于市场的单边趋势。网格交易的核心理念是设定一系列价格区间,在市场价格波动时进行自动化交易。因此,选择适合网格交易的币种,必须考虑其价格的波动性。这时,振幅涨幅是两个关键指标。

1. 振幅(Amplitude)

振幅指的是价格在一定时间范围内的波动幅度,通常可以通过最高价与最低价之差来衡量。较大的振幅意味着市场价格波动剧烈,价格上下波动的范围较大。在网格交易策略中,较大的振幅提供了更多的买卖机会,系统可以在这些波动之间频繁执行买入和卖出操作,从而赚取差价。

  • 为什么振幅重要?
    • 网格交易的核心在于通过市场的波动来赚取利润,而非单一的上涨或下跌。振幅大的市场通常意味着有更多的波动空间,这为网格交易提供了更多的盈利机会。
    • 通过设定不同的价格区间,系统可以在市场波动中获取更好的买卖差价,因此较大的振幅有利于网格策略的实施。

2. 涨幅(Change)

涨幅指的是价格在一定时间内的变化百分比。它可以帮助判断币种是否存在单边趋势。控制涨幅的主要目的是为了避免市场出现单边趋势。比如,如果某个币种的涨幅过大,可能表明市场正处于单边上涨或下跌的状态,这种情况下,网格交易可能无法有效执行。

  • 为什么涨幅重要?
    • 防止单边趋势:网格交易适合价格波动较为频繁的市场,而不适用于单边上涨或下跌的市场。涨幅过大的币种通常意味着市场出现了单边趋势,这与网格交易的原理相悖。单边趋势可能导致网格交易在执行时遇到亏损,因为价格持续偏向一个方向,网格中的买入和卖出操作可能无法及时调整。
    • 稳定的波动性:网格交易更适合那些涨幅适中且波动频繁的币种。涨幅适中的币种通常会保持较为稳定的波动性,这为网格交易提供了稳定的交易机会。过大的涨幅可能导致市场的不稳定性,从而影响策略的执行。

数据探索模块介绍:

在筛选适合网格交易的币种时,FMZ开发的数据探索模块提供了强大的数据支持。数据探索模块汇集了全球多个主流交易所的数据,能够提供高频实时的数据查询与历史数据分析,帮助用户实时获取各类市场数据。通过该平台,用户可以方便地访问各个币种的K线数据,并通过SQL查询对数据进行处理、分析与筛选,从而做出更有依据的交易决策。

量化分析助力网格策略(一):筛选目标币种

以下是筛选网格交易币种的过程,结合SQL查询的步骤进行详细说明。

1. 数据收集与处理

首先,在数据探索模块查询页面,我们从Binance交易所收集所有USDT交易对的K线数据,包括每日的开盘价、最高价、最低价和收盘价。然后,我们计算每个币种的振幅(Amplitude)和涨幅(Change)。振幅表示价格波动的幅度,而涨幅则表示价格相对于开盘价的变化幅度。

WITH SymbolData AS (
    SELECT 
        *,
        ((High - Low) / Open) * 100 AS amplitude,  -- 振幅
        ((Close - Open) / Open) * 100 AS change  -- 涨幅
    FROM 
        klines.spot_1d
    WHERE 
        Symbol LIKE '%usdt'  -- 仅选择USDT相关交易对
        AND Time > toUnixTimestamp(toStartOfDay(now()) - INTERVAL 365 DAY) * 1000  -- 过去365天的数据
        AND Exchange = 'Binance'  -- 仅选择Binance交易所数据
    ORDER BY Time DESC
)

解释: - 该部分代码从 klines.spot_1d 表中获取过去365天内所有USDT相关的交易对数据。 - 计算每个交易对的振幅(amplitude)和涨幅(change)。振幅计算公式为:(最高价 - 最低价) / 开盘价 * 100%,涨幅计算公式为:(收盘价 - 开盘价) / 开盘价 * 100%。

2. 聚合统计数据

接下来,我们对每个币种进行聚合统计,计算以下信息: - 每个币种的交易天数(day_count) - 每个币种的平均振幅(avg_amplitude) - 每个币种的最大振幅(max_amplitude)和最小振幅(min_amplitude) - 每个币种的平均涨幅(avg_change) - 每个币种的最大涨幅(max_change)和最小跌幅(min_change)

这些统计数据将帮助我们分析每个币种的波动性,进而筛选出适合网格交易的币种。

AggregatedData AS (
    -- 计算每个符号的统计信息
    SELECT 
        Symbol,
        COUNT(*) AS day_count,
        AVG(amplitude) AS avg_amplitude,
        MAX(amplitude) AS max_amplitude,
        MIN(amplitude) AS min_amplitude,
        MAX(change) AS max_change,
        MIN(change) AS min_change,
        SUM(amplitude) AS total_amplitude,
        AVG(change) AS avg_change
    FROM 
        SymbolData
    GROUP BY 
        Symbol
)

解释: - 这段代码对每个币种进行聚合,统计了每个币种的平均振幅、最大和最小振幅、平均涨幅、最大和最小涨跌幅。 - SUM(amplitude) 用于计算总振幅,这个指标可以反映在过去一段时间内,币种价格波动的总程度。

3. 筛选适合网格交易的币种

接下来,我们将筛选适合网格交易的币种。网格交易策略最适合那些波动性较大且涨幅适中的币种。我们可以通过以下几个标准来筛选: 1. 振幅较大:选择那些振幅(avg_amplitude)较大的币种,这通常意味着其价格波动较频繁。 2. 涨幅适中:选择那些涨幅(max_change 和 min_change)适中的币种,避免选择单边上涨或下跌过于剧烈的币种。 3. 频繁的价格波动:选择那些价格波动较为频繁、并且具有一定波动区间的币种。

最终查询结果会显示每个币种的相关统计数据,并根据我们的筛选标准,确定哪些币种适合网格交易。

SELECT 
    ad.Symbol,
    ad.day_count AS "天数",
    ROUND(ad.avg_amplitude, 2) AS "平均振幅%",
    ROUND(ad.max_amplitude, 2) AS "最大振幅%",
    ROUND(ad.min_amplitude, 2) AS "最小振幅%",
    ROUND(ad.total_amplitude, 2) AS "总振幅%",
    ROUND(ad.avg_change, 2) AS "平均涨跌幅%",
    ROUND(ad.max_change, 2) AS "最大涨幅%",
    ROUND(ad.min_change, 2) AS "最小跌幅%",
    ROUND(ad.avg_change * ad.day_count, 2) AS "总涨跌幅%"  -- 修正总涨跌幅
FROM 
    AggregatedData ad
WHERE 
    ad.avg_amplitude > {{amplitude_thre}}  -- 选择平均振幅大于平均振幅阈值的币种
    AND ABS(ad.avg_change * ad.day_count) < {{change_thre}} -- 累计涨跌幅绝对值小于涨跌幅阈值
ORDER BY 
    ad.avg_amplitude DESC;

解释: - 这段代码选择了平均振幅大于平均振幅阈值(amplitude_thre,默认10%)、累计涨跌幅绝对值小于涨跌幅阈值(change_thre,默认100%)的币种作为筛选标准。 - 最终查询结果将根据振幅大小进行降序排序,显示最适合网格交易的币种。

4. 示例结果

通过以上SQL查询,我们可以得到筛选后的适合网格交易的币种列表。例如:

根据这些筛选条件,我们可以看到上市365天内的合适币种。当然,上述的代码仅仅是一个比较粗糙的版本,大家可以在此基础上进行更多细节的完善,例如加入波动性、趋势分析、成交量筛选等因素,帮助大家更精准地筛选出适合网格交易的币种。

总结

网格交易策略的核心是利用市场波动赚取利润,而不是单纯依赖市场的单边趋势。通过有效的筛选适合网格交易的币种,结合FMZ 数据探索模块的强大数据支持,我们可以更加高效地实现这一策略。对于有一定基础的交易者,可以进一步优化筛选标准,结合自己的交易偏好,筛选出最适合自己策略的币种。

参考:

U本位网格振幅筛选

更多内容