금융 시장의 백 테스트 및 실시간 분석에 사용할 대형 (150,000x7) 데이터 프레임이 있습니다. 데이터는 5 분 간격으로 투자 차량의 상태를 나타냅니다 (구멍이 있지만). 그것은 다음과 같습니다 (하지만 더 이상) :R : 시간대에 따라 데이터 프레임을 효율적으로 하위 집합으로 지정
pTime Time Price M1 M2 M3 M4
1 1212108300 20:45:00 1.5518 12.21849 -0.37125 4.50549 -31.00559
2 1212108900 20:55:00 1.5516 11.75350 -0.81792 -1.53846 -32.12291
3 1212109200 21:00:00 1.5512 10.75070 -1.47438 -8.24176 -34.35754
4 1212109500 21:05:00 1.5514 10.23529 -1.06044 -8.46154 -33.24022
5 1212109800 21:10:00 1.5514 9.74790 -1.02759 -10.21978 -33.24022
6 1212110100 21:15:00 1.5513 9.31092 -1.17076 -11.97802 -33.79888
7 1212110400 21:20:00 1.5512 8.84034 -1.28428 -13.62637 -34.35754
8 1212110700 21:25:00 1.5509 8.07843 -1.63715 -18.24176 -36.03352
9 1212111000 21:30:00 1.5509 7.39496 -1.49198 -20.65934 -36.03352
10 1212111300 21:35:00 1.5512 7.65266 -1.03717 -18.57143 -34.35754
데이터는 R에 미리로드,하지만 내 다시 테스트하는 동안 나는 두 가지 기준하여 부분 집합해야
첫 번째 기준은이다 미래로 들여다 보지 않으려면 슬라이딩 윈도우. 창은 백 테스트에서 5 분 간격으로 5 분마다 전체 창이 미래로 이동하도록되어 있어야합니다. 나는 이런 식으로 할 수있는이 부분 :
require(zoo)
zooser <- zoo(x=tser$Close, order.by=as.POSIXct(tser$pTime, origin="1970-01-01"))
window(zooser, start=A, end=B)
두 번째 기준은 time of day
을 통해 슬라이드와 특정 일에 입력 시간 의 N
분 내에있는 항목 만 포함하는 하나의 창을 슬라이딩 다른이지만, .
예 : 윈도우의 크기는 2 hours
이며, 입력 시간 12:00PM
다음 창이 이것은 내가 문제 파악을 데 부분이다 Time
10:00AM
사이
2:00PM
모든 행을 포함해야하는 경우.
편집 : 내 데이터에 구멍이있어 연속적인 두 행이 5 분 이상 떨어져있을 수 있습니다. 데이터는 다음과 같습니다 (매우 확대)
창문이 간격을 통해 이동함에 따라 창 내부의 점 개수가 달라집니다. 질문에 표시된 데이터 프레임은 다음 동물원을 만드는 것입니다
SET @qTime = Time(FROM_UNIXTIME(SAMP_endTime));
SET @inc = -1;
INSERT INTO MetIndListBuys (pTime,ArrayPos,M1,M2,M3,M4)
SELECT pTime,@inc:[email protected]+1,M1,M2,M3,M4
FROM mergebuys USE INDEX (`y`) WHERE pTime BETWEEN SAMP_startTime AND SAMP_endTime
AND TIME_TO_SEC(TIMEDIFF(Time,@qTime))/3600 BETWEEN 0-HourSpan AND HourSpan
;
이러한 인덱스 값은 적어도 내 시간대의 오후 12시 근처에 있지 않습니다. –
그래, 네가 맞아 ... 나는 단지 무작위로'12:00 PM'을 선택했다. –