Tuesday, 7 November 2017

Moving average algorytm python


I m w procesie tworzenia algorytmu handlu forex i chciałem spróbować mój strzał przy obliczaniu EMA Exponential Moving Averages Moje wyniki wydają się być poprawne w porównaniu do obliczeń zrobiłem ręcznie więc wierzę, że następująca metoda działa, ale po prostu chciałem dodatkowy zestaw oczu, aby upewnić się, że im nic nie brakuje. Należy zauważyć, że po prostu zwraca EMA za ostatnią cenę, nie zwraca tablicę EMA, ponieważ nie jest to, czego potrzebuję dla mojej aplikacji. Rekturacja jest dobrym narzędziem dla właściwej pracy, ale tutaj służy do prostego zapętlania Ponieważ taki kod jest trudniejszy do odczytania i przyczyny. Jest wolniejszy, ponieważ większość kodu w ema wymaga tylko jednokrotnego uruchomienia. okno spowodowane przepełnieniem stosu wywołania Python s. Proszę przynajmniej dokumentować co najmniej parametry każdej z funkcji, np. okno to długość okna, a pozycja ta liczy się do tyłu od końca danych W rzeczywistości rzeczy byłyby jaśniejsze, gdyby pozycja była normalna indeks forward i nto data. Raise wyjątku, gdy znajdziesz jakiś parametr ma nieprawidłową wartość Zwracając None zamiast spowoduje tylko bardziej mylący wyjątek później W rzeczywistości, jeśli próbuję 600 dostaję nieskończoną rekursję, ponieważ sma zwraca None, która sprawia, że ​​ema wywołuje sma w kółko. Przedszy punkt pokazuje również, że jeśli okno danych len 2 nie jest prawidłowe sprawdzenie ważności. 1 w danych - window 2 1 - window 1 don t wydaje się poprawne do mnie Chyba chcesz, aby dane - window 2 - window. The instrukcja return poprzednia jest w dziwnym miejscu, ponieważ w tym momencie obliczyłeś nowy currentema Jest to podstawa przypadku recursji, a zwyczajowo jest poradzić sobie z podstawową sprawą. Moja propozycja dla ema. answered Listopad 26 14 at 18 56.Pretty płytkiej recenzji. Nie musisz pisać klasy, co robisz i sugeruję, abyś obejrzał ten film Twoja klasa nie zawiera żadnych danych, a ty po prostu użyjesz swoich funkcji do tego samego podmiotu Chyba rzeczy byłoby łatwiejsze do zrozumienia, jeśli miałeś zdefiniować clas smethod, aby oczywiste, że wygrałeś naprawdę polegać na jakiejkolwiek instancji Jednak, nawet lepszym rozwiązaniem byłoby właśnie zdefiniować funkcje w module wskaźników. odpowiedzi na 24 listopada 14 w 18 04. Dziękuję za sugestie ja faktycznie miałem je jako classmethods i dyskutował przechodząc tam iz powrotem między nawet przy użyciu klasy lub po prostu definiowanie funkcji w module wskaźnika, które teraz zrobię ChrisC 25 listopada w 19 12. Chcę też obejrzeć film, świetne rzeczy ChrisC 25 listopada w 19 43.Your Odpowiedź.2017 Stack Exchange, Inc. Wiem, że to jest stare pytanie, ale o to rozwiązanie, które nie używa żadnych dodatkowych struktur danych lub bibliotek Jest liniowa w liczbie elementów listy wejściowej i nie mogę myśleć o innych sposób, aby to bardziej skuteczne, jeśli ktoś wie o lepszym sposobie przydzielenia wyniku, proszę dać mi znać. NEST to byłoby znacznie szybsze przy użyciu numpy tablicy zamiast listy, ale chciałem wyeliminować wszystkie zależności Byłoby to również możliwość poprawy wyników b y wielowątkowe wykonanie. Funkcja zakłada, że ​​lista wejściowa jest w jednym wymiarze, więc bądź ostrożna. UPD bardziej wydajne rozwiązania zostały zaproponowane przez Alleo i jasaarim. You może używać tego argumentu trybu. Określa sposób obsługi krawędzi, które wybrałem tutaj ważny tryb, ponieważ myślę, że to, jak większość ludzi spodziewa się, że działa, ale może masz inne priorytety Oto spisek, który ilustruje różnicę między trybach. 24 Marca 14 w 22 01. Podoba mi się to rozwiązanie, ponieważ jest czysta jedna linia i stosunkowo wydajna praca wykonana wewnątrz numpy Ale Alleo s Skuteczne rozwiązanie przy użyciu ma lepszą złożoność Ulrich Stern 25 września 15 w 0 31. Można obliczyć średnią bieżącej z. Na szczęście numpy zawiera funkcję convolve, którą możemy użyć do szybkości rzeczy do góry Średnia bieżąca jest równowaŜna z x x z wektorem, który jest długością N, ze wszystkimi członami równymi 1 N Numpadowa implementacja convolve obejmuje początkowe przejściowe, więc musisz usunąć pierwsze punkty N-1. Na Mój komputer, szybka wersja jest 20-30 razy szybsza, w zależności od długości wektora wejściowego i wielkości okna średniego. Uwaga, że ​​convolve zawiera ten sam tryb, który wydaje się, że powinien on odnosić się do początkowej przejściowej kwestii, ale dzieli się to między początkiem a końcem. Usuwa przejście od końca, a początek nie ma jednego. Cóż, myślę, że to kwestia priorytetów, nie potrzebuję tej samej liczby wyników, kosztem zboczu w kierunku zera nie ma tam danych BTW, jest to polecenie pokazujące różnicę między trykami trybów pełnych, takich samych, poprawnych splotów 200, tych 50, 50, trybu m dla mw trybach -10, 251, - 1, 1 1 tryby legend, loc dolne centrum z pyplotem i numpą przywożonymi lapisami Mar 24 14 at 13 56.pandas jest bardziej odpowiedni dla tego niż NumPy lub SciPy Jego funkcja rolik robi zadanie wygodnie Pozwala również zwrócić tablicę NumPy, gdy wejście jest tablicę. Trudno pokonać walcowanie w walce z każda niestandardowa czysta implementacja Pythona Oto przykładowa wydajność w stosunku do dwóch zaproponowanych rozwiązań. Są też ładne opcje, jak radzić sobie z wartościami krawędzi. Je zawsze jestem zirytowany przez funkcję przetwarzania sygnału, która zwraca sygnały wyjściowe o różnym kształcie niż wejście sygnalizuje, gdy oba wejścia i wyjścia mają taki sam charakter, np. oba sygnały czasowe Zerwanie korespondencji z powiązaną zmienną niezależną np. czas, generowanie lub porównywanie częstotliwości, a nie bezpośrednio, jeśli podzielisz to uczucie, możesz zmienić ostatni linie proponowanej funkcji jako ten sam powrót y windowlen-1 - windowlen-1 Christian O Reilly 25 sierpnia 15 w 19 56. Trochę późno na imprezę, ale zrobiłem własną własną funkcję, która NIE owija się wokół końców lub wkładek z zerami, które są następnie wykorzystywane do znalezienia średniej, jak również W kolejnym traktowaniu jest to, że również ponownie pobrać próbki sygnału w punktach rozmieszczonych liniowo Dostosować kod w celu uzyskania innych funkcji. Metoda jest si mple mnożenia matrycy ze znormalizowanym Gaussian kernel. A proste wykorzystanie na sinusoidalny sygnał z dodatkiem normalnego rozproszonego noise. This pytanie jest teraz nawet starszy niż kiedy NeXuS napisał o tym w zeszłym miesiącu, ALE jak jak jego kod dotyczy spraw krawędzi, jednak ponieważ to jest zwykła średnia ruchoma, to wyniki są opóźnione w stosunku do danych, które dotyczą do myślenia, że ​​operacje w sprawach krawędzi w bardziej satysfakcjonujący sposób niż tryby NumPy są takie same i pełne mogą być osiągnięte przez zastosowanie podobnego podejścia do metody opartej na splocie Wkład używa centralnej średniej bieżącej, aby wyrównać jej wyniki z ich danymi Gdy w oknie pełnego rozmiaru są dostępne dwa punkty, średnie kroki obliczane są z kolejno mniejszych okien na krawędziach tablicy Właściwie z kolejnego większych oknach, ale to jest szczegółowo implementacji. Jest to stosunkowo powolne, ponieważ używa wiolonczelu i może być sprobany dość dużo przez prawdziwą Pythonistę, jednak wierzę, że idea stands. answered 02 stycznia w 28 28. jest ładna, ale powolna, gdy szerokość okna rośnie Duże odpowiedzi dostarczają bardziej efektywne algorytmy, ale wydają się niezdolne do obsługi wartości krawędzi ja sam zaimplementował algorytm, który może obsłużyć ten problem dobrze, jeśli to problem został zadeklarowany jako parametr integracji wejściowej mergenum może być uważany za 2 windowwidth 1.I wiem, ten kod jest trochę nieczytelny, jeśli u go znaleźć przydatne i chcesz trochę rozszerzeń, proszę dać mi znać i będę aktualizować tę odpowiedź Ponieważ pisanie wyjaśnienia może kosztowałem mnóstwo czasu, mam nadzieję, że robię to tylko wtedy, gdy ktoś potrzebuje tego Proszę wybaczyć mi za moje lenistwo. Jeśli tylko u jesteś zainteresowany jego oryginalną wersją. Jest jeszcze bardziej nieczytelne pierwsze rozwiązanie pozbywa się problemów krawędziowych przez zerowe wypełnienie wokół tablica, ale drugie rozwiązanie zamieszczone tutaj obsługuje to w sposób trudny i bezpośredni. W moim ostatnim zdaniu starałem się wskazać, dlaczego pomaga błąd zmiennoprzecinkowy Jeśli dwie wartości są w przybliżeniu tym samym rzędu wielkości, a następnie dodać je oses mniej precyzyjnie niż jeśli dodałeś bardzo dużą liczbę do bardzo małej Kod łączy wartości sąsiadujące w taki sposób, że nawet sumy pośrednie powinny zawsze być rozsądnie bliskie wielkości, aby zminimalizować błąd zmiennoprzecinkowy Nic nie jest dowodem głupim, ale ta metoda ma uratował kilka bardzo słabo zrealizowanych projektów w produkcji Mayur Patel 15 grudnia 14 w 17 22. Alleo Zamiast robić jeden dodatek za wartość, będziesz robił dwa Dowód jest taki sam jak problem z odrobaczeniem, ale punktem tej odpowiedzi niekoniecznie jest wydajność, ale precyzyjne użycie pamięci dla uśrednionych 64-bitowych wartości nie przekroczy 64 elementów w pamięci podręcznej, więc jest przyjazne w użyciu pamięci, a także Mayur Patel 29 grudnia w 17 04. Mam zakres dat i pomiar na każdej z tych dni Chciałbym obliczyć wykładniczą średnią ruchomą dla każdego dnia Czy ktoś wie, jak to zrobić. I m new to python Nie wydaje się, że średnie są wbudowane w standardową bibliotekę Pythona, rikes mnie jak trochę dziwne Może nie patrz nie we właściwym miejscu. So, biorąc pod uwagę następujący kod, w jaki sposób można obliczyć przenoszona ważona średnia punktów IQ dla dat kalendarzowych. istnieje prawdopodobnie lepszy sposób na strukturę danych, wszelkie porady byłoby mile widziane. sked 28 stycznia 09 w 18 01.My python jest trochę rusty każdy może się swobodnie edytować ten kod, aby dokonać korekt, jeśli I ve messed up składnia jakoś, ale tu idzie. Ta funkcja porusza się do tyłu, od końca listy do początku, obliczając wykładniczą średnią ruchomą dla każdej wartości, pracując do tyłu, aż współczynnik wagi elementu będzie mniejszy niż podany epsilon. Na końcu funkcji, odwraca wartości przed powrotem listy, tak aby były one we właściwej kolejności dla rozmówcy. SIDE UWAGA, jeśli używałem języka innego niż Pythona, najpierw utwórz pustą tablicę w pełnym rozmiarze, a następnie wypełnij ją w kierunku wstecznym, tak że nie będę musiał go cofnąć na końcu. Ale nie sądzę, że możesz zadeklarować duża pusta tablica w pycie I na listach Pythona dołączanie jest znacznie tańsze niż prepending, dlatego zbudowałem listę w odwrotnej kolejności Proszę popraw mnie, jeśli się nie zgadzam. Argument alfa to współczynnik zaniku na każdej itercie Na przykład, jeśli używasz alfa wynoszącej 0 5, to dzisiejsza średnia średniej ruchomej będzie składać się z następujących ważonych wartości. Oczywiście, jeśli masz mnóstwo wartości, wartości z dziesięciu lub piętnaście dni temu wygrywają bardzo dużo do dzisiejszej średniej ważonej Argument epsilon umożliwia ustawienie punktu odcięcia, poniżej którego przestaniesz dbać o stare wartości, ponieważ ich wkład do dzisiejszej wartości będzie mało znaczący. 18 46. Nie wiem Python, ale za uśrednienie część, czy masz na myśli wykładniczy filtra dolnoprzepustowy form. where alfa dt tau, dt timestep filtra, tau stałej czasowej filtru zmienna forma timestep jest to, jak następuje, po prostu clip dt tau nie więcej niż 1 0.Jeśli chcesz filtrować coś w rodzaju daty, upewnij się, że konwertujesz do zmiennoprzecinkowej ilości jak kilka sekund od 1 stycznia 1970. odpowiedzi Jan 28 09 w 18 10.I znalazłem powyższy fragment kodu przez earino bardzo przydatne - ale potrzebowałem czegoś, co mogłoby ciągle wygładzić strumień wartości - więc ja refakturowałem go do tego. i używam go w ten sposób. gdzie produkuje następną wartość chcę konsumować. wypowiedzi 12 lutego 14 w 20 35.I m zawsze obliczania EMAs z Pandas. Here jest przykładem, jak to zrobić. Więcej informacji na temat Pandas EWMA. answered 4 października w 12 42. Don t nowsze wersje Pandas mają nowe i lepsze funkcje Cristian Ciupitu 11 maja 16 w 14 10.Zauważ, że w przeciwieństwie do arkusza kalkulacyjnego nie liczę SMA, a ja nie czekaj, aby wygenerować EMA po 10 próbkach To oznacza moje wartości różnią się nieznacznie, ale jeśli go wykresie, dokładnie po 10 próbkach W ciągu pierwszych 10 próbek obliczona EMA I jest odpowiednio wygładzona.

No comments:

Post a Comment