Type/to search

롱/숏 적응형 동적 그리드 전략

Common strategy
Created: 2024-03-19 14:19:12
Last modified: 2 years ago
1
Follow
1802
Followers

img

개요

이는 Pine Script를 기반으로 작성된 롱/숏 적응형 동적 그리드 트레이딩 전략입니다. 이 전략의 핵심 아이디어는 최근 가격의 고점과 저점 또는 단순 이동 평균(SMA)을 기준으로 그리드의 상한선과 하한선을 자동으로 계산하고, 해당 범위를 여러 개의 그리드 라인으로 균등 분할하는 것입니다. 가격이 특정 그리드 라인에 닿으면 해당 지점에서 매수 포지션을 진입하거나 청산합니다. 이러한 방식을 통해 전략은 횡보장에서 지속적으로 포지션을 진입 및 청산하며 스프레드 수익을 얻을 수 있습니다. 또한 그리드 경계를 동적으로 조정함으로써 다양한 시장 추세에도 적응할 수 있습니다.

전략 원리

  1. 그리드 상한선과 하한선을 계산합니다. 사용자 선택에 따라 상한선과 하한선은 최근 N개 캔들의 최고가와 최저가를 기준으로 하되, 확대 또는 축소 비율을 설정할 수 있습니다. 또는 최근 N개 캔들의 종가에 대한 단순 이동 평균(SMA)을 기준으로 상하 이탈 비율을 설정할 수도 있습니다.

  2. 그리드 라인 배열을 생성합니다. 설정된 그리드 라인 수에 따라 그리드 범위를 균등 분할하여 해당 가격의 그리드 라인 배열을 만듭니다.

  3. 진입/추가 매수. 아래에서 위로 그리드 라인을 순회하며, 현재 종가가 특정 그리드 라인 가격보다 작고 해당 그리드 라인에 아직 포지션이 없으면 그 지점에서 매수 포지션을 엽니다. 이렇게 하면 가격이 더 높은 그리드 라인에 도달할 때 지속적으로 포지션이 추가됩니다.

  4. 청산/포지션 축소. 위에서 아래로 그리드 라인을 순회하며, 현재 종가가 특정 그리드 라인 가격보다 크고 한 칸 아래 그리드 라인에 포지션이 있으면 해당 한 칸 아래 그리드 라인의 매수 포지션을 청산합니다. 이렇게 하면 가격이 하락할 때 지속적으로 포지션이 축소됩니다.

  5. 동적 조정. 동적 그리드 기능을 선택하면 매 캔들마다 그리드의 상한선, 하한선 및 그리드 라인 배열을 다시 계산하여 그리드가 시장 변화에 따라 지속적으로 적응할 수 있도록 합니다.

장점 분석

  1. 적응성. 그리드 트레이딩 전략은 횡보장과 추세장 모두에 적응할 수 있습니다. 횡보장에서는 그리드 전략이 지속적으로 포지션을 진입 및 청산하며 스프레드 수익을 얻고, 추세장에서는 그리드가 가격을 따라 움직이므로 일정 포지션을 유지하며 추세 수익을 얻을 수 있습니다.

  2. 위험 통제 가능. 각 진입 시 포지션 크기는 설정된 그리드 수에 의해 결정되므로 단일 위험 노출이 작고 통제 가능합니다. 또한 가격이 상단 그리드 라인에 도달하면 포지션을 청산하여 이익을 실현하므로 잠재적 손실을 어느 정도 헤지할 수 있습니다.

  3. 높은 자동화 수준. 이 전략은 기본적으로 완전 자동으로 운영될 수 있으며 인적 개입이 필요하지 않아 장기적이고 안정적인 수익을 원하는 투자자에게 적합합니다.

  4. 유연한 파라미터. 사용자는 시장 특성에 따라 그리드 라인 수, 동적 그리드 파라미터 등을 유연하게 설정하여 전략 성과를 최적화할 수 있습니다.

위험 분석

  1. 블랙스완 위험. 극단적인 급락장이 발생하여 가격이 최저 그리드 라인 아래로 갭다운하면, 전략이 풀 포지션이 되어 큰 손실을 볼 수 있습니다. 이 위험을 줄이기 위해 손실 한도에 도달하면 모든 포지션을 청산하는 손절 조건을 설정할 수 있습니다.

  2. 그리드 파라미터 설정 부적절. 그리드 밀도가 너무 높으면 각 진입/청산 시 스프레드가 매우 작아져 수수료가 대부분의 수익을 잠식할 수 있습니다. 그리드 폭이 너무 넓으면 한 번에 진입하는 포지션 비율이 높아 위험 노출이 커집니다. 기초 자산의 특성을 신중히 평가하여 적절한 그리드 파라미터를 선택해야 합니다.

  3. 베이시스 위험. 이 전략은 현재 가격을 기준으로 진입/청산 조건을 설정합니다. 선물 등의 시장에서 계약 가격과 기초 자산 가격의 차이가 크면 실제 진입/청산 가격이 예상과 크게 다를 수 있습니다.

