이동 평균 의사 코드


나는 본질적으로 this. The 위와 같은 값의 배열을 가지고있다, 나는 실제 코드에서 밀리 세컨드 당 1 개의 값을 모으고 나는 시간의 시점 전에 가장 가까운 피크를 찾기 위해 쓴 알고리즘의 출력을 처리 할 필요가있다. 논리는 위의 예제에서 0 36이 실제 피크이기 때문에 실패합니다. 그러나 알고리즘은 뒤로보고 0으로 가장 낮은 숫자 0 25를 보게됩니다. 그 전에 0 24로 감소합니다. 목표는이 값을 사용하는 것입니다. 그리고 그들을 조금 부드럽게 할 알고리즘을 적용하여보다 선형적인 값을 갖도록합니다. 즉, jaggedy가 아닌 curvy가되도록 내 결과를 좋아합니다. 내 값에 지수 이동 평균 필터를 적용하라는 말을 들었습니까? 이렇게하면 수학 방정식을 읽는 것이 정말 어렵고, 코드를 훨씬 잘 처리 할 수 ​​있습니다. 배열에서 값을 처리하고 지수 이동 평균 계산을 적용하여 어떻게 할 수 있습니까? 2 월 8 일 12 시부 터 20시 27 분에 계산합니다. 기하 급수적 인 이동 평균. 튜닝 매개 변수가 필요합니다. Java 5 이상을 사용하는 것으로 가정하면 약간의 클래스가 필요합니다. 원하는 감쇄 매개 변수를 사용하여 초기화하려면 0에서 1 사이의 튜닝이 필요하고 평균을 사용하여 필터를 작성해야합니다. 일부 mathmatical 재발, 코드로 변환 할 때 알아야 할 것은 수학자가 배열에 인덱스를 쓰고 아래 첨자로 시퀀스를 작성한다는 것입니다. 다른 도움이되는 몇 가지 표기법도 있습니다. 그러나 EMA는 필요한만큼 간단합니다 하나의 오래된 값을 기억하는 것은 필요하지 않습니다. 복잡한 상태 배열은 필요하지 않습니다. 대답 2 월 8 일 12시 20 분 42 초. TKKocheran 일들이 간단 할 때 꽤 좋지 않음 새로운 순서로 시작한다면, 새로운 평균을 구하십시오. 평균 시퀀스는 경계 효과로 인해 비트 주변에서 점프 할 것입니다. 그러나 다른 이동 평균을 가진 시퀀스를 얻을 수도 있습니다. 그러나 좋은 이점은 이동 평균 논리를 평균에 포함시키고 실험을 방해하지 않고 실험 할 수 있다는 것입니다 그는 프로그램의 나머지 부분을 너무 많이 사용했습니다. Donal Fellows 2 월 9 일 12시 0 분 06. 귀하의 질문을 이해하는 데 어려움을 겪고 있습니다. 그러나 어쨌든 대답하려고 노력할 것입니다 .1 귀하의 알고리즘이 0 36 대신 0 25를 찾았다면 잘못되었습니다. 단조로운 증가 또는 감소를 가정하기 때문에 항상 잘못되거나 잘못 될 수 있습니다. 항상 올라가거나 항상 내려갑니다. 모든 데이터를 평균화하지 않으면 데이터 포인트 --- 제시 할 때 --- 비선형입니다. 값을 두 지점 사이에서 계산 한 다음 배열을 tmin에서 tmax로 슬라이스하고 그 부분 배열의 최대 값을 찾습니다 .2 이제 이동 평균의 개념은 매우 간단합니다. 다음 목록이 있다고 가정하십시오. 1 4, 1 5, 1 4, 1 5, 1 5 두 숫자의 평균을 취하여 부드럽게 할 수 있습니다. 1 45, 1 45, 1 45, 1 5 첫 번째 숫자는 1 5 및 1 4 초의 평균이고 첫 번째 숫자는 두 번째 새 목록입니다. 1 4 1과 3 5의 평균이고 두 번째의 이전 목록은 세 번째의 새로운 목록의 평균은 1 5와 1 4 4와 3의 평균입니다. 3 ~ 4 단계로 만들었습니다. 또는 n 데이터가 훨씬 더 매끄러운 지 확인하십시오. 직장에서 이동 평균을 보는 좋은 방법은 Google Finance로 이동하여 주식을 선택하는 것입니다. Tesla Motors는 매우 변동이 심한 TSLA를 시도하고 하단의 기술을 클릭하십시오. 차트 특정 기간에 이동 평균을 선택하고 지수 이동 평균을 사용하여 차이를 비교합니다. 지수 이동 평균은 이것에 대한 또 다른 노력이지만 이전 데이터를 새 데이터보다 가중치를 낮추는 방법으로 평활화를 뒤쪽으로 바이어스하는 방법입니다 Wikipedia 항목을 읽으십시오. 이것은 대답보다 더 많은 코멘트입니다. 하지만 작은 주석 상자는 작은 행운을 빕니다. 행운을 빌어 요. 수학에 문제가 있으면, 지수 대신 간단한 이동 평균을 사용할 수 있습니다. 당신이 얻는 결과는 마지막 x 항을 x로 나눈 것입니다. 검증되지 않은 의사 코드. 두 번째 데이터 점에있을 때 마지막 5 항의 평균을 명확하게 나타낼 수 있기 때문에 데이터의 시작과 끝 부분을 처리해야합니다. , 이 이동 평균 합계를 계산하는 가장 효율적인 방법은 가장 오래된 것입니다. 그러나 이것은 무엇이 일어나고 있는지에 대한 개념을 얻는 것입니다. 2 월 8 일 12시 20 분 41 초. 신호의 이동 평균을 계산하려고합니다. 신호 값을 두 번 무작위로 업데이 트됩니다 그것을 계산하는 효율적인 방법을 찾고 있어요 시간 창 이상의 시간 가중치 평균, 나는 그것을 내 자신을 할 수있는 실시간으로, 하지만 그것은 생각보다 도전입니다. 자원의 대부분 나는 인터넷을 통해 정기 신호의 이동 평균을 계산하고 있지만 임의의 시간에 광산 업데이트를 계산하고 있음을 알았습니다. 그 누구도 좋은 자원을 알지 못합니다. 트릭은 다음과 같습니다. 무작위 업데이트를 int time, float 값으로 무작위로 얻습니다. 또한 업데이트가 시간 창에서 떨어져 나올 때를 추적해야하므로 시간 N에서 호출 한 알람을 설정하여 이전 업데이트를 계산에서 다시 고려하지 않도록합니다. 실시간으로 발생하면이 작업을 요청할 수 있습니다 체계 메소드 호출하기 void dropoffoldestupdate int N 시간에 호출 할 시간. 시뮬레이션 인 경우 운영체제에서 도움을 얻을 수 없으며 수동으로해야한다. 시뮬레이션에서 제공된 시간을 가진 메소드를 호출한다. 실시간과 관련이없는 인수로 그러나 합리적인 가정은 호출이 시간 인수가 증가하는 것과 같이 보장된다는 것입니다. 이 경우 경보 시간 값의 정렬 된 목록을 유지해야하며 각 업데이트 및 읽기 호출 시간 인수가 알람 목록의 헤드보다 큰지 확인하십시오. 알람 관련 처리가 가장 오래 걸리면 가장 오래된 업데이트가 삭제되고 헤드를 제거한 후 지정된 시간 이전의 모든 알람이 처리 될 때까지 다시 확인하십시오. 그런 다음 업데이트 호출을하십시오. 나는 지금까지 당신이 실제 계산을 위해 무엇을 할 것인가를 분명히하고 있습니다 만, 당신이 값을 읽는 데 사용하는 int float 메소드를 가지고 있다고 가정 할 경우에 대해 자세히 설명 할 것입니다. 목표는 다음과 같습니다. 이 호출을 가능한 한 효율적으로 만들려면 read 메소드가 호출 될 때마다 이동 평균을 계산하지 말고 마지막 업데이트 또는 마지막 경보의 값을 미리 계산하고 두 개의 부동 소수점 연산으로이 값을 조정하십시오. 마지막 업데이트 이후 시간 경과에 대한 계정 ie 아마 알람을 겹쳐 쌓은리스트를 처리하는 것을 제외하고는 일정한 수입니다. 바라기를 이것은 명확합니다 - 이것은 아주 간단한 알고리즘이어야하고 매우 효율적입니다. 나머지 최적화 문제 중 하나는 시간 윈도우 내에서 많은 수의 업데이트가 발생하면 읽기 또는 업데이트가없는 오랜 시간이 있고 읽기 또는 업데이트가 발생합니다. 이 경우 위 알고리즘은 점진적으로 업데이트하는 데 비효율적입니다. 값이 떨어지는 각 업데이트의 값 시간 창 너머의 마지막 업데이트 만 고려하므로 필요하지 않습니다. 따라서 이전의 모든 upda를 효율적으로 삭제할 수있는 방법이있는 경우 그것은 도움이 될 것입니다. 이렇게하려면 알고리즘을 수정하여 업데이트의 이진 검색을 수행하여 시간 윈도우 이전에 가장 최근의 업데이트를 찾아야합니다. 상대적으로 업데이트를 삭제해야하는 경우 업데이트를 점진적으로 업데이트 할 수 있습니다 삭제 된 각 업데이트마다 삭제해야하는 업데이트가 많은 경우 이전 업데이트를 삭제 한 후 값을 처음부터 다시 계산할 수 있습니다. 증분 계산에 대한 도움말 문장에서 증분 계산을 통해 의미하는 바를 명확히해야합니다. 몇 가지 부동 소수점 연산에 의해 마지막 업데이트 이후 경과 시간을 계산합니다. 초기 비 증분 계산. 그런 다음 증가하는 순서로 관련 업데이트를 반복합니다. 평균 총합 최종 갱신 횟수 timesincelastupdate windowlength. 정확히 하나의 업데이트가 창에서 제외되지만 새로운 업데이트가 없으면 합계를 조정하십시오. 그것이 마지막 창 시작의 시작으로 수정 된 그것의 타임 스탬프를 가지고있는 priorupdate임을 주목하십시오. 그리고 정확하게 하나의 업데이트가 창에 들어가지만 새로운 업데이트가 떨어지면, sum을 as로 조정하십시오. 명백한 것처럼, 이것은 대략적인 스케치입니다 만, 상환 기준에 따라 업데이트 당 O 1 작업이되도록 평균을 유지할 수 있습니다. 그러나 이전 단락의 추가 최적화에 유의하십시오. 이전 답변에서 언급 한 안정성 문제에 유의하십시오. 즉, 부동 소수점 오류가 많은 수의 증분 근사값이 좋고 샘플 사이에 최소 시간이 있으면 수퍼 샘플링을 시도 할 수 있습니다. 균등 간격의 시간 간격을 나타내는 배열이 있어야합니다. 최소 기간보다 짧고, 각 기간마다 최신 샘플을 저장하십시오. 간격이 짧을수록 평균값이 실제 값에 가까워집니다 e 기간은 최소값의 절반을 넘지 않아야합니다. 그렇지 않으면 샘플을 놓칠 수 있습니다. 대답 12 월 15 일 18시 12. 답변 주셔서 감사합니다. 총 평균 값을 실제로 캐싱하는 데 필요한 한 가지 개선 사항 우리는 항상 루프를 수행하지 않습니다. 또한, 사소한 점이 될 수 있지만, 값을 저장하기 위해 deque 나리스트를 사용하는 것이 더 효율적이지 않을 것입니다. 업데이트가 올바른 순서로 시작될 것이라고 가정하기 때문에 삽입이 더 빨라질 것입니다 지도보다 Arthur Dec 16 11 at 8 55. 예, 합계의 값을 캐시 할 수 있습니다. 지우는 샘플의 값을 빼고 삽입 한 샘플의 값을 더합니다. 예, deque 쌍 샘플, 날짜가있을 수 있습니다. 더 효율적으로지도를 선택했기 때문에 가독성을 높이기 위해지도를 선택했고 상행 경계표를 호출하기 쉽습니다 항상 올바른 코드를 먼저 작성한 다음 점진적 변경을 측정하고 측정 Rob Dec 16 11 at 15.00.Note 분명히 여기에 접근하는 방법이 아닙니다. 여기에 남겨 두십시오. 이 접근법에 무엇이 잘못되었는지에 대한 참조를 위해 코멘트를 확인하십시오. UP DATED - Oli의 의견에 기반하여 그가 이야기하고있는 불안정성에 대해 확신하지 못함. 값에 대한 도착 시간의 정렬 된지도 사용 가치와 함께 정렬 된지도에 도착 시간을 추가하고 이동 값을 업데이트합니다. average. warning 이것은 pseudo-code입니다. 완전히 풀리지는 않았지만 아이디어를 얻었습니다. 주목할 사항 위의 코드는 의사 코드입니다. 적절한 맵을 선택해야합니다. 반복 할 때 페어를 제거하지 마십시오. iterator를 무효화하고 다시 시작해야 할 것이다. 아래의 Oli의 주석도 참고하라. 대답 12 월 15 일 11시 12 월 22 일. 이 방법은 각각의 값이 존재하는 window-length의 비율을 고려하지 않는다. 덧셈과 뺄셈은 부동 소수점 형에 대해서만 안정하다 Oliver Charlesworth 12 월 15 일 12시 29 분. OliCharlesworth - 설명에 몇 가지 중요한 요점을 놓쳐서 죄송하다. 나는 업데이트 할 것이다. Dennis Dec 15 11 at 12 33 . 시간 가중치는 너희이다. 다른 문제 그러나 내가 말하는 것에 대한 것이 아니라 새로운 가치가 처음 창에 들어갈 때 평균에 대한 기여도는 미미하다는 것을 의미합니다. 새로운 가치가 나타날 때까지 그 기여도는 계속 증가합니다 Oliver Charlesworth Dec 15 11 at 12. 35. 지수 이동 평균 - EMA. BREAKING DOWN 지수 이동 평균 - EMA. 12 일 및 26 일 EMA가 가장 인기있는 단기 평균이며 이동 평균 수렴 확산 MACD와 같은 지표를 만드는 데 사용됩니다 및 퍼센트 가격 발진기 PPO 일반적으로 50 일 및 200 일 EMA는 장기 추세의 신호로 사용됩니다. 기술적 분석을 사용하는 조사자는 올바르게 적용될 때 이동 평균을 매우 유용하고 통찰력있게 찾지만 부적절하게 사용되거나 혼란을 야기 할 수 있습니다 오해 기술적 분석에서 일반적으로 사용되는 모든 이동 평균은 본질적으로 지연 지표입니다. 따라서 특정 시장에 이동 평균을 적용하여 얻은 결론 차트는 시장 이동을 확인하거나 그 힘을 나타 내기위한 것이어야합니다. 이동 평균 지표 라인이 시장에서의 중요한 움직임을 반영하여 변경을 가할 때까지, 시장 진입의 최적 지점은 이미 통과되었습니다. EMA는 이 딜레마를 어느 정도 완화 할 수 있습니다. EMA 계산은 최신 데이터에 더 많은 가중치를 주므로 가격 조치를 좀 더 엄격하게 받아 들여 더 신속하게 대응합니다. 이는 EMA를 사용하여 거래 엔트리 신호를 유도하는 경우 바람직합니다. EMA를 해석합니다. 모든 이동 평균 지표와 마찬가지로 시장 동향에 훨씬 더 적합합니다. 시장이 강력하고 지속적인 상승 추세에있는 경우 EMA 지표는 상승 추세를 나타낼 것이며 반대의 경우는 하락 추세를 나타낼 것입니다. 경계심이있는 상인은 EMA 라인의 방향뿐만 아니라 하나의 술집에서 다음 술어로의 변화율의 관계 예를 들어, 강한 상승 추세의 가격 행동이 평평 해지고 반전되기 시작하면 EMA의 차율 한 표시 줄에서 다음 표시까지는 표시 줄이 평평 해지고 변화율이 0이 될 때까지 감소하기 시작합니다. 지연 효과가 있기 때문에이 시점 또는 이전에 몇 개의 막대로 인해 가격 조치가 이미 이루어져야합니다 따라서 EMA의 변화율이 지속적으로 감소하는 것을 관찰하는 것은 이동 평균의 지연 효과로 인한 딜레마에 대처할 수있는 지표로 사용될 수있다. EMA의 용도. EMA는 일반적으로 중요한 시장 움직임을 확인하고 그 타당성을 측정하기위한 다른 지표 일중 및 빠르게 움직이는 시장을 거래하는 거래자의 경우 EMA가 더 적합합니다. 자주 거래자가 EMA를 사용하여 거래 바이어스를 결정합니다. 예를 들어 일일 차트의 EMA에 강한 상향 추세, 일일 상인의 전략은 장부에서 만 일간 차트로 거래하는 것일 수 있습니다.

Comments