
자기 적응형 평평선 그리드 계량 거래 전략은 평평선과 격자 거래의 개념에 기반한 계량 전략이다. 이 전략은 가격의 간단한 이동 평균 ((SMA) 을 시장 경향의 중심선으로 계산한 다음 중앙선 아래의 일정 비율의 격자선을 설정한다. 이 격자선 사이에 가격이 변동하면, 이 전략은 가격이 하위 격자선을 접촉했을 때 구매하고 상위 격자선을 접촉했을 때 판매한다. 이 거래 방법은 가격 변동이 있지만 전체적으로 평평선 주위에 흔들리는 시장 환경에서 특히 적합하다.
자기 적응평평선그리드 수량 거래 전략의 핵심 원리는 시장 가격의 평균값 회귀 특성에 기반한다. 전략은 다음과 같은 단계를 통해 구현된다:
이 전략의 본질은 가격의 높은 주파수 변동을 특정 범위 내에서 포착하여 “저가거나 고가”를 구현하는 것이다. 이 전략은 동시에 여러 포지션을 보유할 수 있다 (최대 15개), 각 포지션은 다른 그리드 라인에 대응하며, 이 디자인은 전략이 가격 변동을 더 충분히 활용할 수 있도록 한다.
적응형 일률적인 격자 수량 거래 전략은 다음과 같은 중요한 이점을 가지고 있다:
이 전략은 합리적으로 설계되었지만, 다음과 같은 잠재적인 위험들이 있습니다.
코드의 분석을 바탕으로, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:
자기 적응평등그리드 수량 거래 전략은 평평등 회귀 원리에 기반한 격자 거래 시스템으로, 이동 평균 주위에 격자를 설정하여 가격 변동으로 인한 거래 기회를 잡습니다. 전략은 간단하고, 파라미터가 적으며, 조정하기 쉽고, 특히 불안한 시장에서 적용하기에 적합합니다. 전략의 주요 장점은 자기 적응성과 위험 분산 특성으로, 다양한 가격 수준에 자동으로 적응하고 여러 격자 위치로 위험을 분산 할 수 있습니다.
그러나, 이 전략은 강한 트렌드 시장에서 위험에 직면할 수 있으며, 트렌드 필터링과 스톱 로드 메커니즘을 추가하여 최적화 할 필요가 있습니다. 또한, 격자 폭을 동적으로 조정하고, 자금 관리를 개선하고, 다중 시간 주기 확인을 추가하는 등의 최적화 방향도 탐색 할 가치가 있습니다. 이러한 최적화를 통해, 전략은 다양한 시장 환경에서 더 안정적이고 우수한 성능을 얻을 수 있습니다.
이 전략은 경험이 풍부한 양자 거래자에게 좋은 기본 프레임워크를 제공하며, 개인의 거래 스타일과 위험 선호도에 따라 추가적으로 사용자 정의 및 최적화 할 수 있으며, 시장의 변동성을 포착하는 데 있어서 격자 거래의 장점을 발휘합니다.
/*backtest
start: 2025-04-01 00:00:00
end: 2025-06-22 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy('Grid Trading Strategy', overlay=true, pyramiding=15)
// 输入参数设置
ma_length = input.int(300, '移动平均线长度', group='移动平均线条件', step=10)
std = input.float(0.03, title='网格上下偏差率', group='网格条件', step=0.01)
grid = input.int(15, maxval=15, title='网格线数量', group='网格条件')
// 计算移动平均线及网格边界
ma = ta.sma(close, ma_length)
upper_bound = ma * (1 + std)
lower_bound = ma * (1 - std)
grid_width = (upper_bound - lower_bound) / (grid - 1)
// 创建网格价格数组
grid_array = array.new_float(0)
for i = 0 to grid - 1 by 1
array.push(grid_array, lower_bound + grid_width * i)
// 创建订单状态布尔数组(只初始化一次)
var order_array = array.new_bool(grid, false)
// 执行交易逻辑
for i = 0 to grid - 1 by 1
// 买入逻辑:价格低于网格线且该位置未持仓
if close < array.get(grid_array, i) and not array.get(order_array, i)
buy_id = i
array.set(order_array, buy_id, true)
strategy.entry(id=str.tostring(buy_id), direction=strategy.long, comment='#Long ' + str.tostring(buy_id))
// 卖出逻辑:价格高于网格线且下一个网格位置持仓
if close > array.get(grid_array, i) and i != 0
if array.get(order_array, i - 1)
sell_id = i - 1
array.set(order_array, sell_id, false)
strategy.close(id=str.tostring(sell_id), comment='#Close ' + str.tostring(sell_id))
// 可视化网格线
plot(grid > 0 ? array.get(grid_array, 0) : na, color=color.yellow, transp=10)
plot(grid > 1 ? array.get(grid_array, 1) : na, color=color.yellow, transp=10)
plot(grid > 2 ? array.get(grid_array, 2) : na, color=color.yellow, transp=10)
plot(grid > 3 ? array.get(grid_array, 3) : na, color=color.yellow, transp=10)
plot(grid > 4 ? array.get(grid_array, 4) : na, color=color.yellow, transp=10)
plot(grid > 5 ? array.get(grid_array, 5) : na, color=color.yellow, transp=10)
plot(grid > 6 ? array.get(grid_array, 6) : na, color=color.yellow, transp=10)
plot(grid > 7 ? array.get(grid_array, 7) : na, color=color.yellow, transp=10)
plot(grid > 8 ? array.get(grid_array, 8) : na, color=color.yellow, transp=10)
plot(grid > 9 ? array.get(grid_array, 9) : na, color=color.yellow, transp=10)
plot(grid > 10 ? array.get(grid_array, 10) : na, color=color.yellow, transp=10)
plot(grid > 11 ? array.get(grid_array, 11) : na, color=color.yellow, transp=10)
plot(grid > 12 ? array.get(grid_array, 12) : na, color=color.yellow, transp=10)
plot(grid > 13 ? array.get(grid_array, 13) : na, color=color.yellow, transp=10)
plot(grid > 14 ? array.get(grid_array, 14) : na, color=color.yellow, transp=10)