Sunday 3 December 2017

Kod wykładniczy przenoszący średnio vba


Rolling Average Table Poniżej przyjrzymy się programowi w programie Excel VBA, który tworzy średnią tabelę kroczącą. Umieść przycisk polecenia w arkuszu i dodaj następującą linię kodu: Range (quotB3quot).Value WorksheetFunction. RandBetween (0, 100) Ta linia kodu wprowadza liczbę losową między 0 a 100 do komórki B3. Chcemy, aby program Excel VBA podjął nową wartość zapasów i umieścić ją na pierwszej pozycji tabeli średniej kroczącej. Wszystkie pozostałe wartości powinny być przemieszczane w dół w jednym miejscu, a ostatnia wartość powinna zostać usunięta. Utwórz zdarzenie zmiany kompozycji. Kod dodany do zdarzenia zmiany planu zostanie wykonany przez program Excel VBA po zmianie komórki w arkuszu. 2. Kliknij dwukrotnie na Arkusz1 (Arkusz1) w Eksploratorze projektu. 3. Wybierz Arkusz roboczy z lewej listy rozwijanej. Z rozwijanej listy prawym przyciskiem wybierz polecenie Zmień. Dodaj następujące wiersze kodu do zdarzenia Change Changes: 4. Zanotuj zmienną o nazwie newvalue typu Integer i dwa zakresy (wartości pierwszego i ostatniego). Dim newvalue As Integer. firstfourvalues ​​As Range, lastfourvalues ​​As Range 5. Zdarzenie Change Schedule śledzi wszystkie zmiany w Sheet1. Chcemy, aby program Excel VBA coś zrobił, jeśli coś się zmieni w komórce B3. Aby to osiągnąć, dodaj następującą linię kodu: Jeśli Target. Address quotB3quot Następnie 6. Inicjalizujemy newvalue z wartością komórki B3, wartością pierwszego wiersza z zakresem (quotD3: D6quot) i wartościami lastfour z Range (quotD4: D7quot). newvalue Zakres (quotB3quot).Value Ustaw wartość firstfourvalues ​​Zakres (quotD3: D6quot) Ustaw wartość lastfourvalues ​​(D4: D7quot) 7. Teraz jest prosty trick. Chcemy zaktualizować tabelę średniej kroczącej. Można to osiągnąć, zastępując ostatnie cztery wartości czterema pierwszymi wartościami tabeli i wprowadzając nową wartość zapasów w pierwszej pozycji. lastfourvalues. Value firstfourvalues. Value Range (quotD3quot).Wartość newvalue 8. Nie zapomnij zamknąć instrukcji if. 9. Na koniec wprowadź wzór AVERAGE (D3: D7) do komórki D8. 10. Sprawdź program klikając przycisk polecenia., Gdzie 2 (1 n) Indeks dolny t jest używany do oznaczania czasu np. t-1 oznacza okres poprzedzający t i n, określony przez użytkownika, odnosi się do okresu uśredniania EMA. Na przykład ekwiwalent EMA z 3-letniej prostej średniej ruchomej ma n równe 3. Im większa jest wartość n, tym mniejsza staje się. Powoduje to większe (1), a więcej EMA t-1 jest zatrzymywane w EMA t. Pierwszą wartością EMA w serii czasowej można założyć, że jest to prosta średnia ruchoma w n dni8217 cen. Niektórzy użytkownicy mogą również rozpocząć pierwszą pierwszą wartość EMA od drugiego okresu, w przypadku gdy EMA w okresie 2 x cena za okres 2 (1 8211) x okres 1 cena. Użytkownicy powinni zrozumieć, że wykładnicza średnia ruchoma jest nieskończoną serią, gdy wcześniejsze ceny są coraz mniejsze na EMA t. Rozważ następujące kwestie: powoduje to, że EMA jest bardziej elastyczna i mniej lotna niż jej zwykła średnia ruchoma. Bardziej szczegółową dyskusję można znaleźć w moim artykule o filtrach w dziedzinie finansów i analizy technicznej. Metoda A korzysta z funkcji, podczas gdy Metoda B wykorzystuje procedury podrzędne do obliczania CMF. Metoda B jest szybsza i bardziej elastyczna. Wklej ten kod do okna kodu ThisWorkBook w programie VBA. Kliknij prawym przyciskiem myszy ten podręcznik w Eksploratorze projektu i kliknij polecenie Wyświetl kod. Private Sub WorkbookOpen () Pozostałe należą do dowolnego modułu Powiedz Excel, aby zawierał je w liście funkcji, dodawał do nich opisy i stworzył nową kategorię o nazwie Wskaźniki techniczne. Makro aplikacji. MacroOptions: EMA, Opis: Zwraca średnią ruchową wykładniczą. wzmacniacz Chr (10) wzmacniacz Chr (10) wzmacniacz Wybierz ostatnie okresy EMA lub okresy ostatniego okresu, jeśli bieżący okres jest pierwszym. wzmacniacz Chr (10) wzmacniacz Chr (10) amp następna cena i n. Współczynnik zaniku wykładniczej średniej ruchomej oblicza się jako alfa2 (n1), funkcja publiczna EMA (EMAYHONG, cena, n) cena alfa alfa EMA (1 - alfa) EMAY yesterday Po wykonaniu powyższych czynności można obliczyć wykładniczą średnią ruchliwą, wpisując dowolną komórkę EMA (ostatni okres EMA, bieżąca cena, n). Podaj ostatnią wartość okresu jako ostatni okres EMA, jeśli obliczasz pierwszą EMA swojego zestawu danych. Aby uruchomić metodę B, musisz skopiować podsieć Runthis ze strony na linii AccumulationDistribution w swoim module. Musisz także uruchomić EMA z podsystemu Runthis. Dodaj następującą linię do podsekcji Uruchom Umieść ją bezpośrednio przed końcem podrzędnym i wyłącz wszystkie inne makra wywołane przez Runthis Ta podka zacznie obliczać EMA od t2 dalej Sub EMA (close1 As Range, wyjście jako zakres, n tak długo) close0 close1 ( 1, 1).Address (False, False) close1a close1 (2, 1).Address (False, False) output1 wyjście (1, 1).Address (False, False) wyjście (2, 1).Value 2 (1 wzmacniacz ampułkowy wzmacniacz wzmacniający wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz wzmacniacz amp close0 Jak to, co właśnie przeczytałeś Digg it lub Tipd to. Celem Finance4Traders jest ułatwienie firmom handlowym rozpoczęcia ich przez nieobiektywne badania i pomysły. Od końca 2005 roku rozwijam strategie handlowe osobiście. Nie wszystkie te modele są dla mnie odpowiednie, ale inni inwestorzy lub handlowcy mogą się okazać przydatni. Przecież ludzie mają różne cele inwestycyjne i nawyki. Tak więc Finance4Traders staje się wygodną platformą do rozpowszechniania mojej pracy. (Więcej informacji na temat Finance4Traders) Proszę używać tej strony internetowej w odpowiedni i rozważny sposób. Oznacza to, że powinieneś przyznać Finance4Traders przynajmniej przez link do tej witryny, jeśli zdarzy ci się użyć jakiejkolwiek zawartości. Ponadto nie wolno korzystać z naszych treści w sposób niezgodny z prawem. Powinieneś również zrozumieć, że nasza zawartość nie jest objęta żadną gwarancją, a przed poleganiem na nich należy samodzielnie sprawdzać naszą treść. Podczas odwiedzania tej witryny zapoznaj się z polityką dotyczącą zawartości witryny i polityką prywatności. 0 komentarze: Wyślij komentarz Strategia handlowa jest bardzo podobna do strategii korporacyjnej. Krytyczne studiowanie zasobów pomoże Ci podejmować bardziej skuteczne decyzje. (Czytaj dalej) 8226 Opis wskaźników technicznych Wskaźniki techniczne są czymś więcej niż tylko równaniami. Dobrze rozwiniętymi wskaźnikami, stosowanymi naukowo, są narzędzia, które pomagają przedsiębiorcom wyciągnąć krytyczną informację z danych finansowych. (Czytaj dalej) 8226 Dlaczego wolę używać programu Excel Excel przedstawia Ci dane wizualnie. To znacznie ułatwia zrozumienie pracy i zaoszczędzisz czas. (Czytaj dalej) Strategia handlowa jest bardzo podobna do strategii korporacyjnej. Krytyczne studiowanie zasobów pomoże Ci podejmować bardziej skuteczne decyzje. (Czytaj dalej) 8226 Opis wskaźników technicznych Wskaźniki techniczne są czymś więcej niż tylko równaniami. Dobrze rozwiniętymi wskaźnikami, stosowanymi naukowo, są narzędzia, które pomagają przedsiębiorcom wyciągnąć krytyczną informację z danych finansowych. (Czytaj dalej) 8226 Dlaczego wolę używać programu Excel Excel przedstawia Ci dane wizualnie. To znacznie ułatwia zrozumienie pracy i zaoszczędzisz czas. (Przeczytaj dalej) Oto kod, który powinien być przydatny dla osób używających analizy technicznej w handlu i chce testować strategie w programie Excel. Oblicza prostą, liniową ważoną i wykładniczą średnią ruchliwą. Dalej przedstawię i wyjaśnię kroki tworzenia formularza i kodu VBA. Wstawianie UserForm 8211 Nazwa: MAForm Dodawanie czterech etykiet z elementów sterowania przybornikami Toolbox 8211 Załączniki do powyższego ekranu drukowania Dodawanie ComboBox do wybierania typu średniej ruchomej. Naziemnie jest comboTypeMA Dodaj dwie kontrolki RefEdit dla zakresu wejściowego i zakresu wyjściowego. Dodawanie pola tekstowego do wybierania średniej ruchomej Dodać dwa przyciski: Nazwa: przyciskSubmit, Caption: Submit and Name: przyciskCancel, Caption: Cancel Aby wygenerować listę rozwijaną dla wyboru typu MA i załadować formularz użytkownika, nowy moduł zostanie wstawiony z poniższym kodem. Elementy ComboBox będą wypełniane przez przechodzenie średnich typów i formularz użytkownika zostaną załadowane. Opcja Explicit Sub loadMAForm () Z MAFormboTypeMA. RowSource. AddItem Prosty element. AddItem ważony. AddItem End Exponential End With MAForm. Show End Sub Poniżej znajduje się kod przypisany do przycisku Submit. Private Sub buttonSubmitClick () Dim inputRange, outputRange As Range WejścieRange będzie zawierało serie cen stosowane do obliczania MAs i outputRange zostanie wypełnione wartościami średniej ruchomej. Dim inputPeriod As Integer Określa się średni okres ruchomy. Dim inputAddress, outputAddress As String Zakresy wejścia i wyjścia zadeklarowane jako ciąg znaków. Jeśli parametr comboTypeMA. Value ltgt Exponential And comboTypeMA. Value ltgt Prosty i comboTypeMA. Value ltgt Ważony Prawda Następnie MsgBox Proszę wybrać typ średniej ruchomej z listy. RefInputRange. SetFocus Exit Sub Ta część procedury wymusza pierwsze ograniczenia dotyczące dostarczonych danych. Jeśli w rozwijanej liście nie znajduje się typ przeciętnego ruchu, procedura nie zostanie podjęta w następnym kroku, a użytkownik zostanie poproszony o jego wybranie. ElseIf RefInputRange. Value Then MsgBox Proszę wybrać zakres wejściowy. RefInputRange. SetFocus Exit Sub ElseIf RefOutputRange. Value Następnie MsgBox Proszę wybrać zakres wyjściowy. RefOutputRange. SetFocus Exit Sub ElseIf RefInputPeriod. Value Następnie MsgBox Proszę wybrać średni okres przejściowy. RefInputPeriod. SetFocus Exit Sub ElseIf Nie IsNumeric (RefInputPeriod. Value) Następnie MsgBox Przekroczony średni okres musi być liczbą. RefInputPeriod. SetFocus Exit Sub End Jeśli tworzone są inne ograniczenia. Zakres wejściowy, zakres wyjściowy i okres wprowadzania nie mogą być puste. Również średni okres przejściowy musi być liczbą. inputAddress RefInputRange. Value Ustaw wartość inputRange Range (inputAddress) outputAddress RefOutputRange. Value Ustaw wartość outputRange Range (outputAddress) inputPeriod RefInputPeriod. Value Argumenty dla zakresów inputRange i outputRange to inputAddress i outputAddress zadeklarowane jako ciągi znaków. Jeśli inputRange. Columns. Count ltgt 1 Następnie MsgBox Zakres wprowadzania może mieć tylko jedną kolumnę. RefInputRange. SetFocus Exit Sub InputRange musi zawierać tylko jedną kolumnę. ElseIf inputRange. Rows. Count ltgt outputRange. Rows. Count Następnie zakres wyjściowy MsgBox ma inną liczbę wierszy niż zakres wejściowy. RefInputRange. SetFocus Exit Sub End Jeśli parametr inputRange i outputRange musi mieć taką samą liczbę wierszy. Dim RowCount jako Integer RowCount inputRange. Rows. Count Dim cRow As Integer ReDim inputarray (1 na RowCount) Dla cRow 1 Do InputRray RowCount (cRow) inputRange. Cells (cRow, 1).Value Następna cRow inputarray jest zadeklarowana jako elementy array i it8217s odpowiadają wartościom z każdego rzędu zakresu wejściowego. Jeśli inputPeriod gt RowCount Then MsgBox Liczba wybranych obserwacji to amp wzmacniacza RowCount, a okresem jest wzmacniacz wejściowy wzmacniacza. Zakres wejściowy musi mieć większą lub równą liczbę elementów niż wybrany okres. RefInputRange. SetFocus Exit Sub End Jeśli jest dodawane inne ograniczenie 8211 Zakres danych wejściowych musi mieć większą lub równą liczbę elementów niż okres. Jeśli wartość parametru InputPeriod lt 0 Then MsgBox Okres przeciętny musi być większy niż 0. RefInputPeriod. SetFocus Exit Sub End If Średni okres przejściowy musi być większy od zera. ReDim outputarray (inputPeriod To RowCount) Jako wariant Określone są również wymiary tablicowe. Dolna granica tablicy to wartość inputPeriod, a górna granica to wartość RowCount (liczba elementów w inputRange). Poniżej procedury obliczono prostą średnią ruchu, jeśli wybór dla comboTypeMA jest prosty. SMA ----------------------------------------- Jeśli komendaTypeMA. Value Simple Then Dim i , j Jako Integer Dim temp As Double Dla i inputPeriod To RowCount temp 0 Dla j (i - (inputPeriod - 1)) Do i temp temp inputarray (j) Następna j outputarray (i) wejście tempPeriod outputRange. Cells (i, 1).Value outputarray (i) Następny i outputRange. Cells (0, 1).Value SMA (amp wzmacniacza wejściowego) Zasadniczo procedura oblicza średnią ruchu ostatnich liczb x (x równa się wejściowemu okresowi), zaczynając od elementu inputarray równy InputPeriod. Poniżej jest uproszczony przykład, który pokazuje każdy krok procedury. W tym przykładzie istnieją cztery liczby (nr01, nr02, nr03 i nr04) z wiersza 1 do wiersza 4, a średni okres ruchomy wynosi 3. Po obliczeniu każdej nowej średniej ruchomej każda komórka parametru outputRange przyjmuje wartość z outputarray. I po przeanalizowaniu wszystkich średnich ruchów, w komórce powyżej typu outputRange zostanie wstawiony tytuł zawierający średnią ruchomą typ i okres. Następna część obliczy wykładniczą średnią ruchomą. EMA ------------------------------------------ ElseIf comboTypeMA. Value wykładniczy następnie Dim alfa As Double alpha 2 (inputPeriod 1) dla j 1 W celu wprowadzenia danych wejściowych temp. temperatury temp. podgrzewacza (j) Następna wartość parametru outputarray (inputPeriod )Powód temp. pierwszego Najpierw określana jest wartość alfa. Ponieważ w obliczeniach wartość EMA jest oparta na poprzedniej EMA, pierwsza będzie prostą średnią ruchoma. Dla i inputPeriod 1 Dla OutputCrarCount (i) outputarray (i - 1) alpha (inputarray (i) - outputarray (i - 1)) Dalej i Zaczynając od drugiej średniej ruchomej, będą obliczane na podstawie powyższego wzoru: poprzednia EMA plus alfa pomnożona przez różnicę pomiędzy bieżącym numerem od wartości parametru inputarray a poprzednią wartością EMA. Dla i inputPeriod To RowCount outputRange. Cells (i, 1).Wynik wyjściowy (i) Następny i outputRange. Cells (0, 1).Value EMA (amp wzmacniacza wejściowego) Podobnie jak kod SMA, format wyjściowy zostanie zapełniony komórka powyżej parametru outputarray będzie reprezentować rodzaj i okres średniej ruchomej. Poniżej znajduje się kod do obliczania ważonej średniej ruchomej. WMA ------------------------------------------ ElseIf comboTypeMA. Value Weighted Then Dim temp2 As Integer Dla i inputPeriod To RowCount temp 0 temp2 0 Dla j (i - (inputPeriod - 1)) Do i temp temp inputarray (j) (j - i inputPeriod) temp2 temp2 (j - i inputPeriod) Następna wersja outputarray (i ) temp temp2 outputRange. Cells (i, 1).Rozmiar wyjściowy (i) Następny i outputRange. Cells (0, 1).Value WMA (wzmacniacz wzmacniacza wejściowego) Koniec Jeśli poniższa tabela zawiera kroki obliczania każdej zmiennej używanej dla Obliczanie WMA. Podobnie jak w poprzednim przykładzie, w tym przypadku są liczby w inputRange. a okres wprowadzania wynosi 3. Poniżej znajduje się końcowy kod procedury, który usuwa formularz użytkownika. Rozładuj MAForm End Sub Poniższa procedura dotyczy przycisku Anuluj. Zostanie dodany w tym samym module. Private Sub buttonCancelClick () Wyładuj MAForm End Sub

No comments:

Post a Comment