매월 구매 날짜에 기초한 양적 투자 전략

저자:차오장, 날짜: 2023-11-24 14:10:23
태그:

img

전반적인 설명

이 전략의 핵심 아이디어는 최적의 투자 수익을 달성하기 위해 해당 날짜에 디지털 자산을 구매하고 달 말에 판매하여 매월 최고의 구매 날짜를 찾는 것입니다. 이 전략은 하루 내 가격 변동의 이점을 통해 과도한 수익을 얻고자하는 투자자에게 적합합니다.

전략 원칙

이 전략은 사용자가 정의한 월간 구매 날짜와 판매 날짜를 기반으로 실행됩니다. 자산 구매를 통해 구매 날짜에 장점을 취하고 설정된 경우 판매 날짜에 포지션을 닫습니다. 그렇지 않으면 전략 종료 날짜에 포지션을 닫습니다. 이것은 다른 월간 구매 날짜에서 수익 차이를 테스트 할 수 있습니다.

구매 신호의 논리는: 사용자가 정의한 구매 날짜이고 전략의 유효한 날짜 범위 내에 있다면, 길게 가십시오.

클로즈 포지션 신호의 논리는 다음과 같습니다. 판매 날짜가 설정되어 있고 현재 판매 날짜라면, 클로즈 포지션입니다. 판매 날짜가 없지만 전략 종료 날짜를 넘어서면, 또한 클로즈 포지션입니다.

전략 의 장점

  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()
     

더 많은