网格交易是一种自动化的交易策略,旨在通过市场价格的波动来赚取利润,而不依赖于市场的单边趋势。这种策略的核心思想是设定一系列价格区间,当市场价格在这些区间内波动时,自动进行买入和卖出操作,从而实现盈利。与其他依赖趋势的策略不同,网格交易利用市场的自然波动进行操作,可以在上涨和下跌的过程中都能获得收益。
网格交易的主要操作是:通过设定固定的价格区间,在市场价格波动时进行自动买入和卖出。当市场价格达到设定的买入点时,系统会自动执行买入操作;当市场价格上涨到设定的卖出点时,则自动卖出,从而赚取买卖之间的差价。整个过程是自动化的,无需人工干预。
网格交易策略的核心在于利用价格波动进行自动化买卖,因此需要选择那些价格波动性较强且频繁的币种。为了筛选出适合网格交易的币种,我们通常会依赖几个关键的指标,如振幅(Amplitude)、涨幅(Change)等。通过这些指标,我们可以评估每个币种的价格波动情况,进一步判断其是否适合网格交易。
在网格交易策略中,我们的目标是通过市场价格的自然波动来自动执行买入和卖出操作,而不是依赖于市场的单边趋势。网格交易的核心理念是设定一系列价格区间,在市场价格波动时进行自动化交易。因此,选择适合网格交易的币种,必须考虑其价格的波动性。这时,振幅和涨幅是两个关键指标。
振幅指的是价格在一定时间范围内的波动幅度,通常可以通过最高价与最低价之差来衡量。较大的振幅意味着市场价格波动剧烈,价格上下波动的范围较大。在网格交易策略中,较大的振幅提供了更多的买卖机会,系统可以在这些波动之间频繁执行买入和卖出操作,从而赚取差价。
涨幅指的是价格在一定时间内的变化百分比。它可以帮助判断币种是否存在单边趋势。控制涨幅的主要目的是为了避免市场出现单边趋势。比如,如果某个币种的涨幅过大,可能表明市场正处于单边上涨或下跌的状态,这种情况下,网格交易可能无法有效执行。
在筛选适合网格交易的币种时,FMZ开发的数据探索模块提供了强大的数据支持。数据探索模块汇集了全球多个主流交易所的数据,能够提供高频实时的数据查询与历史数据分析,帮助用户实时获取各类市场数据。通过该平台,用户可以方便地访问各个币种的K线数据,并通过SQL查询对数据进行处理、分析与筛选,从而做出更有依据的交易决策。
以下是筛选网格交易币种的过程,结合SQL查询的步骤进行详细说明。
首先,在数据探索模块查询页面,我们从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%。
接下来,我们对每个币种进行聚合统计,计算以下信息: - 每个币种的交易天数(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)
用于计算总振幅,这个指标可以反映在过去一段时间内,币种价格波动的总程度。
接下来,我们将筛选适合网格交易的币种。网格交易策略最适合那些波动性较大且涨幅适中的币种。我们可以通过以下几个标准来筛选: 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%)的币种作为筛选标准。 - 最终查询结果将根据振幅大小进行降序排序,显示最适合网格交易的币种。
通过以上SQL查询,我们可以得到筛选后的适合网格交易的币种列表。例如:
根据这些筛选条件,我们可以看到上市365天内的合适币种。当然,上述的代码仅仅是一个比较粗糙的版本,大家可以在此基础上进行更多细节的完善,例如加入波动性、趋势分析、成交量筛选等因素,帮助大家更精准地筛选出适合网格交易的币种。
网格交易策略的核心是利用市场波动赚取利润,而不是单纯依赖市场的单边趋势。通过有效的筛选适合网格交易的币种,结合FMZ 数据探索模块的强大数据支持,我们可以更加高效地实现这一策略。对于有一定基础的交易者,可以进一步优化筛选标准,结合自己的交易偏好,筛选出最适合自己策略的币种。
参考: