2017-11-25 21 views
1

첫 번째 게시물입니다. 그것이 텍스트의 벽처럼 보이는 경우 미안 해요. 누군가가 내 질문을 이해하고이를 수행 할 수있는 예제 모듈을 제공하거나 시도 할 코드를 제공 할 수 있습니다. I는 시계열 CSV 데이터로 일하고 아래 예시 행, 열이파이썬 최적화 알고리즘을 사용하여 최대한 많은 점을 교차하도록 라인을 조정하십시오.

1999-10-26 21:00:00 68.81 68.83 68.07 68.19 
1999-10-27 21:00:00 68.19 68.2 66.83 67.43 
1999-10-28 21:00:00 67.43 68.06 66.91 68.06 
1999-10-29 21:00:00 68.06 68.11 66.31 66.66 
1999-01-11 22:00:00 66.66 67.15 66.09 66.63 
1999-02-11 22:00:00 66.63 67.38 66.42 66.58 
1999-03-11 22:00:00 66.58 67.73 66.42 67.48 
1999-04-11 22:00:00 67.48 67.81 66.54 66.76 
1999-05-11 22:00:00 66.76 68.2 66.54 67.87 

금융 가격 데이터에 원통형으로 공지되어 표현 될 수있는 어느 (날짜, O, H, L, C)이다 시각과 같이 : 이제

enter image description here

, 내가 무엇을 달성하려고하는 것은 지정된 허용 오차보다 더 많은 교차하지 않으면 서 자동으로 많은 심지 (수직 촛대에 라인) 가능한 한 교차 할 선을 그릴 것입니다 촛불의 수 (녹색 또는 적색 영역)

희망적이라고 생각합니다. 예. 많은 심지 (이 경우 양초 아래에 있음)가 교차하는 선은 66.4 주변의 위치 4에서 시작하고 위치 66.55까지 위치 경사 9까지 올라갈 것입니다 ...

줄을 기준으로 보일 것으로 상상합니다.

위의 그림은 내가 시작 위치를 제공하는 경우이 작업을 수행 할 수있는 모듈이 있습니까? 근본적으로 트렌드 라인 (곡선이 아님)을 기준으로 빨강/녹색 영역을 가로 지르는 것을 피하면서 근본적으로 가장 적합하지만 기본적으로 모든 점을 교차시키는 점 (점은 세로선이므로 x 축의 범위 임)

선이 대각선이기 때문에 너무 복잡하면 수평선이 같은 작업을 수행하는 예제를 제공 할 수 있습니다 (x 축에서 하나의 값). 예를 들어, 마지막 두 레코드의 데이터 L (네 번째 열)에 표시된 것처럼 66.54의 값도 작동합니다 (모든 심지를 통과하고 마지막 두 개를 터치합니다). 노랑색 선을 교차하거나 모든 로우 위크를 참조하십시오.

상관 없다 개시 위치 캔이 경우 값

(X 축)과 너무

조정

(예를 들어, I는의 위치 (5)를 선택할 수 사전 정의 된 지점에서 시작한다 라인 가장 낮은 지점 인 이미지)를 찾아 최상의 결과가 달성 될 때까지 계속해서 어디에서나 멈출 수 있습니다. 그런 다음이 두 점을 기준으로 각도 값을 사용하여이 선을 확장 할 계획입니다.

그래서 내가 찾고있는 출력은 실제로 대각선 추세선 인 경우 행의 끝 위치이거나 대각선 추세선 인 경우 x 축 값 (가로선)입니다. 출발점은 가능한 한 양초의 수직선을 교차해야하는 알고리듬 최적화 (시작점의 오른쪽 만 보임)에 기반하여 시작점 (A)과 종점을 선택하지만 교차점 수를 유지합니다 촛불 신체 부위가 허용 된 임계치 허용 오차보다 낮을 때까지 더 나은 해결책을 찾을 수 없습니다. (B)

저는 Bresenham의 라인 알고리즘과 다른 많은 것들을 보았습니다. 그러나이 timeseries 데이터에서 파이썬으로 이것을 정확히 구현하는 방법을 알지 못합니다. fbprophet을 사용하는 것이 더 쉬웠 으면 좋겠다

실제 csv 파일의 무게는 최대 500MB이며 최대 6 백만 행을 포함합니다. 매회 다른 결과를 가져 오는 유전자와는 달리 철저한 알고리즘을 선호합니다 ...

내가 그 동안이 작업을 수행하려고하는 방법에 대한 몇 가지 아이디어를했습니다,하지만 여전히 불분명 한 경우 과정을

속도를 예제와 함께 적절한 모듈을 찾을 수 없습니다 ... 나는 극대화 할 양초 중간에 보이는 수직선 (사진의 흰색 선)을 가로 지르는 횟수와 선택된 값으로 제한된 초록/빨강 영역을 교차 할 수있는 횟수를 유지하는 횟수. 만약 내가 제대로 이해하고 http://www.pyqtgraph.org/downloads/0.10.0/pyqtgraph-0.10.0-deb/pyqtgraph-0.10.0/examples/customGraphicsItem.py

답변

0

, 당신은 동일한 크기의 수직 선분의 집합으로 사선의 교차점의 수를 최대화하려면 :

나는 음모를 만들기 위해 visuallisation 예제 코드 pyqtgraph를 사용 (촛대를 가로 지르는 것에 대한 허용/금지는 질문을 조금 어둡게 만든다).

그리고 올바르게 이해하면 한 번에 백만 개의 세그먼트가있을 수 있습니다.

라인의 경사가 수정되는 경우, 라인이 수평이되고, 엔드 포인트 (단위 간격을 가정) 세그먼트 i 위해 양 m.i로 수직 변환되어 사용자가 이러한 방식으로 공간 전단 수 m하자.

그런 다음 세로 좌표를 증가시켜 끝점을 정렬하면 선을 평행 이동할 때 가로로 겹치는 세그먼트 수를 쉽게 얻을 수 있습니다. 이것은 정렬을 위해 N Log N 연산을 취하고, 카운팅 함수를 구성하는 연산은 N입니다.

이제 모든 경사면에서 가능한 교차 수를 얻을 수 있습니다. 이 함수가 충분히 부드러 우면 황금 비율 방법 또는 이와 유사한 방법으로이 함수의 최대 값을 검색 할 수 있습니다.

+0

제안에 감사 드리며 올바른 방향으로 나를 가리켜 주십시오. 추가 연구 후 나는 내가 찾고있는 것이 2보다 많은 요소로 +1 또는 -1 피어슨 상관 계수의 모든 가능성을 반환하는 알고리즘이라고 믿는다. – Cactus