시간 순서 전략

저자:차오장, 날짜: 2023-09-28 15:26:20
태그:

전반적인 설명

타이밍 주문 전략의 주요 아이디어는 사용자 정의 시간 지점에서 구매 및 판매 작업을 수행하는 것입니다. 이 전략은 사용자가 정확한 시간 지점을 설정할 수 있습니다. 이 시간 지점에서는 먼저 현재 위치를 판매하고, 그 다음 현재 가격보다 1% 아래로 한도 구매 주문을합니다. 이것은 주기적인 재균형을 매일 특정 시간에 수행 할 수 있습니다.

전략 논리

전략은 먼저 입력 함수를 사용하여 사용자에 의해 정의된 사용자 지정 시간 및 분을 얻으며 시간표 기능을 사용하여 주문 실행 시간을 생성합니다. 현재 시간이 지정된 시간 지점을 지나면 판매 및 구매 작업이 시작됩니다.

구체적으로, 전략은 먼저 현재 시간이 사용자 정의의 시작 및 종료 날짜 범위 내에 있는지 확인합니다. 만약 네, 지정된 주문 실행 시간 시점에 도달하면 먼저 시장 가격으로 현재 위치를 판매하고, 현재 가격의 99%에 한도 구매 명령을합니다. 이것은 특정 시간 시점의 현재 가격보다 1% 낮은 가격으로 재균형을 달성합니다.

이점 분석

이 전략의 가장 큰 장점은 수동 개입없이 특정 시간 지점에 정기적으로 포지션을 재균형 할 수 있다는 것입니다. 또한, 각 재균형은 현재 가격보다 약간 낮은 가격으로 구매하여 일부 초저수 구매 이점을 얻을 수 있습니다.

구체적인 장점은 다음과 같습니다.

  1. 완전히 자동화된 동작으로 수동 작업 비용을 줄입니다.

  2. 특정 시점에서의 포지션의 주기적인 재균형을 허용합니다.

  3. 매번 재균형 시 현재 가격보다 약 1% 낮게 매우 낮은 구매 기회를 얻습니다.

  4. 조정 가능한 재균형 시점, 유연한 조정

  5. 재균형 주기에 대한 사용자 정의 가능한 시작 및 종료 날짜, 백테스팅 최적화를 위해 편리합니다.

위험 분석

이 전략은 또한 몇 가지 위험을 가지고 있습니다.

  1. 만약 주기적인 재균형 시기가 잘못 선택된다면, 더 나은 구매 기회를 놓칠 수도 있고, 부적절한 시간에 매각될 수도 있습니다.

  2. 매수 가격은 매수 가격보다 1%만 낮아 매수 가격 스프레드는 각 재균형 주기에 충분히 낮아지지 않을 수 있습니다.

  3. 매매와 구매는 시장 주문이므로 어느 정도 미끄러질 수 있습니다.

  4. 만약 전략이 특정 시점에만 작동한다면, 그 시점 사이에 시장을 관리할 수 없습니다.

  5. 빈번한 재균형은 상대적으로 높은 거래 수수료를 발생시킬 것입니다.

대응 해법은:

  1. 적절한 재균형 시기를 선택하고 다른 기술적 지표와 결합합니다.

  2. 구매 가격 스프레드 매개 변수를 적절하게 높여

  3. 깊이와 휘발성이 낮은 제품을 선택하세요.

  4. 재균형 기간 동안 다른 위험 관리 전략과 결합합니다.

  5. 재균형의 빈도를 적절하게 조절하여 이점과 거래 비용을 균형 잡습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 거래 상품의 내일 주기의 특성에 따라 재균형 시점 선택을 최적화합니다.

  2. 다른 기술적 지표를 추가하여 불리한 시간에 재균형을 피합니다. 예를 들어 이동 평균 트렌드 지표를 결합합니다.

  3. 최저 구매 매개 변수를 최적화하여 이점과 거래 비용을 균형 잡습니다.

  4. 재균형 사이 포지션을 관리하기 위해 후속 스톱 손실/이익 취득을 채택합니다.

  5. 기계 학습 알고리즘을 사용하여 역사적인 데이터를 훈련하고 자동으로 재균형 시점을 최적화합니다.

  6. 시간 변화에 따라 주식 분할, 배당 등을 조정합니다.

요약

일반적으로 시간 순서 전략은 거래 프로세스를 자동화하고 주기적인 재균형을 통해 수동 운영 비용을 줄일 수 있습니다. 재균형 시간 포인트 선택, 구매 매개 변수 설정, 스톱 로스 / 영업 취득 및 알고리즘 개선과 같은 분야에서 최적화에 큰 여지가 있습니다. 또한 특정 거래 위험을 알아보고 적절한 위험 관리 조치를 취해야합니다. 전반적으로이 전략은 효율적인 자동 재균형을 찾는 양적 거래자에게 적합합니다.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
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/
// © ytrevor

//@version=4
strategy("Order At Specified Time", overlay=true)


// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time

inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input


// -- These inputs are for back testing. Feel free to change the start and end dates via input -- // 
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31) 
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)

betweenDates = true


// -- Order execution --  //
if betweenDates
    buyPrice = close*0.99 //Buy at 1% lower than selling price
    strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
    strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price




더 많은