Wednesday 6 December 2017

C sharp wykładnicza ruchoma średnia


Jednym z możliwych sposobów podejścia jest posiadanie metody zwracającej jądro. Z tego, co jestem w stanie zobaczyć, wejścia do tej metody byłoby kerneltype. ja. i inneInputy. Proste podejście byłoby takie: Jest to oczywiście straszne, strasznie surowe i można dokonać wiele udoskonaleń, ale ma to na celu tylko punkt. Chciałbym użyć interfejsu do reprezentowania jądra, a klasy otrzymane na jądro. Z mojego doświadczenia wynika, że ​​produkuje wystarczająco czytelny i konserwowalny kod, ale zawsze jest miejsce na poprawę. odpowiedź na sierpień 14 14: 20Regulacja średnią - EMA PRZECIW ŚREDNIA Średnia przemieszczająca się - EMA 12 i 26-dniowe EMA są najpopularniejszymi krótkoterminowymi średnimi i są wykorzystywane do tworzenia wskaźników, takich jak średnia ruchoma rozbieżność w konwergencji ( MACD) i procentowego oscylatora cen (PPO). Ogólnie, 50- i 200-dniowe EMA są wykorzystywane jako sygnały długoterminowych trendów. Handlowcy, którzy stosują analizę techniczną, wskazują, że ruchome średnie są bardzo przydatne i wnikliwe, gdy są stosowane prawidłowo, ale powodują spustoszenie, gdy są niewłaściwie wykorzystywane lub są błędnie interpretowane. Wszystkie średnie ruchome powszechnie stosowane w analizie technicznej są ze swej natury wskaźnikami słabiej rozwiniętymi. W konsekwencji wnioski wyciągnięte z zastosowania średniej ruchomej do konkretnego wykresu rynkowego powinny być potwierdzeniem ruchu na rynku lub wskazaniem jego siły. Bardzo często, kiedy ruchoma średnia linia wskaźników dokonała zmiany odzwierciedlającej znaczny ruch na rynku, optymalny punkt wejścia na rynek już minął. EMA służy do łagodzenia tego dylematu do pewnego stopnia. Ponieważ obliczenia EMA wiążą się z najnowszymi danymi, uciska akcję cenową nieco mocniej, a zatem reaguje szybciej. Jest to pożądane, gdy EMA jest wykorzystywany do uzyskania sygnału wejściowego do obrotu. Interpretacja EMA Podobnie jak wszystkie przeciętne wskaźniki ruchomości, są one znacznie lepiej dostosowane do trendów rynkowych. Kiedy rynek jest w silnym i trwałym trendu. linia wskaźników EMA pokaże również tendencję wzrostową i vice versa dla tendencji spadkowej. Czujny przedsiębiorca nie tylko zwróci uwagę na kierunek linii EMA, ale również relację szybkości zmian z jednego paska do jednego. Na przykład, gdy akcja cenowa silnej trendu zacznie się spłaszczać i odwrócić, tempo zmian EMA z jednego paska do drugiego zacznie się zmniejszać do czasu, gdy linia wskaźnika spłaszczy, a stopa zmian będzie równa zero. Z powodu efektu opóźnienia, w tym momencie, a nawet kilku barów, akcja cenowa powinna już się odwrócić. Wynika z tego, że obserwowanie konsekwentnego zmniejszenia szybkości zmian EMA mogłoby być wykorzystane jako wskaźnik, który mógłby przeciwdziałać dylematowi spowodowanemu przez opóźniony wpływ średnich kroczących. Typowe zastosowania EMA EMA są powszechnie stosowane w połączeniu z innymi wskaźnikami w celu potwierdzenia znacznych ruchów na rynku i pomiaru ich ważności. Dla przedsiębiorców, którzy prowadzą handel na rynku w ciągu dnia i szybko rozwijających się rynków, EMA jest bardziej stosowna. Często handlowcy używają EMA do określenia nastawienia do handlu. Na przykład, jeśli EMA na wykresie dziennym wykazuje silną tendencję wzrostową, intraday strategia handlowa może polegać na handlu tylko z długiej strony na wykresie śródrocznym. Wydaje mi się, że użycie wczorajszej EMA, gdy jej pierwszy dzień ( a zatem nie ma wczoraj) może być oparta na różnych danych, w zależności od tego, które artykuły czytasz. Nie jestem ekspertem w magazynie, więc po prostu idę na to, co czytałem. Czytałem w artykule dotyczącym manekinów, z którymi się łączyłem, że można to zrobić w taki sposób, w jaki pokazałem ci, a to ma się rozpocząć od pierwszych dni zamykania wartości w ciągu czwartorzędu EMAquot. Możesz też użyć średniej z dni kończących się w tym okresie (zakładam, że SMA). ale wygląda mi na to, że jest używany tylko dla pierwszej obliczonej wartości (i używanej jako kwota dni EMAquot w formule), a nie sposobem, w jaki to zrobiłeś. W zrzucie ekranu z poprzedniego posta ta wartość SMA3 w 1020, 27.733 nie zostanie umieszczona w kolumnie dla EMA3 w 1020, ale została użyta w obliczeniach dla EMA3 w 1018 jako kwota dni EMAquot. Tak więc, podczas gdy SMA3 ma zero dla 1018 i 1019, EMA3 nie ma zer z nich. EMA3 dla tych dwóch dat powinna wynosić 28.017 i 27.909. Tak więc, w moim kodzie, w którym domyślnie usunęłam poprzedni EMA do SMVClose, możemy to zmienić w następujący sposób: Ponownie, jest to oparte na tym, co przeczytałem iw artykule Dummies, które to pokazuje. Naprawdę myślę, że tego właśnie chcesz. Bonnie DeWitt C MVP Oznaczone jako odpowiedź przez newandold Niedziela, Grudzień 21, 2017 5:33 AM czwartek, 18 grudnia 2017 4:52 PM Będzie to o wiele łatwiejsze, jeśli zmienisz kod na ListltEmaDatagt, jak już wspomniałem w poprzednia odpowiedź. To, co wcześniej sugerowałem: gtgtadd właściwości SMA tej klasy danych. Zadzwoniłem do klasy EmaData, ale to dlatego, że myślałem, że obliczasz tylko wartości EMA, ale możesz iść dalej i dodać do niej właściwości SMA. Następnie modyfikuj metody, aby użyć tej samej listy do obliczania pierwszej SMA, a następnie EMA (prawdopodobnie będziesz potrzebować wielu pętli przez List).ltlt Po przejściu do listy i obliczeniu wartości SMA, używając prawidłowej wartości SMA dla Twoja początkowa EMA będzie dużo łatwiejsza. Wystarczy użyć tego samego kodu zapętleniowego, który pokazałem we wcześniejszej odpowiedzi do obliczenia EMA (ale zamiast tego zrobiłem), użyj innej wyjściowej EMA opartej na SMA. Bonnie DeWitt C MVP Oznaczone jako odpowiedź przez newandold Sunday, December 21, 2017 5:33 AM Friday, December 19, 2017 11:28 PM Kiedy znajdziesz się w uproszczeniu kodu, zawsze zastanów się nad utworzeniem nowej metody, aby umieścić niektóre z nich kod. To, co zrobiłem, polegało na umieszczeniu powtarzającego się kodu w nowej metodzie: zamiast robić to wszystko w oryginalnej pętli, po prostu zadzwoń do nowej metody: Isnt that clean cleaner Bonnie DeWitt C MVP Oznacza jako odpowiedź newandold Niedziela, 21 grudnia 2017 5:33 AM sobota, 20 grudnia 2017 5:44 PM Wszystkie odpowiedzi Zgodnie z Twoim tytułem, wspomniałeś o przekątnej wykładniczej, masz na myśli EMA w PowerPivot. Jeśli tak, to jest specjalne forum dla Twojego problemu, oto link, SQL Server gt Power Pivot. gtgt Próbuję, ale nie miałem tego wc podobnie jak w vb (również bardzo bardzo wolno w vb), a wynik w c jest inny, a następnie vb Więc co chcesz osiągnąć Chcesz zmienić kod, który wysłałeś in to Cor anything have a nice day Staramy się lepiej zrozumieć opinie klientów na temat pomocy społecznej, więc uczestnictwo w projekcie wywiadu byłoby mile widziane, jeśli masz czas. Dziękujemy za pomoc w tworzeniu forów społecznościowych doskonałym miejscem. Kliknij TUTAJ, aby wziąć udział w ankiecie. Środa, 03 grudnia 2017 7:03 AM Informacje o pytaniach w skrócie 1. Kod C i VB dla tego samego algorytmu EMA zwraca inny wynik. 2. Kod VB jest bardzo wolny. Na pierwsze pytanie. Czy C zwraca błąd Jeśli tak możesz podzielić się kodem C, jak wdrożysz algorytm EMA, aby pozwolić mi zrobić jakiś lokalny test Byłoby bardzo wdzięczny, jeśli podasz bardziej szczegółowe informacje. Drugie pytanie Staramy się lepiej zrozumieć opinie klientów na temat wsparcia społecznego, więc Twój udział w projekcie wywiadu byłby bardzo ceniony, jeśli masz czas. Dziękujemy za pomoc w tworzeniu forów społecznościowych doskonałym miejscem. Kliknij TUTAJ, aby wziąć udział w ankiecie. Czwartek, 04 grudnia 2017 10:17 Nie jestem pewien co to jest Twoje pytanie, ale podejrzewam, że ma to coś wspólnego z kolorem komórki na podstawie porównania niektórych obliczeń Myślę, że mówisz, że porównanie różni się od C niż w VB. Jedyne co mogę sobie wyobrazić, to pytanie: czy twoje wartości są zapisywane jako podwójne lub dziesiętne Dwójki nie są dobre podczas dokonywania porównań, podczas gdy nie masz tego problemu z dziesiętnymi. Powinieneś przechowywać dane jako zmienne dziesiętne. Heres blog post napisał na ten temat: Bonnie DeWitt C MVP Piątek, 05 grudnia 2017 4:40 PM Okresy czasowe 3 Mnożnik: (2 (przedziały czasowe 43 1)) Mnożnik EMA x 43 EMA (poprzedni dzień) Chciałbym zastosować formułę EMA przy użyciu pliku przecinkowego txt i wyświetlić ją w widoku datagridview 1- pojedynczym elementem jako przepływ 2 - przez wszystkie elementy (otrzyma najnowsze zdarzenie rekordu) jako przepływ po obliczeniu Używam stanu przepływu, aby uzyskać kolor datagridview dane za pomocą pliku txt Ciągle pokazujesz te same rzeczy w kółko. To nie pomaga nikomu z nas dokładnie zrozumieć, gdzie masz problem. Czy mógłbyś po prostu wytłumaczyć, gdzie ty jesteś, a nie powtarzasz zdjęć lub danych ponownie, które już widziałem, że gazillion razy. Jeśli porównania są prawidłowe, może to mieć coś wspólnego z podwójnym lub dziesiętnym, jak już powiedziałem wcześniej. Jeśli masz problemy z pobieraniem danych z pliku tekstowego, to jaka część jest zablokowana Jeśli utkniesz w wyświetlaniu danych w siatce, to gdzie dokładnie jest problem Jeśli jej nie ma, to na jakie pytanie trzeba odpowiedzieć Jestem pewny, że nie tylko ten zdezorientował się tym. Bonnie DeWitt C MVP Piątek, Grudzień 05, 2017 10:19 PM Ciągle pokazujesz te same rzeczy w kółko. To nie pomaga nikomu z nas dokładnie zrozumieć, gdzie masz problem. Czy mógłbyś po prostu wytłumaczyć, gdzie ty się zatrzymałeś, a nie powtarzasz zdjęć lub danych jeszcze raz, które już widziałem, że gazillion razy. Jeśli porównania są prawidłowe, może to mieć coś wspólnego z podwójnym lub dziesiętnym, jak już powiedziałem wcześniej. Jeśli masz problemy z pobieraniem danych z pliku tekstowego, to jaka część jest zablokowana Jeśli utkniesz w wyświetlaniu danych w siatce, to gdzie dokładnie jest problem Jeśli jej nie ma, to na jakie pytanie trzeba odpowiedzieć Jestem pewny, że nie tylko ten zdezorientował się tym. Bonnie DeWitt C MVP jak obliczyć EMA (średnia posuwana średnia ruchoma) dane źródłowe to plik przecinkowy sobota, 06 grudnia 2017 5:24 AM Rozumiem teraz formułę z linku, który wysłałeś, formułka sama w sobie jest całkiem prosta. Ale w jakiej części jest problem z czytaniem z pliku tekstowego lub co zrobić z numerami po przeczytaniu ich z pliku tekstowego lub jak je wyświetlić w siatce? dlaczego nie pokażesz nam fragmentów Twojego kodu, a konkretnie tego, że masz kłopoty. To może być łatwiejsze dla każdego, więc nie musimy się zgadywać, co musisz wiedzieć. I tylko po to, I Googled przeliczyć ema cquot i znaleźć kilka linków, które mogą pomóc. Nie wiem na pewno, bo nie mogę zrozumieć, na jakiej stronie się trzymasz, ale sprawdź je: Ostatni artykuł używa darmowej biblioteki Open Source o nazwie TA-Lib, Technical Analysis Library (tam znajduje się link do kliknięcia w artykuł). Bonnie DeWitt C MVP Zmieniony przez BonnieB MVP, Moderator sobota, 06 grudnia 2017 6:06 Wyjaśnienie klucza sobota, 06 grudnia 2017 6:05 Czy próbowałaś przejść przez kod w debuggerze Po przeczytaniu w pliku tekstowym, foreach przez linie, jeśli: jeśli (ComName SplitString0) będzie zawsze fałszem, zainicjowałeś ComName do pustego ciągu. ComSize zawsze będzie równa zero, a następna pętla nie będzie miała nic wspólnego. Więc tu masz problem. Próbowałem uruchomić swój kod, a pierwszą rzeczą, którą zrobiłem, było ustawienie punktu przerwania debugera po jego przeczytaniu w pliku tekstowym. To, jak znalazłem ten problem. Spróbuj użyć debuggera, aby przejść przez swój kod. Pomoże Ci łatwiej zlokalizować problemy. Bonnie DeWitt C MVP Sobota, 06 Grudnia 2017 14:39 Zmienić kod tylko ComName pokazać w DataGridView3, a reszta nie pokazano, ale kiedy klikam w komórce, które pokaże, a ja klikam na innym, to pokaże a poprzedni zostanie ukryty ponownie wynik, który otrzymuję SMA (prosta średnia ruchoma) nie dla EMA (mnożona średniej ruchomej) Saturday, December 06, 2017 5:26 PM tylko ComName pokazać w DataGridView3 i reszta nie pokazano ale kiedy klikam w komórce to pokaże i jeśli kliknę na inny, to pokaże, a poprzednie będzie ukryte ponownie Nie widzę tego zachowania. To wszystko pokazuje dobrze w mojej sieci. W projekcie po prostu upuściłem DataGridView na mój formularz, poszedłem do właściwości siatki, a następnie do kolekcji kolumn i dodał 6 kolumn. Nie zrobiłem nic innego, i to wszystko się dobrze. Musisz robić coś innego w sieci, co powoduje zachowanie, które widzisz, ale nie jestem pewien, z góry, co może być przyczyną tego. Być może kolumny są wystarczająco szerokie Czy zrobiłeś jakieś formatowanie w nich Czy obsługujesz dowolny rodzaj zdarzeń rzędu lub komórek, które mogą robić trochę dziwne rzeczy Bonnie DeWitt C MVP sobota, 06 grudnia 2017 5:58 PM Sprawdzę to dziękuję w sobotę, 06 grudnia 2017 6:19 Witamy. dodaj komentarz na temat Twojego postępu Bonnie DeWitt C MVP sobota, 06 grudnia 2017 10:14 dla DataGridView3 pracuje teraz, aby formuła nie działała i próbuję to również, ale obie nie działają tym, czego nie mogę osiągnąć Pierwszy EMA poprzedniego dnia) (suma z ostatnich trzech (cena zamknięcia) 3) Powinienem użyć bliskiej ceny jako początek EMA, więc będzie (27.1) stan 27.733 zielonego) z uwzględnieniem zakończenia okresu (np. EMA w ciągu 3 dni będzie miała dwie ostatnie wiersze jako (0), ponieważ jest mniej niż 3. Myślę, że masz pewność, że zielony zamiast EMA3 27.1 zamiast 27.33, ale dwa ostatnie poprawnie wynosi 0. Jest to poprawne Jeśli więc mam prostą poprawkę dla Ciebie. Nie jestem pewien, który z dwóch fragmentów kodu pokazałeś właśnie w ostatnim poście są te, które już używasz, ale Im przy użyciu kodu z poprzedniego postu (przed ostatnim). musisz to zrobić, dokonaj następujących zmian: To powinno to zrobić. działało ono dla mnie z wersją kodu Im używającego. Bonnie D eWitt C MVP niedziela, Grudzień 07, 2017 4:46 PM to nie działa, ale poniżej jest dane z pliku tekstowego i sztuczka w EMA (poprzedni dzień), jak to będzie na początku tego 1- przy użyciu ścisłej ceny, jak zrobiłeś w ostatnim poście 2 - używając prostej średniej ruchomej, proszę o jej ponowne podanie. I give up Okresy czasu 3 Mnożnik: (2 (przedziały czasowe 43 1)) Mnożnik EMA x 43 EMA (poprzedni dzień) Chciałbym zastosować formułę EMA używając pliku przecinkowego txt i wyświetlić ją w widoku datagridview 1- po pojedynczym elementu jako przepływ 2 - przez wszystkie elementy (otrzymasz najnowsze wydarzenie rekordu), jak przepływ danych za pomocą pliku txt, aby uzyskać więcej informacji o EMA nie, gdy używam całego kodu, który zrobiłem w dużym pliku txt będzie bardzo wolno Dziękuję bardzo dla Twojej pomocy naprawdę doceniam to tak, ale nie działa dla pliku tekstowego i to pierwszy post, który rozwiązuje EMA odczytu z przecinka pliku txt. Wyszukuję internet, ale nie znalazłem. nawet jeśli zrobiłem to przez kod powyżej, że nadal nie robi to dobrze zrobiłem prostą średnią ruchu w c sposób, który kodowałem powyżej, ale nie jest skuteczny. jest bardzo powolne dla dużych rekord jest jQuery, ale potrzebuję go jako c więc szukam innego kodu, który może obsłużyć bardzo duży rekord z warunkiem koloru komórki datagridview jak poniżej int DLaetRow DataGridView3. Wydziwianie. Count - 2 if (ema3 gt matematyczny Abs ((((2) (smvClose)) 100) 43 (smvClose))) DataGridView3. Rzędy DLaetRow. Komórki 3. Styl. Kolor BackColor. LightGreen else if (ema3 lt matematyka Abs ((((2) (smvClose)) 100) - (smvClose))) DataGridView3. Rzędy DLaetRow. Komórki 3. Styl. Kolor BackColor. Red Edytowane przez newandold wtorek, 09 grudnia 2017 9:33 PM wtorek, 09 grudnia 2017 21:32 OK, w końcu mam czas, aby to zrobić, i powinienem był pomyśleć, że to zrobię tak od samego początku. Utwórz klasę EmaData, aby przechowywać obliczone wartości dla każdego rzędu danych i użyć listy ListltEmaDatagt do przechowywania ich wszystkich. Następnie można wykonać wszystkie obliczenia w jednej pętli przez dane. To, co skończyło z: Bonnie DeWitt C MVP sobota, 13 grudnia 2017 5:59 Dziękuję za Twój czas i pomogę to szybki kod to zostało zrobione przy użyciu bliskiej cenie, ale nie była ostatnia cena zamknięcia, jak to zacząć Potrzebuję zmian jak proszę Dziękuję za tę wspaniałą pracę i proszę, może mam to również 2- przez wszystkie pozycje (otrzymasz najnowsze wydarzenie rekordu) jak przepływ Dziękuję bardzo tak naprawdę doceniam to Edytowane przez newandold sobota 13 grudnia , 2017 9:59 PM Dostałem informacje na temat obliczania EMA z tego linku: Uważam, że książeczki z serii Dummiesquot są autorytatywnymi źródłami. Jeśli spojrzysz na siatkę, którą pokazują do obliczenia, nigdzie nie ma zer z żadnym z obliczeń EMA. To dlatego nie widzisz go moim kodem. Jeśli chcesz uczynić je zerem, wystarczy zmienić kod, aby ustawić go na zero dla odpowiedniego wpisu (naprawdę nie wiem, dlaczego chcesz to chociaż, to nie wydaje się być standardowym wynikiem dla EMA): Twój drugie pytanie jest po prostu kwestią uzyskania ostatniego dnia z SMVList wpisu, który byłby SMVListSMVList. Count - 1. Jestem pewny, że możesz dowiedzieć się, jak to zrobić i umieścić go w drugiej sieci (EMA Analysis). Bonnie DeWitt C MVP sobota, 13 grudnia 2017 10:17 Przepraszam, wysłałem coś nieprawidłowo w poprzednim poście. Ponieważ SMVList jest w odwrotnym porządku chronologicznym, ostatnia data wpisu byłaby pierwsza na liście, więc chcesz wyglądać jak SMVList0. Chciałem dodać do mojego komentarza o zerach nie należących do obliczeń EMA. Wydaje się to mieć sens z obliczeniami SMA, które robiłeś wcześniej, ale nadal nie widzę, że to ma sens z obliczeń EMA (znów jest to zgodnie z linkiem książki Dummies, bo osobiście wiem absolutnie nic o EMA). Bonnie DeWitt C MVP niedziela, 14 grudnia 2017 2:42 AM jak o tym 2- na wszystkich pozycji (otrzymasz najnowsze wydarzenie rekordu), jak przepływ coraz ostatnie wydarzenie dla wszystkich elementów jak powyżej testuję go, ale jak widać poniżej Edytowane przez newandold Niedziela, 14 grudnia 2017 r. 4:02 W niedzielę, 14 grudnia 2017 3:51 Cóż, oczywiście, dostałem je obie do tyłu, nie zrobiłam tego Przepraszam, ale prawdopodobnie powinieneś był to zrozumieć siebie. Ale chcę tylko podkreślić, że to przyspiesza wszystkie inne obliczenia, ponieważ formuła polega na obliczeniach EMA w poprzednich dniach (co nie powinno być zerowe, ale kiedy wprowadzasz tę zmianę). Naprawdę nie myślę, że to ma sens. Spójrz na link, który wysłałem do artykułu Dummies Podłącz wartości z tabeli z tego linku do pliku tekstowego i zobaczysz, że mój pierwotny kod odpowiada temu, co pokazuje on w tabeli. Ale, jeśli nalegasz, aby uczynić z nich zera, przypuszczam, że moglibyśmy się tym poruszać, zawsze czyniąc z poprzednich dni EMA. Zrób to w ten sposób: nadal nie zgadzam się z tym, ale co wiem. Bonnie DeWitt C MVP Niedziela, 14 grudnia 2017 5:47 Dziękuję za Twój wysiłek wynik nie był potrzebny lub poprawny. ale dla kodu było bardzo dobre dla szybkości ładowania w datagradview. 1 - uzyskać prostą przeciętną średnią -2 - utworzyć listę (prosta średnia ruchoma) - weźmy EMA3 a - będzie używać wartości ostatniego sma jako pierwszej wartości ema w kalkulacji, ale obie mają ten sam okres co 3 I add pic wyjaśnić to jeszcze ja staram się to zrobić za pomocą kodu Edytowane przez newandold poniedziałek, 15 grudnia 2017 7:56 pm Przepraszam, że nie mogę spędzać więcej czasu na tym teraz. Ciągle zmienia się to, co chcesz, a przynajmniej tak mi się wydaje. Najlepszym, co mogę teraz powiedzieć, jest dodanie właściwości SMA do tej klasy danych. Zadzwoniłem do klasy EmaData, ale to dlatego, że myślałem, że obliczasz tylko wartości EMA, ale możesz iść dalej i dodać do niej właściwości SMA. Następnie zmodyfikuj metody, aby używać tej samej listy ListltEmaDatagt w celu obliczenia pierwszego SMA, a następnie EMA (prawdopodobnie będziesz potrzebować wielu pętli przez listę). Nie sądzę, że będzie to zbyt trudne, nie mogę się z tym pogodzić. Ale myślę, że potrafisz to zrozumieć. Bonnie DeWitt C MVP wtorek, 16 grudnia 2017 12:25 W dalszym ciągu zmienia się to, czego chcesz, a przynajmniej wydaje mi się ze starego stanowiska Pierwszy EMA (ostatni dzień) ostatnia cena zamknięcia lub (suma ostatnich trzech (blisko ceny) 3) również ze starego stanowiska, aby uzyskać więcej informacji na temat EMA, jeśli chcesz mnie zaznaczyć swój post jako odpowiedź Zrobię to, ale dla innych, którzy poszukują EMA otrzymają błędne wyniki Edytowane przez newandold wtorek, 16 grudnia 2017 5 : 24 PM Wygląda na to, że użycie wczorajszej EMA pierwszego dnia (a zatem nie ma wczoraj) może opierać się na różnych danych, w zależności od tego, które artykuły czytasz. Nie jestem ekspertem w magazynie, więc po prostu idę na to, co czytałem. Czytałem w artykule dotyczącym manekinów, z którymi się łączyłem, że można to zrobić w taki sposób, w jaki pokazałem ci, a to ma się rozpocząć od pierwszych dni zamykania wartości w ciągu czwartorzędu EMAquot. Możesz też użyć średniej z dni kończących się w tym okresie (zakładam, że SMA). ale wygląda mi na to, że jest używany tylko dla pierwszej obliczonej wartości (i używanej jako kwota dni EMAquot w formule), a nie sposobem, w jaki to zrobiłeś. W zrzucie ekranu z poprzedniego posta ta wartość SMA3 w 1020, 27.733 nie zostanie umieszczona w kolumnie dla EMA3 w 1020, ale została użyta w obliczeniach dla EMA3 w 1018 jako kwota dni EMAquot. Tak więc, podczas gdy SMA3 ma zero dla 1018 i 1019, EMA3 nie ma zer z nich. EMA3 dla tych dwóch dat powinna wynosić 28.017 i 27.909. Tak więc, w moim kodzie, w którym domyślnie usunęłam poprzedni EMA do SMVClose, możemy to zmienić w następujący sposób: Ponownie, jest to oparte na tym, co przeczytałem iw artykule Dummies, które to pokazuje. Naprawdę myślę, że tego właśnie chcesz. Bonnie DeWitt C MVP Oznaczone jako odpowiedź przez newandold Niedziela, Grudzień 21, 2017 5:33 AM czwartek, 18 grudnia 2017 4:52 PM dziękuję Ci bardzo, że to excel wyjaśnij to Edytowane przez newandold Piątek, 19 grudnia 2017 2:00 PM Piątek, 19 grudnia 2017 1:51 PM Udostępniam kod cedowany przez newandold Friday, December 19, 2017 10:09 PM Friday, December 19, 2017 10:08 PM Otrzymuję ostatnią wartość SMA (średnia średniej ruchomej ), aby rozpocząć obliczenia EMA, ponieważ zdjęcie poniżej nie jest dobre, ponieważ sposób kodowania nie będzie szybki jak kod, ale jej jasne, od czego zacząć obliczanie EMA (pierwsze (ema3prev) teraz, jak stosować wiersz. ema3 Math Round ((wiersz SMVClose k3) 43 (ema3prev (1 - k3)), 3. MidpointRounding AwayFromZero) piątek, 19 grudnia 2017 20:23 To będzie o wiele łatwiejsze, jeśli zmienisz kod, aby użyć ListltEmaDatagt, jak już wspomniałem w poprzedniej odpowiedzi. Jest to, co wcześniej sugerowałem: gtgtadd właściwości SMA tej klasy danych. Zadzwoniłem do klasy EmaDa ta, ale to dlatego, że myślałem, że obliczasz tylko wartości EMA, ale możesz iść dalej i dodać właściwości SMA do niego też. Następnie modyfikuj metody, aby użyć tej samej listy do obliczania pierwszej SMA, a następnie EMA (prawdopodobnie będziesz potrzebować wielu pętli przez List).ltlt Po przejściu do listy i obliczeniu wartości SMA, używając prawidłowej wartości SMA dla Twoja początkowa EMA będzie dużo łatwiejsza. Wystarczy użyć tego samego kodu zapętleniowego, który pokazałem we wcześniejszej odpowiedzi do obliczenia EMA (ale zamiast tego zrobiłem), użyj innej wyjściowej EMA opartej na SMA. Bonnie DeWitt C MVP Oznaczone jako odpowiedź przez newandold Niedziela, Grudzień 21, 2017 5:33 AM Piątek, 19 grudnia 2017 11:28 PM to, co zrobiłem i teraz pracuje próbuję dodać EMA5 EMA9 EMA10, a więc kod był bardzo długa jest krótka droga i profesjonalny sposób Potrzebuję twojego kontaktu z tym kodem, który w prawdziwym jest Twój kodeks Jestem wdzięczny za twoją pomoc sobota, 20 grudnia 2017 3:43 PM Kiedy znajdziesz się potrzebując uproszczenia kodu, zawsze zastanów się tworząc nową metodę wstawienia kodu. To, co robiłem, polegało na umieszczeniu powtarzającego się kodu w nowej metodzie: zamiast robić to wszystko w oryginalnej pętli, po prostu zadzwoń do nowej metody: Isnt that much cleaner Bonnie DeWitt C MVP Oznaczone jako odpowiedź przez newandold Niedziela, Grudzień 21, 2017 5:33 AM sobota, 20 grudnia 2017 5:44 PM Jak mogę to być wszystkim indeksem jako ostatnim zdarzeniem dla wszystkich elementów jak powyżej, gdy próbuję Otrzymuję wszystkie zapisy obu (DATATWO i ONEDATA) dziękuję za wsparcie i przetestuję modyfikację kodu w l arge danych dla elementu singal i było wystarczająco szybkie sobota, 20 grudnia 2017 20:23 Jeśli chcesz uzyskać dane dla obu elementów, możesz użyć Słownika do przechowywania wielu list. Musisz zmienić metodę MAByItem (), aby zwrócić ListltEmaDatagt, więc będzie to wyglądać następująco: I wtedy nazywasz tę metodę nieco inaczej niż wcześniej dzwonisz: Może trzeba zmienić inne rzeczy w swoim MAbyitem (), ponieważ nie wiem, jak chcesz wyświetlać inne sieci, weve pracował. Być może wywołaj metodę AddDataToGrid () zamiast w metodzie MAbyitem (). Może przepuścić siatkę, którą chcesz jako parametr metody AddDataToGrid (). Ale w każdym razie powinieneś być w stanie poznać resztę, mam nadzieję. Bonnie DeWitt C MVP niedziela, 21 grudnia 2017 12:28 Próbuję użyć kodu, ale mam więcej niż 300 elementów, ale nie działa Edytowane przez newandold Niedziela, Grudzień 21, 2017 12:10 PM Niedziela, Grudzień 21, 2017 11 : 43 AM Mówiłem, że musisz zmienić kod nieco więcej, głównym punktem mojej ostatniej odpowiedzi było użycie Słownika do przechowywania list dla obu elementów. Nie wiedziałem o metodzie AllItems (), ale oczywiście musi być nieco inna niż metoda MAbyitem (). Wróć do używania słownika, jak pokazałem w mojej poprzedniej odpowiedzi, ale użyj go w metodzie AllItems () w następujący sposób: Bonnie DeWitt C MVP Niedziela, 21 Grudnia 2017 4:34 PM Dodam kod poniżej: ten błąd Jaka metoda jest to wyjątek występujący w Ja dont zrozumieć, dlaczego nie używasz mojego kodu, część, w której wszystkie te obliczenia są pakowane w jedną metodę, CalcEmaX () metoda, która pobiera z metoda CalcEma (). Myślałem, że zgodziłeś się, że działa OK, więc dlaczego używasz innego kodu Co to jest svmTmpInt200 Czy coś nowego. Na podstawie twoich konwencji nazewnictwa, które wydają się wskazywać na to, że ma wartość 200. Myślę, że problem polega na tym, że SMVList. Count - svmTmpInt200 jest ujemny (ponieważ Twój hrabia jest mniejszy niż 200), więc ponieważ youre zapętlenie wstecz, to jest zawsze będzie większa niż ta wartość, iw konsekwencji pętla nie ma punktu zatrzymania i nadal maleje, dopóki nie jest ujemny zbyt, to dostajesz wyjątek. Opublikuj odpowiedni kod. Bonnie DeWitt C MVP Niedziela, 21 Grudnia 2017 14:02 Ja po prostu dodaj więcej Okresu i cały kod jest tutaj, więc działa dla elementu sygnału dla (i gt SMVList. Count - svmTmpInt200) próbuję zastąpić go różnymi tak że nie będzie ograniczony do określonego okresu tak testuję inny sposób biorąc swój kod jako moją referencję Edytowane przez newandold Niedziela, Grudzień 21, 2017 9:44 PM Niedziela, 21 grudnia 2017 21:28 w starym kodzie, który był wolny , używałem nagłówka datagridview niedziela, 21 grudnia 2017 10:16 PM Już próbowałeś mojego kodu. Powiedziałeś, że wszystko działa dobrze i szybko. A przecież nie używasz tego tak, jak ja to napisałem. Trzeba być znacznie lepiej przy użyciu metod CalcEmaX () i AddDataToGrid (), które zawierają cały ten nadmiarowy kod (głównie wszystkie ifs). Twój kod jest zbyt bałagan inaczej (i chciałeś tego uniknąć). Ale nie tam, gdzie obecny jest problem, ponieważ problem polega na tym, że próbujesz obliczyć smaX jako punkt początkowy emaX. Myślę, że możesz utworzyć metodę CalcSmaX (), aby kod obliczeniowy SMA był trochę czyszczący, ale to nie problem. Problem polega na tym, że nie masz 200 wierszy na liście, a mimo to masz pętlę, która zakłada, że ​​musisz Musisz sprawdzić swoje limity: zmień to: for (int i SMVList. Count - 1 i gt SMVList. Count - svmTmpInt200 i--) do tego: int max SMVList. Count - svmTmpInt200 if (max lt 0) max 0 for (int i SMVList. Count - 1 i gt max i--) Bonnie DeWitt C MVP poniedziałek, 22 grudnia 2017 12: 11:00 dziękuję za pomoc Tak kod nie jest taki dobry, ale znowu zrestartuję poniedziałek poniedziałek, 22 grudnia 2017 8:35 PM Cieszę się, że mam nadzieję, że wkrótce zaczniesz działać 0) Bonnie DeWitt C MVP wtorek, 2017 4:42 PM Firma Microsoft przeprowadza ankietę online w celu zrozumienia swojej opinii na temat witryny sieci Web Msdn. Jeśli zdecydujesz się wziąć udział, ankieta online zostanie wyświetlona podczas wychodzenia z witryny sieci Web programu Msdn. Chcesz wziąć udział w tym wydarzeniu Pomóż nam ulepszyć MSDN. Zapoznaj się z naszą stroną UserVoice, aby przesłać i głosować na temat pomysłów Centra Dev Centra edukacyjne Jeśli wykonanie tego kodu ma kluczowe znaczenie, można by uniknąć alokacji heapu dla świec. Myślę, że najbardziej rozsądnym sposobem na to byłoby uczynienie Candle w struct. Choć mutable rodzaje wartości są złe. więc ja również refactor Candle być niezmienny. Oznacza to również, że wdrożenie najnowszej wersji oprogramowania musiałoby się zmienić, prawdopodobnie na parę podwójnych pól (lub, alternatywnie, osobna, zmienna i podlegająca resetacji klasa). Nie widzę żadnych innych potencjalnych problemów z wydajnością w kodzie. Ale jeśli chodzi o wydajność, zawsze należy polegać na profilowaniu, a nie na intuicji (lub elsie). Ponadto, nie lubię kilku nazw własnych metod. W szczególności: ValueUpdated. Nazwy metod zazwyczaj powinny mieć formę czegoś innego, a nie coś się wydarzyło. Więc myślę, że lepszym nazwiskiem będzie UpdateValue. Dodaj. Modyfikować. Są to dwie podstawowe operacje MovingAverage i myślę, że te nazwy nie wyrażają dobrze sensu. Nazwałem je coś jak MoveAndSetCurrent i SetCurrent. odpowiednio. Choć takie nazewnictwo wskazuje, że podstawową operacją powinna być Move and SetCurrent.

No comments:

Post a Comment