최적화 방향

  1. 추세 필터 추가. 그리드 전략은 단방향 추세장에서 성과가 좋지 않으므로, ADX가 특정 임계값보다 낮을 때만 그리드를 활성화하고 추세가 뚜렷할 때는 그리드를 비활성화하고 단방향 포지션만 유지하는 추세 필터를 도입할 수 있습니다.

  2. 신호 최적화. 그리드 위에 다른 신호를 중첩할 수 있습니다. 예를 들어, 그리드 + 이동 평균: 기본적으로 그리드가 진입/청산을 결정하지만, 가격이 특정 이동 평균을 돌파할 때만 진입하고 그렇지 않으면 진입하지 않습니다. 이렇게 하면 잦은 진입/청산으로 인한 비용을 줄일 수 있습니다.

  3. 포지션 관리. 현재 전략은 각 그리드의 포지션 크기가 고정되어 있습니다. 가격이 시장 평균 가격에서 멀어질 때는 각 그리드의 포지션 크기를 적절히 낮추고, 시장 평균 가격에 가까워질 때는 포지션 크기를 늘려 자금 효율을 높일 수 있습니다.

  4. 적응형 그리드 밀도. 가격 변동성에 따라 그리드 밀도를 동적으로 조정합니다. 변동성이 높을 때는 그리드 수를 늘리고, 변동성이 낮을 때는 그리드 수를 줄입니다. 이렇게 하면 그리드 폭을 최적화하고 자금 효율을 높일 수 있습니다.

요약

이 전략은 적응형 동적 그리드를 통해 횡보장에서 빈번하게 포지션을 진입 및 청산하여 스프레드 수익을 얻고, 추세장에서는 일정 노출 방향을 유지하여 추세 수익을 얻을 수 있는 적응력이 뛰어난 중장기 퀀트 전략입니다. 적절한 그리드 트리거 로직과 포지션 관리를 설정하면 안정적인 수익을 얻을 수 있습니다. 그러나 극단적인 시장 상황과 가격 갭 위험에 주의해야 하며, 이를 통제하기 위해 적절한 손절 조건을 설정해야 합니다. 또한 파라미터 설정 및 리스크 관리 측면에서 추가 최적화 여지가 있으며, 추세 필터 도입, 신호 중첩, 포지션 관리, 적응형 그리드 밀도 등의 수단을 통해 전략의 안정성과 수익성을 높일 수 있습니다. 종합적으로, 이 전략은 그리드의 기본 로직에 동적 적응 메커니즘을 추가하여 중장기 퀀트 투자자에게 새로운 아이디어와 참고 자료를 제공할 수 있습니다.

Source
Pine
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jcloyd

//@version=4
strategy("(IK) Grid Script", overlay=true, pyramiding=14, close_entries_rule="ANY", default_qty_type=strategy.cash, initial_capital=100.0, currency="USD", commission_type=strategy.commission.percent, commission_value=0.1)
i_autoBounds    = input(group="Grid Bounds", title="Use Auto Bounds?", defval=true, type=input.bool)                             // calculate upper and lower bound of the grid automatically? This will theorhetically be less profitable, but will certainly require less attention
i_boundSrc      = input(group="Grid Bounds", title="(Auto) Bound Source", defval="Hi & Low", options=["Hi & Low", "Average"])     // should bounds of the auto grid be calculated from recent High & Low, or from a Simple Moving Average
i_boundLookback = input(group="Grid Bounds", title="(Auto) Bound Lookback", defval=250, type=input.integer, maxval=500, minval=0) // when calculating auto grid bounds, how far back should we look for a High & Low, or what should the length be of our sma
i_boundDev      = input(group="Grid Bounds", title="(Auto) Bound Deviation", defval=0.10, type=input.float, maxval=1, minval=-1)  // if sourcing auto bounds from High & Low, this percentage will (positive) widen or (negative) narrow the bound limits. If sourcing from Average, this is the deviation (up and down) from the sma, and CANNOT be negative.
i_upperBound    = input(group="Grid Bounds", title="(Manual) Upper Boundry", defval=0.285, type=input.float)                      // for manual grid bounds only. The upperbound price of your grid
i_lowerBound    = input(group="Grid Bounds", title="(Manual) Lower Boundry", defval=0.225, type=input.float)                      // for manual grid bounds only. The lowerbound price of your grid.
i_gridQty       = input(group="Grid Lines",  title="Grid Line Quantity", defval=8, maxval=15, minval=3, type=input.integer)       // how many grid lines are in your grid
Strategy parameters
Strategy parameters
Grid Bounds
Use Auto Bounds?
(Auto) Bound Source
(Auto) Bound Lookback
(Auto) Bound Deviation
(Manual) Upper Boundry
(Manual) Lower Boundry
Grid Lines
Grid Line Quantity
Comment
All comments (0)
No data
No data
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)