Monday 18 December 2017

Przeprowadzka średnia próbka kodu


MetaTrader 4 - Średnia eksperta dla ekspertów - ekspert w MetaTrader 4 Średnia Średnia Ruch Roślin w celu tworzenia sygnałów handlowych wykorzystuje jedną średnią ruchomej. Otwieranie i zamykanie pozycji odbywa się, gdy średnia ruchoma odpowiada cenie w ostatnio utworzonym pasku (indeks pręta równy 1). Wielkość partii zostanie zoptymalizowana według specjalnego algorytmu. Doradca eksperta analizuje zgodność średniej ruchomej i wykresu cen rynkowych. Sprawdzanie odbywa się za pomocą funkcji CheckForOpen (). Jeśli średnia ruchoma pasuje do pręta w taki sposób, że poprzedni jest wyższy niż cena otwarta, ale niższa niż cena zamknięcia, to pozycja KUPUJ zostanie otwarta. Jeśli średnia ruchoma pasuje do pręta w taki sposób, że poprzedni jest niższy niż cena otwarta, ale wyższa niż cena zamknięcia, zostanie otwarta pozycja SPRZEDAJĄCY. Zarządzanie pieniędzmi wykorzystywane w ekspercie jest bardzo proste, ale skuteczne: kontrolę nad każdą pozycją zajmuje się w zależności od poprzednich wyników transakcji. Ten algorytm jest zaimplementowany przez funkcję LotsOptimized (). Podstawowy rozmiar partii jest obliczany na podstawie maksymalnego dopuszczalnego ryzyka: parametr MaximumRisk wyświetla podstawowy procent ryzyka dla każdej transakcji. Zwykle ma wartość pomiędzy 0,01 (1) a 1 (100). Na przykład, jeśli wolny margines (AccountFreeMargin) wynosi 20,500, a zasady zarządzania kapitałem zakładają użycie ryzyka 2, podstawowy rozmiar partii to 20500 0,02 1000 0,41. Bardzo ważne jest, aby kontrolować dokładność wielkości partii i normalizować wynik z dopuszczalnymi wartościami. Zwykle partie frakcji o kroku 0,1 są dozwolone. Transakcja o wolumenie 0,41 nie będzie wykonywana. Aby normalizować, funkcja NormalizeDouble () jest używana z dokładnością do 1 znaku po punkcie. Powoduje to podstawową partię 0,4. Podstawowe obliczanie partii na podstawie wolnego marginesu pozwala zwiększyć wielkość operacji w zależności od skuteczności handlowej, tj. Handlu z reinwestycją. Jest to podstawowy mechanizm z obowiązkowym zarządzaniem kapitałem w celu zwiększenia efektywności handlowej. DecreaseFactor to stopień, w jakim rozmiar partii zostanie zredukowany po nierentownym handlu. Normalne wartości to 2,3,4,5. Jeśli poprzedzające transakcje były nieopłacalne, kolejne tomy zmniejszy się o współczynnik DecreaseFactor, aby poczekać na nieopłacalny okres. Jest to główny czynnik w algorytmie zarządzania kapitałem. Pomysł jest bardzo prosty: jeśli handel wzrasta, ekspert pracuje z podstawową partią, która zapewnia maksimum zysku. Po pierwszej nieopłacalnej transakcji ekspert zmniejszy prędkość do momentu pozytywnej transakcji. Algorytm pozwala wyłączyć ograniczenie prędkości, aby to zrobić, należy określić wartość DecreaseFactor 0. Ilość historii ostatniej transakcji, która nie jest dochodowa, jest obliczana w historii handlu. Podstawowa partia zostanie przeliczona na tej podstawie: dzięki temu algorytm pozwala skutecznie zmniejszyć ryzyko występujące w wyniku szeregu nierentownych transakcji. Wielkość partii jest obowiązkowo sprawdzana pod kątem minimalnej dopuszczalnej wielkości partii pod koniec funkcji, ponieważ wcześniejsze obliczenia mogą powodować partię 0: Ekspert jest przeznaczony głównie do pracy z dziennym okresem i w trybie testowym - za robienie tego na zamkniętych cenach. Będzie on handlował tylko przy otwarciu nowego baru, dlatego nie są potrzebne tryby modelowania na każdym kroku. Wyniki testów są przedstawione w raporcie. Wiem, że jest to osiągalne dzięki zwiększeniu: Ale naprawdę chciałbym uniknąć zwiększania. Mam googled i nie znaleziono żadnych odpowiednich lub czytelnych przykładów. Zasadniczo chcę śledzić ruchomą średnią ciągłego strumienia strumienia liczb zmiennoprzecinkowych przy użyciu najnowszych 1000 numerów jako próbki danych. Jaki jest najłatwiejszy sposób na to, eksperymentowałem z użyciem okrągłej tablicy, wykładniczej średniej ruchomej i bardziej prostej średniej ruchomej i stwierdziła, że ​​wyniki okrągłej tablicy odpowiadały moim potrzebom najlepiej. zapytał 12 czerwca 12 w 4:38 Jeśli Twoje potrzeby są proste, możesz spróbować użyć wykładniczej średniej ruchomej. Po prostu wprowadzasz zmienną akumulatora, a kod wygląda na każdą próbkę, kod aktualizuje akumulator o nową wartość. Wybierasz stałą wartość alfa, która wynosi od 0 do 1, i oblicz ją: Wystarczy, że znajdziesz wartość alfa, w której efekt danej próbki trwa tylko około 1000 próbek. Hmm, nie jestem pewien, że to jest dla ciebie odpowiednie, teraz, że to tutaj. Problem polega na tym, że 1000 jest dość długie okno dla wykładniczej średniej ruchomej Im nie wiesz, że istnieje alfa, która rozprzestrzenia się średnią w ciągu ostatnich 1000 numerów, bez underflow w obliczaniu zmiennoprzecinkowych. Ale jeśli chcesz mieć mniejsze średnie, jak 30 liczb, jest to bardzo łatwy i szybki sposób na to. odpowiedziało cze 12 12 w 4:44 1 na Twoim stanowisku. Wyższa średnia ruchoma może pozwolić na zmienną alfa. Pozwala to na obliczanie średnich baz czasu (na przykład bajtów na sekundę). Jeśli czas od ostatniej aktualizacji akumulatora przekracza 1 sekundę, to niech alpha wynosi 1.0. W przeciwnym razie możesz pozwolić alpha be (usecs od ostatniej aktualizacji1000000). ndash jxh Cze 12 12 at 6:21 Zasadniczo chcę śledzić średnią ruchu ciągłego strumienia strumienia liczb zmiennoprzecinkowych przy użyciu najnowszych 1000 numerów jako próbki danych. Zauważ, że poniżej uaktualnia całkowitą wartość jako elementy dodawane, co pozwala uniknąć kosztownego przebiegu O (N) w celu obliczenia sumy potrzebnej na średnią - na żądanie. Razem uzyskuje się inny parametr od T do obsługi np. używając długiej długi podczas łączenia 1000 długich s, int dla char s lub double-total float. Jest to nieco błędne, że liczby czcionek mogą przechodzić przez INTMAX - jeśli zależy Ci na długich długach bez podpisu. lub użyj dodatkowego członka danych bool do nagrywania, gdy pojemnik jest najpierw napełniany, podczas cyklicznych numsamples wokół tablicy (najlepiej zamienić coś nieszkodliwego jak pos). odpowiedziało 12 czerwca 12 w 5:19 zakłada się, że operator kwotowania (przykład T) jest w rzeczywistości operatorem cudzysłowów (przykład T). ndash oPless 8 czerwca o godz. 11:52 oPless ahhh. dobrze spotykane. właściwie miałem na myśli operatora void () (przykład T), ale oczywiście można użyć dowolnej notacji, którą lubisz. Naprawdę, dzięki. ndash Tony D Cze 8 14 w 14: 27 Chcę rozwinąć obliczenie średniej ruchomej średniej. Jednak wiele późniejszych obliczeń planowano później. Mój pierwszy krok, aby wiedzieć, jak efektywnie przeliczyć ruch średnią. Muszę wiedzieć, jak skutecznie wejść i wyjść z powrotem. brano pod uwagę datę i cenę. data, cena i średnia ruchoma. Jeśli mam 500 rekordów i chcę obliczyć Moving średnio przez 5 dni, co jest effient sposób zamiast się tam iz powrotem w tablicy Data i cena ponownie proszę sugest co to jest najlepszy sposób na wejście (ArrayList, tabela, tablica itp.) i zwrócić wyjście. Uwaga: dzisiejszy MA 5 dni będzie średnio z ostatnich 5 dni, w tym z dzisiejszą ceną. Wczoraj średnia w ciągu ostatnich 5 dni od wczoraj. Chcę zachować dni, aby być elastycznymi, a nie 5 może to być 9, 14, 20 itd. Czwartek, 10 kwietnia 2008 3:21 PM Jeśli potrzebujesz prostych obliczeń bez wysiłku, niż możesz użyć TA-Lib. Jeśli chcesz, aby Twoje obliczenia były bardziej wydajne niż TA-Lib, możesz stworzyć własny wskaźnik techniczny. TA-Lib jest świetny, ale problem polega na tym, że ta biblioteka ma tylko statyczne metody. Oznacza to, że gdy trzeba obliczyć wartości tablic SMA na podstawie 500 pasków cen, wtedy wyślemy cały szereg pasków i zwróci tablicę wartości SMA. Jeśli otrzymasz nową wartość 501-stową, należy ponownie przesłać całą tablicę, a TA-Lib ponownie obliczy i zwróci tablicę wartości SMA. Teraz wyobraź sobie, że potrzebujesz takiego wskaźnika w prawdziwym karmieniu cen, a przy każdej zmianie ceny potrzebujesz nowej wartości wskaźnika. Jeśli masz jeden wskaźnik nie jest dużym problemem, ale jeśli masz setki wskaźników działających, może to być problem z wydajnością. Byłem w takiej sytuacji i zaczynamy opracowywać wskaźniki w czasie rzeczywistym, które są skuteczne i wykonują dodatkowe obliczenia dla nowego paska cenowego lub tylko dla zmodyfikowanego paska cenowego. Niewątpliwie nigdy nie potrzebowałem wskaźnika SMA dla moich systemów handlowych, ale mam takie dla EMA, WMA, AD i innych. Jeden taki wskaźnik AD jest opublikowany na moim blogu i możesz zobaczyć, co jest podstawową strukturą mojej klasy wskaźników w czasie rzeczywistym. Mam nadzieję, że potrzebujesz małych zmian w celu wdrożenia wskaźnika SMA, ponieważ jest jednym z najprostszych. Logika jest prosta. Aby obliczyć SMA wszystko, czego potrzebujesz to n ostatnich cen. Tak więc instancja klasy będzie miała zbiór cen, które przechowują tylko ostatnią liczbę niderlandzkich cen, ponieważ określono SMA (w Twoim przypadku 5). Więc kiedy masz nowy pasek, usuń najstarszy, dodaj nowy i wygeneruj obliczenia. Czwartek, 10 kwietnia 2008 4:04 PM Wszystkie odpowiedzi Jest biblioteka o nazwie TA-Lib, która robi to wszystko dla Ciebie i jest open source. Myślę, że ma około 50 wskaźników. Używaliśmy go w środowisku produkcyjnym i jest bardzo wydajny i realny. Możesz użyć go w C, Java, C itd. Jeśli potrzebujesz prostych obliczeń bez wysiłku, niż możesz użyć TA-Lib. Jeśli chcesz, aby Twoje obliczenia były bardziej wydajne niż TA-Lib, możesz stworzyć własny wskaźnik techniczny. TA-Lib jest świetny, ale problem polega na tym, że ta biblioteka ma tylko statyczne metody. Oznacza to, że gdy trzeba obliczyć wartości tablic SMA na podstawie 500 pasków cen, wtedy wyślemy cały szereg pasków i zwróci tablicę wartości SMA. Jeśli otrzymasz nową wartość 501-stową, należy ponownie przesłać całą tablicę, a TA-Lib ponownie obliczy i zwróci tablicę wartości SMA. Teraz wyobraź sobie, że potrzebujesz takiego wskaźnika w prawdziwym karmieniu cen, a przy każdej zmianie ceny potrzebujesz nowej wartości wskaźnika. Jeśli masz jeden wskaźnik nie jest dużym problemem, ale jeśli masz setki wskaźników działających, może to być problem z wydajnością. Byłem w takiej sytuacji i zaczynamy opracowywać wskaźniki w czasie rzeczywistym, które są skuteczne i wykonują dodatkowe obliczenia dla nowego paska cenowego lub tylko dla zmodyfikowanego paska cenowego. Niewątpliwie nigdy nie potrzebowałem wskaźnika SMA dla moich systemów handlowych, ale mam takie dla EMA, WMA, AD i innych. Jeden taki wskaźnik AD jest opublikowany na moim blogu i możesz zobaczyć, co jest podstawową strukturą mojej klasy wskaźników w czasie rzeczywistym. Mam nadzieję, że potrzebujesz małych zmian w celu wdrożenia wskaźnika SMA, ponieważ jest jednym z najprostszych. Logika jest prosta. Aby obliczyć SMA wszystko, czego potrzebujesz to n ostatnich cen. Tak więc instancja klasy będzie miała zbiór cen, które przechowują tylko ostatnią liczbę niderlandzkich cen, ponieważ określono SMA (w Twoim przypadku 5). Więc kiedy masz nowy pasek, usuń najstarszy, dodaj nowy i wygeneruj obliczenia. Czwartek, 10 kwietnia 2008 16:04 Chcę obliczyć średnią ruchomej w bazie danych za pomocą procedury składowanej lub w kostce. Czy spojrzałeś na Analysis Services, ma możliwość obliczania średnich kroczących. Czwartek, 10 kwietnia 2008 16:05 Tak. TA-LIB jest dobry, ale może nie być dla mnie odpowiedni. Kiedy dodam nową wartość lub zaktualizowaną wartość dla historii rekordów, wykonam obliczenia w osobnej funkcji tylko dla tego nowego cytatu i przechowuję ją w bazie danych. Mam zamiar zaktualizować wycenę co godzinę. Muszę zrobić około 25 do 30 wskaźników technicznych dla 2200 zapasów. Czwartek, 10 kwietnia 2008 5:51 Czas realizacji połączenia TA-Lib na tablicy 10000 elementów zajmuje około 15 milisekund (na karcie Intel Core Duo 2.13 Ghz). Jest to średnia wszystkich funkcji. Wśród najszybszych, SMA trwa mniej niż 2,5 milisekund. Najmniej, HTTRENDMODE, zajmuje 450 milisekund. Z mniej elementów jest szybszy. SMA zajmuje około 0,22 milisekund dla 1000 elementów wejściowych. Prędkość jest prawie liniowa (napowietrzenie wykonywania wywołania funkcji jest nieistotne). W kontekście Twojego zgłoszenia TA-Lib jest mało prawdopodobne, aby był Twoim wąskim gardłem dla szybkości. Również ogólnie nie polecam takiego kwerendy nquot rozwiązanie. Poniżej szczegółowe informacje. Po pierwsze, korekta do instrukcji Boban. s Wszystkie funkcje w TA-Lib mogą również obliczyć pojedynczą ostatnią wartość przy użyciu minimum elementów kwantowych. Możesz mieć tablicę wielkości 10000, zainicjować dane tylko dla pierwszych 500 elementów, dodać jeden element i zadzwonić do TA-Lib, aby obliczyć SMA tylko dla nowego elementu. TA-Lib będzie wyglądał wstecz nie więcej niż potrzeba (jeśli wartość SMA wynosi 5, wówczas TA-Lib obliczy pojedynczy SMA przy użyciu ostatnich 5 wartości). Jest to możliwe dzięki parametrom startIdx i endIdx. Można określić zakres do obliczenia lub pojedynczą wartość. W tym scenariuszu można utworzyć startIdx endIdx 500 w celu obliczenia elementu 501st. Dlaczego tak niskosztowe rozwiązanie może być niebezpieczne dla niektórych Niezależnie od wyboru rozwiązania Boban. s czy TA-Lib należy rozważyć, że przy użyciu niewielkiej ilości skończonej liczby danych w przeszłości nie działają dobrze z większością funkcji TA. Z SMA jest oczywiste, że po prostu potrzebujesz n elementu, aby obliczyć przeciętnie przez n element. To nie jest tak proste z EMA (i wiele innych funkcji TA). Algo często zależy od poprzedniej wartości do obliczania nowej wartości. Funkcja jest rekurencyjna. Oznacza to, że wszystkie poprzednie wartości mają wpływ na przyszłe wartości. Jeśli zdecydujesz się przeliczyć algo, aby użyć tylko niewielkiej ilości wartości z przeszłości, nie otrzymasz takiego samego wyniku, co osoba, która oblicza dużą liczbę poprzednich wartości. Rozwiązaniem jest kompromis pomiędzy szybkością i precyzją. Często dyskutuję o tym w kontekście TA-Lib (nazywam to kwantyfikatorem w dokumentacji i forum). Aby utrzymać to proste, moja ogólna rekomendacja polega na tym, że jeśli nie możesz dokonać różnicy między algą o skończonej odpowiedzi impulsowej (FIR) z algo o nieskończonej odpowiedzi impulsowej (IIR), bezpieczniej będzie obliczać wszystkie dane, które masz dostępny. TA-Lib określa w kodzie, który z jego funkcji ma niestabilny okres (IIR). Zmieniony przez mfortier Friday, August 15, 2008 4:25 AM Poprawny zdanie w języku angielskim Poniższy przykładowy kod na karcie Pełny kod ilustruje obliczanie średniej ruchomej zmiennej przez cały zestaw danych, ostatnie N obserwacji w zbiorze danych lub w ciągu ostatnich N obserwacji w obrębie grupy BY. Te przykładowe pliki i przykłady kodu są dostarczane przez SAS Institute Inc., bez jakichkolwiek gwarancji, zarówno wyraźnych, jak i domniemanych, w tym między innymi domniemanych gwarancji przydatności handlowej i przydatności do określonego celu. Odbiorcy uznają i zgadzają się, że Instytut SAS nie ponosi odpowiedzialności za szkody wynikłe z użycia tego materiału. Ponadto Instytut SAS nie będzie popierał żadnych materiałów zawartych w niniejszym dokumencie. Te przykładowe pliki i przykłady kodu są dostarczane przez SAS Institute Inc., bez jakichkolwiek gwarancji, zarówno wyraźnych, jak i domniemanych, w tym między innymi domniemanych gwarancji przydatności handlowej i przydatności do określonego celu. Odbiorcy uznają i zgadzają się, że Instytut SAS nie ponosi odpowiedzialności za szkody wynikłe z użycia tego materiału. Ponadto Instytut SAS nie będzie popierał żadnych materiałów zawartych w niniejszym dokumencie. Obliczyć średnią ruchową zmiennej przez cały zestaw danych, w ciągu ostatnich N obserwacji w zbiorze danych lub w ciągu ostatnich N obserwacji w obrębie grupy BY.

No comments:

Post a Comment