월별 매수일을 기반으로 한 양적 투자 전략


생성 날짜: 2023-11-24 14:10:23 마지막으로 수정됨: 2023-11-24 14:10:23
복사: 0 클릭수: 593
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

월별 매수일을 기반으로 한 양적 투자 전략

개요

이 전략의 핵심 아이디어는 매월 최적의 구매 날짜를 찾아서 이 날짜에 디지털 자산을 구매하고 마지막에 판매함으로써 투자 수익을 최적화하는 것입니다. 이 전략은 하루 동안의 가격 변동을 활용하여 추가 수익을 얻기를 원하는 투자자에게 적합합니다.

전략 원칙

이 전략은 사용자가 설정한 매월의 구매일과 판매일에 따라 작동한다. 구매일 당일 다중 주문을 구매하고, 판매일 설정하면 판매일 평지; 판매일 설정하지 않으면 전략 종료일 당일 평지한다. 이렇게하면 매월의 다른 구매일로 인한 수익 차이를 테스트 할 수 있다.

구매 신호의 판단 논리는 다음과 같습니다: 사용자가 설정한 구매 날짜이고, 전략이 유효한 날짜 내에 있다면, 더 많은 상을 열립니다.

평정상태 신호 판단 논리는: 판매 날짜를 설정하고 판매 날짜가 되면 평정상태; 판매 날짜를 설정하지 않고 전략 종료 날짜를 넘어서면 평정상태이다.

전략적 이점

  1. 월간 가격 변동이 가장 큰 구매 지점을 찾아서, 초과 수익을 창출하기 위해 높은 빈도 내일 거래를 활용할 수 있습니다.
  2. 다른 구매 날짜의 수익률을 비교하여 최적의 구매 지점을 찾을 수 있습니다.
  3. 매월 뉴스 이벤트와 결합하여 최적의 구매 날짜가 변경될 수 있습니다.
  4. 짧은 라인과 긴 라인 거래의 균형을 위해 다른 판매 날짜를 설정할 수 있습니다.

전략적 위험과 해결책

  1. 구매 후 가격 폭락의 위험

    • 최대 손실을 줄이기 위해 스톱포인트를 설정합니다.
    • 유동성이 풍부한 거래 쌍을 선택하여 극심한 가격 변동을 피하십시오.
  2. 가장 좋은 구매 날짜의 변화 위험

    • 역사 데이터의 변화를 모니터링하고, 최적의 구매 지점을 조정합니다.
    • 고위험 기간 동안 포지션 규모를 줄여라
  3. 잘못된 설정으로 인해 손실이 발생할 위험이 있습니다.

    • 다양한 변수를 점진적으로 테스트하여 수익의 차이를 비교합니다.
    • 테스트를 위한 대표적인 시간 범위를 선택합니다.

전략 최적화 방향

  1. 다른 요소들과 함께 구매 지점을 결정합니다.

    • 한 달 동안의 주요 뉴스 사건의 가격에 대한 영향을 고려하는 것
    • 관련 디지털 자산의 가격 동향을 분석합니다.
    • “최고 구매 시점을 판단하기 위한 기계 학습 모델을 추가합니다”.
  2. 포지션 관리 메커니즘 최적화

    • 정지점 동적 평지점을 설정
    • 변동에 따라 포지션 규모를 조정합니다.
    • 장기간 포지션을 고려하십시오.
  3. 다른 거래 시장으로 확장

    • 더 많은 디지털 화폐 거래 쌍에 적용
    • 주식, 외환 등 시장에 적용
    • 크로스 마켓 중개 거래 전략을 설정

요약하다

이 전략은 서로 다른 구매 날짜로 가져오는 수익 차이점을 테스트하여 월간 가격 변동이 가장 큰 구매 지점을 찾습니다. 이것은 하루 중 높은 빈도 거래에서 이익을 추구하는 투자자에게 추가 수익을 가져올 수 있습니다. 다음 단계는 구매 시기를 판단하는 요소를 더 많이 도입하여 포지션 관리를 최적화하고 응용 시장을 확장함으로써 전략의 안정성과 수익 수준을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dennis.decoene

//@version=4
strategy(title="Buy and Hold, which day of month is best to buy?", overlay=true)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group="Starting From")
     
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group="Starting From")
     
startYear = input(title="Start Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Starting From")

endDate = input(title="End Date", type=input.integer,
     defval=2, minval=1, maxval=31, group="Until")
endMonth = input(title="End Month", type=input.integer,
     defval=10, minval=1, maxval=12, group="Until")
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Until")

entryday = input(title="Entry Day", type=input.integer,
     defval=26, minval=1, maxval=31, tooltip="When to enter (buy the asset) each month")
exitday = input(title="Exit Day", type=input.integer,
     defval=6, minval=1, maxval=31, tooltip="When to exit (sell the asset) each month")
     
useExitDay= input(title="Close position on exit day?", type=input.bool, defval=false, tooltip="Use the Exit Day to close each months position it true or close at the end of the period (if false)")
     
isEntryDay= (dayofmonth(time)==entryday)
isExitDay= (dayofmonth(time)==exitday-1)


inDateRange = true

if (isEntryDay and inDateRange)
    strategy.entry(id="Buy", long=true)
    
if (isExitDay and useExitDay)
    strategy.close_all()


// Exit open market position when date range ends
if (not inDateRange and not useExitDay)
    strategy.close_all()