Sunday 12 November 2017

Wejścia na sieci neuronowo sieciowe


Opis: Dwójka używająca wskaźników do bezpośredniej dystrybucji siatkówki neuronu (sieć neuronowa zasilająca), która ucząca się przez powrót propagacji błędów (backpropagacja). Sieć jest ładowana przez plik DLL, dołączony kod źródłowy C. Sieć neuronowa jest niczym więcej niż nieliniowymi modelami wyjściowymi w funkcji wejść. W wejściach wyświetlane były dane użytkownika, takie jak przykładowa seria czasowa. Znaczenie wyjścia jest również ustawiane przez użytkownika, na przykład sygnały 1 buy 0 sell. Struktura sieci, ponownie ustalona przez użytkownika. Sieć składa się z bezpośredniej dystrybucji - warstwy wejściowej (warstwy wejściowej), której elementami są wejścia, ukrytych warstw (ukrytych warstw), składających się z węzłów obliczeniowych zwanych neuronami i warstwą wyjściową (warstwą wyjściową), która składa się z jednego lub więcej neurony, plony są rentownościami w sieci. Wszystkie węzły sąsiednich warstw są połączone. Połączenia te nazywane są synapsami. Każdy synaps ma masę (w w i, j, k), które są mnożone przez dane przesyłane przez synapsy. Dane przesuwają się od lewej do prawej, czyli dane wejściowe z sieci do jej wyjść. Stąd nazwa bezpośrednia sieć dystrybucyjna. Całkowita próbka tej sieci jest przedstawiona na poniższym obrazku Dane są przetwarzane neuronami w dwóch krokach: 1. 1. Wszystkie wejścia pomnożone przez odpowiednią masę, dodaje się 2. 2. Następnie, otrzymana kwota obsługiwa aktywację neuron funkcji (funkcja aktywacji lub strzelania) oraz (funkcja aktywacji lub strzelania) i wysłana do jedynego wyjścia. Znaczenie funkcji aktywacji neuronu, podobnie jak neuron pracy mózgowej i mózgu: neuron jest wyzwalany dopiero po osiągnięciu pewnego progu. W aspektach matematycznych daje to jedynie sieć nielinearności. Bez tego, strata netto neuronu byłaby liniowym modelem autoregresji (model predykcji liniowej). Najczęstszą funkcją aktywacji jest neuron sigmoidalny f (x) 1 (1exp (-x)) f (x) 1 (1 exp (-x)) Próg aktywacji tej funkcji wynosi 0. Próg ten można przesunąć na osi poziomej kosztem dodatkowego neuronu wejściowego (wejściowe stronniczości) i nazywany skurczem wejściowym (wejście stronniczości), któremu przypisano pewną masę w taki sam sposób jak inne neurony wejściowe. W ten sposób liczba wejść, warstw, neuronów w każdej warstwie i wagi wejściowych neuronów obejmuje całą sieć neuronową, tj. Model nieliniowy, który tworzy. Aby skorzystać z tego modelu, musisz znać ciężar. Wagi są obliczane przez szkolenie sieci w przeszłych danych, tzn. Z poprzednimi danymi wejściowymi były znane wartości sygnału wyjściowego. Wagi sieci są zoptymalizowane tak, aby odpowiadały jej wynikom z testowym rozwiązaniem. Zazwyczaj dane wejściowe do sieci zawierały kilka zestawów danych wejściowych i odpowiadających im danych wyjściowych oraz obliczone średnie odchylenie błędów danych wyjściowych z testowania sieci. Sieć szkoleniowa ma na celu zmniejszenie tego problemu poprzez optymalizację ciężaru. Istnieje kilka metod optymalizacji, wśród których główny sposób propagowania błędów (ALO) i metoda poprawy genetycznej. Dołączone pliki: Train () Test (). Plik biblioteki BPNN. cpp zawiera dwie funkcje: Train () i Test (). Train () jest przeznaczony do szkolenia sieci w celu dostarczenia danych wejściowych i wyjściowych. Test () służy do obliczania danych wyjściowych w oparciu o wagi uzyskane po uruchomieniu Train (). Parametry wejściowe (zielone) i wyjściowe (niebieskie) funkcji Train () to: podwójna inpTrain - wejście (starsze pierwsze) double outTarget - Imprint (najstarsze pierwsze) double outTrain - wyjście z sieci po treningu int int - liczba treningów zestawy wejść i wyjść int UEW - zarządzanie kluczowymi wartościami zewnętrznymi, aby zainicjować odważniki (1 używać extInitWt, 0 używać liczb losowych) extInitWt - oryginalne wartości odważników podwójnie trenowaneWt - wartości wag po szkoleniu int NumLers - liczba warstw w sieci włączając dane wejściowe, ukryte i wyjściowe int lSz - rozmiary tablicy numLayers, które utrzymywały liczbę neuronów w każdej warstwie. lSz0 lSz 0 określa liczbę wejść sieciowych int OAF - kluczowa funkcja aktywacji neuronów wyjściowych (włączona 1 funkcja, 0 nie) podwójna LR - podwójna prędkość treningowa MF - moment uczenia się int nep - maksymalna liczba kroki szkoleniowe (epoki). Epoch polega na sprawdzeniu wszystkich zestawów szkoleniowych. double maxMSE - średni błąd, w którym przestaje się uczyć. Parametry wejściowe (zielone) i wyjściowe (niebieskie) funkcji Test () to: double inpTest - dane wejściowe (starsze pierwsze) double outTest - Imprint int ntt - zestawy danych wejściowych i wyjściowych double extInitWt - oryginalne wartości ciężarów numLayers - liczba warstw w sieci, w tym wejściowych, ukrytych i wyjściowych int lSz - tablic wielkości numLayers, które utrzymywały liczbę neuronów w każdej warstwie. lSz 0 określa liczbę wejść sieciowych int OAF - kluczowa funkcja aktywacji neuronów wyjściowych (włączona 1 funkcja, 0 nie). Użycie aktywacji neuronów wyjściowych zależy od charakteru wyjścia. Jeśli sygnały wyjściowe sieci są dwumianowe (0 1), musisz użyć funkcji aktywacji (OAF 1). Jeśli wyjście jest predykcją ceny, funkcja aktywacji w warstwie wyjściowej nie jest wymagana (OAF 0). Przykłady wskaźników neuronu Sieć: BPNN Predictor. mq4 - przewidywanie przyszłych cen. Parametry wejściowe sieci są względnymi przyrostami cen: x i Otwórz pasek testowy Otwórz opóźnienie testera i -1.0, przy czym opóźnienie z serii Fibonacciego. Wydajność sieci przewiduje relatywny wzrost przyszłych cen. Funkcja aktywacji w warstwie wyjściowej jest wyłączona. Parametry wejściowe są wskaźnikiem extern int lastBar - numer ostatniego paska z danymi intBBars - liczba przyszłych przewidywanych bajtów z zewnętrznych numerów - liczba warstw w sieci, w tym wejścia, liczby ukrytych i wyjściowych extern int numInputs - liczba wejść sieciowych zewnętrznych int numNeurons1 - liczba neuronów w warstwie 1 liczba zewnętrzna numNeurons2 - liczba neuronów w warstwie numer 2 extern int numNeurons3 extern int numNeurons4 extern int numNeurons5 extern int ntr - liczba zestawów treningowych nakładu wejściowego i wyjściowego podwójna LR - szybkość nauki sieci extern podwójna MF - współczynnik czasu sieci uczenia się zewnętrzny int nep - maksymalna liczba etapów treningowych (epoki) extern int maxMSEpwr - wykładnik używany do obliczania maksymalnego dozwolonego błędu średniego kwadratowego uczenia się maxMSE 10 maxMSEpwr Kupuj-Sprzedaj Classificator. mq4 - buysell. Buy-Sell Classificator. mq4 - wskaźnik predykcyjny kupuje sygnały sprzedające. Podobnie jak w poprzednim przykładzie, sieć wejściowa obsługiwała xiOpentestbarOpentestbardelayi-1.0 x i Otwórz pasek testowy Otwórz opóźnienie testera i -1.0 dla pasków, które w przeszłości otrzymały sygnał do zakupu lub sprzedaży. Te ostatnie sygnały są idealne jako sygnały wejściowe, aby uzyskać określony zysk. Sygnałem wyjściowym sieci jest 1 lub 0 buy sell. Funkcja aktywacji warstwy wyjściowej. extern int lastBar - numer ostatniego paska zewnętrznego int minProfit - minimalny zysk w celu znalezienia idealnego punktu wejścia w poprzednim zewnętrznym podwójnym progu - próg rozpoznawania sygnałów wyjściowych jako 0 lub 1 zewnętrznych numerów wewnętrznych - liczba warstw w sieć zawierająca dane wejściowe, ukryte i wyjściowe zewnętrzne int numInput - liczba wejść sieciowych zewnętrznych int numNeurons1 - liczba neuronów w warstwie numer 1 zewnętrzna int numNeurons2 - liczba neuronów w warstwie numer 2 zewnętrzna int numNeurons3 extern int numNeurons3 extern int numNeurons4 extern int numNeurons4 extern int numNeurons5 extern int ntr - liczba zestawów treningowych wejść / wyjść (w zależności od liczby sygnałów kupna w przeszłości, 0 wybiera wszystkie prawidłowe sygnały) extern double LR - szybkość uczenia się sieć zewnętrzna podwójna MF - współczynnik czasu uczenia się sieć zewnętrzna int nep - maksymalna liczba etapów szkolenia (epoki) extern int maxMSEpwr - wykładnik używany do obliczania maksymalnej liczby wszystkich Prawdopodobny błąd średnie-kwadratowy uczenia się maxMSE 10 maxMSEpwr Arrow na prawo od pionowych zielonych linii wskazuje sygnały kupna sprzedaży generowane przez sieć w celu testowania przyszłych pasków. Strzałki po lewej stronie przedstawiają optymalny punkt wejścia w przeszłości. Instalacja plików: Skopiuj załączony plik DLL w folderze C: Program Files MetaTrader 4 ekspertów Biblioteki Umożliwia korzystanie z biblioteki DLL w metażerze: Narzędzia - Opcje - Doradcy dla ekspertów - Zezwalaj na import plików DLL Jeśli plik DLL nie zadziała, skompiluj się. Wszystkie potrzebne pliki są zawarte w BPNN. zip. Hybrid Neural Network Strategia Stop i Reverse dla Forex przez Michael R. Bryant Sieci neuronowe były używane w systemach obrotu od wielu lat z różnym stopniem sukcesu. Ich główną atrakcją jest to, że ich nieliniowa struktura lepiej potrafi uchwycić złożoność ruchu cen niż standardowy, zasady handlu opartego na wskaźnikach. Jedną z krytycyzmów było to, że strategie handlowe dotyczące sieci neuronowych są zazwyczaj nadmierne, a zatem nie sprawdzają się na nowych danych. Możliwe rozwiązanie tego problemu polega na łączeniu sieci neuronowych z logiką strategiczną opartą na regułach, aby stworzyć hybrydowy rodzaj strategii. W tym artykule pokażemy, w jaki sposób można to zrobić przy użyciu programu Adaptrade Builder. W szczególności niniejszy artykuł ilustruje następujące zagadnienia: Łączenie sieci neuronowej i logiki opartej na regułach dla wejść handlowych Trzeci segment danych będzie używany, a trzeci segment służy do sprawdzania ostatecznych strategii. Otrzymany kod strategii dla MetaTrader 4 i TradeStation zostanie pokazany i udowodni się, że wyniki walidacji są pozytywne dla każdej platformy. Sieci neuronowe jako filtry wejścia handlu Matematycznie, sieć neuronowa jest nieliniową kombinacją jednego lub więcej ważonych wejść, które generują jedną lub więcej wartości wyjściowych. W handlu siecią neuronową stosuje się na ogół na jeden z dwóch sposobów: (1) jako prognozę przyszłego ruchu cen, lub (2) jako wskaźnik lub filtr do obrotu. W tym miejscu rozważa się jego wykorzystanie jako wskaźnik lub filtr handlowy. Jako wskaźnik, sieć neuronowa działa jako dodatkowy warunek lub filtr, który musi być spełniony przed wprowadzeniem handlu. Dane wejściowe do sieci to zazwyczaj inne wskaźniki techniczne, takie jak pęd, stochastyka, ADX, średnie ruchome itd., A także ceny i kombinacje poprzednich. Wejścia są skalowane, a sieć neuronowa jest tak skonstruowana, że ​​wartość wyjściowa wynosi od -1 do 1. Jednym z podejść jest umożliwienie długiego wejścia, jeśli wyjście jest większe lub równe wartościom progowym, na przykład 0,5 i krótkie wprowadzenie, jeśli wyjście jest mniejsze lub równe ujemnemu progu np -0,5. Ten warunek byłby uzupełnieniem istniejących warunków wjazdu. Na przykład, jeśli był długi stan wejścia, to musiał być prawdziwy, a wyjście sieci neuronowej musiałoby być co najmniej równe wartości progowej dla długiego wpisu. Podczas konfigurowania sieci neuronowej przedsiębiorca byłby odpowiedzialny za wybór wejść i topologii sieci oraz do quintrainingquot sieci, która określa wartości optymalnego ciężaru. Jak zostanie pokazane poniżej, program Adaptrade Builder wykonuje te kroki automatycznie jako część procesu ewolucyjnego budowania, na którym opiera się oprogramowanie. Zastosowanie sieci neuronowej jako filtra handlowego pozwala na łatwe połączenie z innymi regułami w celu stworzenia strategii hybrydowej, która łączy najlepsze cechy tradycyjnych metod opartych na regułach z zaletą sieci neuronowych. Jako prosty przykład Builder może łączyć średnią ruchomą zasadę crossoveru z siecią neuronową, tak aby długa pozycja była pobierana, gdy średnia ruchoma szybko przecinała się powyżej średniej wolnej średniej, a wyjście sieci neuronowej jest powyżej lub powyżej jego progu. Strategie handlowe typu stop-and-reverse Strategia handlowa typu stop-and-reverse jest na rynku zawsze lub na dłuższą metę. Ściśle mówiąc, quotstop-and-reversequot oznacza odwrócenie handlu, gdy zlecenie stop zostanie trafione. Jednak używam go jako krótkiej ręki dla każdej strategii handlowej, która odwraca się od długiego do krótkiego i długiego itd., Więc jesteś zawsze na rynku. Zgodnie z tą definicją nie jest konieczne, aby zamówienia były nakazem zaprzestania. Możesz też wejść i odwrotnie, korzystając z zamówień na rynku lub limitów. Nie jest też konieczne, aby każda strona używała tej samej logiki lub nawet tego samego typu zlecenia. Można na przykład wprowadzić długie (i zamknąć krótkie) w kolejności zatrzymania i wprowadzić krótkie (i zamknąć się długie) w kolejności rynkowej, przy użyciu różnych reguł i warunków dla każdego wpisu. Byłby to przykład asymetrycznej strategii stop-and-reverse. Podstawową zaletą strategii "stop-and-reverse" jest to, że zawsze na rynku nigdy nie tracisz żadnych dużych ruchów. Inną zaletą jest prostota. Kiedy istnieją oddzielne zasady i warunki wprowadzania i wychodzenia z transakcji, istnieje większa złożoność, a co więcej może się nie zgadzać. Połączenie wpisów i wyjść oznacza mniej decyzji dotyczących czasu, co może oznaczać mniej błędów. Z drugiej strony można dowieść, że najlepsze warunki wyjścia z handlu są rzadko takie same, jak w przypadku wejścia w przeciwnym kierunku, że wchodzenie i wychodzenie z handlu są z natury osobnymi decyzjami, które powinny zatem zawierać odrębne zasady i logikę. Inną potencjalną wadą na rynku jest zawsze to, że strategia będzie się rozwijać przez każdą lukę otwarcia. Duża luka otwarcia przed pozycją może oznaczać dużą stratę, zanim strategia będzie w stanie odwrócić. Strategie, które wchodzą i wychodzą bardziej selektywnie lub kończą się do końca dnia, mogą zminimalizować wpływ luk otwierających. Ponieważ celem jest budowa strategii forex, MetaTrader 4 (MT4) jest oczywistym wyborem dla platformy transakcyjnej, ponieważ MetaTrader 4 jest przeznaczony przede wszystkim dla forex i jest powszechnie używany do handlu tymi rynkami (zobacz na przykład MetaTrader vs. TradeStation : Porównanie języka). Jednak w ostatnich latach TradeStation skierował się na rynki walutowe znacznie bardziej agresywnie. W zależności od poziomu wolumenu obrotu i konta, możliwe jest dokonywanie transakcji na rynku forex za pośrednictwem TradeStation bez ponoszenia żadnych opłat za platformy ani płacenia prowizji. Spread są podobno napięte z dobrą płynnością na głównych parach forex. Z tych powodów obie te platformy zostały przeznaczone na ten projekt. Kilka problemów pojawia się podczas jednoczesnego adresowania wielu platform. Po pierwsze, dane mogą być różne na różnych platformach, z różnicami w strefach czasowych, notowaniach cen na niektórych słupkach, woluminie i dostępnych zakresach dat. Aby wygładzić te różnice, dane uzyskano z obu platform, a jednocześnie opracowano strategie obu serii danych. Najlepszym rozwiązaniem były te, które działały dobrze w obu seriach danych pomimo różnic w danych. Ustawienia danych zastosowane w programie Builder przedstawiono na rys. 1. Jak można wywnioskować z tabeli danych rynkowych na rysunku, na rynku walutowym Eurodollar skierowano (EURUSD) na pasek o długości 4 godzin (240 minut). Inne rozmiary i rynki barów również dobrze sobie radzą. Mogłem tylko uzyskać tyle danych za pomocą mojej platformy MT4, jak wskazano w zakresie dat przedstawionym na rys. 1 (seria 2), więc przy uzyskiwaniu równowartości danych z TradeStation (seria danych 1) wykorzystano taki sam zakres dat, . 80 danych wykorzystano do Budowania (połączone w próbce i wycięcie próbki), z 20 (62017 do 21015) przeznaczonych do walidacji. 80 z oryginału 80 zostało ustawione na próbkę quotin-samplequot z 20 zestawami na próbkę z wycinków, jak pokazano na rysunku 1. Szerokość bidasha została ustawiona na 5 pipsów, a koszty handlowe 6 pipsów lub 60 na pełny - wielkość partii (100.000 akcji) została przyjęta na rundę. Obie serie danych zostały uwzględnione w buforze, co zaznaczono znakami kontrolnymi w lewej kolumnie tabeli danych rynkowych. Rysunek 1. Ustawienia danych rynkowych dla budowania strategii forex dla programu MetaTrader 4 i TradeStation. Innym potencjalnym problemem przy kierowaniu na wiele platform jest to, że Builder ma na celu zduplikowanie sposobu, w jaki każda obsługiwana platforma oblicza wskaźniki, co może oznaczać, że wartości wskaźników będą różne, w zależności od wybranej platformy. Aby uniknąć tego możliwego rozbieżności, wszelkie wskaźniki, które różnią się w programie MetaTrader 4 niż w TradeStation, należy wyeliminować z kompilacji, co oznacza, że ​​należy unikać następujących wskaźników: Wszystkie pozostałe wskaźniki dostępne dla obu platform obliczane są w taki sam sposób obie platformy. TradeStation zawiera wszystkie wskaźniki, które są dostępne w Builderze, podczas gdy MetaTrader 4 nie. W związku z tym, aby uwzględnić tylko wskaźniki, które są dostępne w obu platformach, platforma MetaTrader 4 powinna zostać wybrana jako typ kodu w Builderze. To automatycznie usunie wszelkie wskaźniki z zestawu build, które nie są dostępne dla MT4, co pozostawia wskaźniki, które są dostępne w obu platformach. Ponadto, ponieważ zauważyłem różnice w danych dotyczących woluminu uzyskanych z każdej platformy, usunęliśmy wszystkie zestawy wskaźników zależnych od objętości z zestawu build. Wreszcie wskaźnik czasu został usunięty z powodu różnic w strefach czasowych między plikami danych. Na rysunku 2 poniżej znajduje się lista wskaźników używanych w zestawie buildów w zależności od tego, czy wskaźnik został wzięty pod uwagę w procesie kompilacji (kolumna "Csonsiderquot"). Wskaźniki usunięte z rozważania z powodów omówionych powyżej są wyświetlane u góry listy. Pozostałe wskaźniki, zaczynając od numeru seryjnego Mov Avequot, były częścią pakietu build. Rysunek 2. Wybór wskaźników w programie Builder, pokazujący wskaźniki usunięte z zestawu build. Opcje oceny używane w procesie tworzenia są pokazane na rys. 3. Jak omówiono, MetaTrader 4 został wybrany jako wybór wyjścia kodu. Po budowaniu strategii w programie Builder można zmienić dowolną z opcji na karcie Opcje oceny, w tym typ kodu, i poddać ponownej ocenie strategie, które również przepisać kod w wybranym języku. Ta funkcja została wykorzystana do uzyskania kodu TradeStation dla ostatecznej strategii po stworzeniu strategii dla programu MetaTrader 4. Rysunek 3. Opcje oceny w programie Builder dla strategii forex EURUSD. Aby utworzyć strategie typu stop-and-reverse, wszystkie typy wyjść zostały usunięte z zestawu build, jak pokazano poniżej na rysunku 4. Wszystkie trzy typy zamówień - rynek, stop i limit - zostały pozostawione jako przyzwoitkowe ilości, co oznacza proces budowania mógłby rozważyć którykolwiek z nich podczas procesu tworzenia. Rysunek 4. Typy zamówień wybrane w Builder do utworzenia strategii stop-and-reverse. Oprogramowanie Builder automatycznie generuje logiczne warunki regułowe dla wejść i wyjść. Aby dodać strategię do sieci neuronowej, wystarczy tylko wybrać opcję "Załączyć sieć neuronową" w oknie dialogowym Opcje strategii, tak jak to pokazano poniżej na rysunku 5. Ustawienia sieci neuronowych pozostawiono domyślne. W ramach logiki stop-i-reverse, opcja Srebrny stron została ustawiona na LongShort, a opcja wycofania z wiersza polecenia przed wejściem do nowej wersji była niezaznaczona. Ten ostatni jest konieczny, aby umożliwić polecenie wejścia, aby wyjść z aktualnej pozycji na odwrocie. Pozostałe ustawienia zostały pozostawione domyślnie. Rysunek 5. Opcje strategii wybranych w Builder do stworzenia strategii hybrydowej wykorzystującej zarówno warunki reguł i sieci neuronowych. Ewolucyjna natura procesu budowania w Builderu jest prowadzona przez fitness. która jest obliczana na podstawie celów i warunków określonych na karcie Metrics, jak pokazano poniżej na rysunku 6. Cele budowania były proste: zmaksymalizowanie zysku netto przy jednoczesnej minimalizacji złożoności, która miała niewielki wpływ na zysk netto. Większy nacisk kładziono na warunki zabudowy, obejmujące współczynnik korelacji i znaczenie dla ogólnej jakości strategii, a także przeciętne bary w obrocie handlowym i liczbę branż. Początkowo tylko przeciętne słupki w handlu zostały włączone jako warunek budowy. Jednak w niektórych wczesnych buduch zyski netto były sprzyjane w stosunku do długości handlowej, więc dodano metryczkę liczby transakcji. Określony zakres liczby transakcji (od 209 do 418) jest równoważny średnim długościom handlu od 15 do 30 barów w oparciu o liczbę pasków w okresie budowy. W rezultacie dodanie tego wskaźnika kładło większy nacisk na cel o długości handlowej, co doprowadziło do zwiększenia liczby członków społeczeństwa o pożądanym zakresie długości handlowych. Rysunek 6. Budowanie celów i warunków określonych na karcie Metryki decyduje o sposobie obliczania sprawności. Konkluzje dotyczące wybierania najlepszych strategii powodują zduplikowanie warunków budowy, z wyjątkiem sytuacji, w których warunki najlepszych strategii są oceniane w całym zakresie danych (bez uwzględnienia segmentu walidacji, który jest osobny), a nie tylko w okresie budowy, tak jak ma to miejsce w przypadku budować warunki. Najważniejsze warunki strategii są wykorzystywane przez program w celu uchylenia wszelkich strategii, które spełniają wszystkie warunki w odrębnej populacji. Ostateczne ustawienia są dostępne na karcie Opcje budowy, jak pokazano poniżej na rys. 7. Najważniejsze opcje to wielkość populacji, liczba pokoleń i możliwość zresetowania w oparciu o wydajność wyceny na próbkę. Wielkość populacji została wybrana tak, aby była wystarczająco duża, aby uzyskać dobrą różnorodność w populacji, a jednocześnie wystarczająco mała, aby można było zbudować w rozsądnym czasie. Liczba pokoleń opierała się na tym, ile czasu zajęło się w trakcie kilku wstępnych kompilacji, aby wyniki zaczęły się zbiegać. Rysunek 7. Opcje budowania obejmują wielkość populacji, liczbę pokoleń i opcje zerowania populacji w oparciu o wydajność pod względem liczby kliknięć. Opcja kwerendy Retset na Próbce niesprawdzonej (OOS) Performancequot rozpoczyna proces budowy po określonej liczbie pokoleń, jeśli w tym przypadku zostanie spełniony określony warunek, populacja zostanie zresetowana, jeśli kwotowany zysk próbki netto mniej niż 20 000. Wartość ta została wybrana na podstawie wstępnych testów, aby być wystarczająco wysoką wartością, że prawdopodobnie nie zostanie osiągnięta. W rezultacie proces tworzenia został powtórzony co 30 pokoleń dopóki nie zostanie ręcznie zatrzymany. Jest to sposób, aby program określił strategie oparte na zasadach dotyczących najlepszych strategii przez dłuższy okres czasu. Okresowo można zbadać populację strategii Top oraz anulować proces tworzenia, gdy zostaną znalezione odpowiednie strategie. Zauważ, że umieścić quotout-of-samplequot w cudzysłów. Kiedy okres próbkowania jest wykorzystywany do zresetowania populacji w ten sposób, okres wyceny próbki nie jest już naprawdę pozbawiony próbki. Od tego czasu jest obecnie używany do prowadzenia procesu kompilacji, jego skutecznie część okresu próbkowania. To dlatego, że wskazane jest odłożenie trzeciego segmentu dla walidacji, jak omówiono powyżej. Po kilku godzinach przetwarzania i wielu automatycznych odbudowaniach, w strategii Top populacja znalazła się odpowiednia strategia. Jego zamknięta krzywa w handlu jest pokazana poniżej na rys. 8. Krzywa kapitału wykazuje spójne wyniki w obu segmentach danych z odpowiednią liczbą transakcji i zasadniczo takie same wyniki w obu seriach danych. Wykres 8. Krzywa słupów w handlu zamkniętym dla strategii stop-and-reverse EURUSD. Aby sprawdzić strategię w okresie zatwierdzania, data jest kontrolowana na karcie Rynki (patrz rys. 1) została zmieniona na datę zakończenia danych (2112018), a strategia została poddana ponownej ocenie, wybierając polecenie Oceniaj z strategii menu w Builderze. Wyniki są pokazane poniżej na Fig. 9. Wyniki walidacji w czerwonym polu pokazują, że strategia utrzymywała się na danych nie używanych podczas procesu kompilacji. Wykres 9. Krzywa słupów w handlu zamkniętym dla strategii stop-and-reverse EURUSD, w tym okres walidacji. Ostatecznym sprawdzeniem jest sprawdzenie, w jaki sposób strategia wykonywana była w każdej serii danych oddzielnie za pomocą opcji wyjścia kodu dla tej platformy. Jest to konieczne, ponieważ, jak wyjaśniono powyżej, mogą występować różnice w wynikach w zależności od (1) typu kodu i (2) serii danych. Musimy zweryfikować, czy wybrane ustawienia minimalizują te różnice, zgodnie z planem. Aby przetestować strategię MetaTrader 4, seria danych z TradeStation została odznaczona na karcie Markets, a strategia została poddana ponownej ocenie. Wyniki pokazano poniżej na rys. 10, który duplikuje krzywą dolną na rys. 9. Rysunek 10. Krzywa słupów w handlu zamkniętym dla strategii stop-and-reverse z EURUSD, w tym okresu walidacji, dla MetaTrader 4. Na koniec, przetestuj strategię TradeStation, wybrano serię danych z TradeStation, a seria MetaTrader 4 została usunięta na karcie Rynki, a dane wyjściowe kodu zostały zmienione na quotTradeStation, a strategia została przeanalizowana. Wyniki pokazano poniżej na Fig. 11 i wydają się być bardzo podobne do średniej krzywej na Fig. 9, zgodnie z oczekiwaniami. Wykres 11. Krzywa ułamków w handlu zamkniętym dla strategii stop-and-reverse EURUSD, w tym okresu walidacji, dla TradeStation. Kod dla obu platform znajduje się poniżej na rys. 12. Kliknij obraz, aby otworzyć plik kodu odpowiedniej platformy. Analiza kodu ujawnia, że ​​w oparciu o reguły strategia wykorzystuje różne warunki związane z niestabilnością dla długich i krótkich stron. Wejścia sieci neuronowych składają się z różnych wskaźników, w tym z dnia tygodnia, trendów (ZLTrend), wysokich w ciągu dnia, oscylatorów (InvFisherCycle, InvFisherRSI), pasm Bollingera i odchylenia standardowego. Hybrydowy charakter strategii można zobaczyć bezpośrednio w kodzie (z kodu TradeStation): Jeśli EntCondL i NNOutput gt 0,5 następnie rozpocznij kupowanie akcji NShares na następnym pasku na rynku Zmienna quotEntCondLquot reprezentuje pozycję regułową warunki, a quotNNOuputquot jest wyjściem sieci neuronowej. Oba warunki muszą być prawdziwe, aby umieścić długie zamówienie. Krótki warunek wejścia działa w ten sam sposób. Rysunek 12. Kod strategii handlowej dla strategii EUR / USD stop-and-reverse (po lewej, MetaTrader 4 po prawej, TradeStation). Kliknij rysunek, aby otworzyć odpowiedni plik kodu. Pobierz plik projektu Builder (.gpstrat) zawierający ustawienia opisane w tym artykule. W tym artykule omówiono proces tworzenia hybrydowej strategii sieciowej opartej na regułach dla EURUSD przy użyciu podejścia typu stop-and-reverse (zawsze w rynku) z programem Adaptrade Builder. Wykazano, jak można wygenerować kod strategiczny dla wielu platform, wybierając wspólny podzbiór wskaźników działających w ten sam sposób na każdej platformie. Opisano konieczne do wygenerowania strategie odwrotne od długiego do krótkiego i plecowego, i wykazano, że uzyskana strategia pozytywnie oddziaływała na oddzielny segment weryfikacji danych. Sprawdzono również, że strategia generowała podobne wyniki z danymi i opcją kodu dla każdej platformy. Jak omówiono powyżej, podejście typu stop-and-reverse ma wiele wad i nie może być atrakcyjne dla wszystkich. Jednak podejście zawsze w rynku może być bardziej atrakcyjne z danymi forex, ponieważ rynki walutowe działają na rynku przez całą dobę. W rezultacie nie ma luk w otwieraniu sesji, a zlecenia handlowe zawsze są aktywne i dostępne do odwrócenia handlu, gdy rynek się zmienia. Wykorzystanie danych dziennych (4-godzinne słupki) dostarczyło więcej pasków danych do wykorzystania w procesie tworzenia, ale w przeciwnym razie było dość arbitralne, ponieważ zawsze w sprzedaży natura strategii oznacza, że ​​transakcje są przenoszone w ciągu jednego dnia. Proces kompilacji pozwolił wymyślić różne warunki wprowadzania długich i krótkich, co skutkowało asymetryczną strategią stop-and-reverse. Pomimo nazwy, powstała strategia obejmuje długie i krótkie transakcje na zleceń rynkowych, chociaż zamówienia na sprzedaż, stop i limit zostały uwzględnione w procesie budowania niezależnie dla każdej ze stron. W praktyce odwrócenie się od długiego do krótkiego oznaczałoby sprzedaż krótkiej dwukrotnie większej liczby akcji na rynku, ponieważ strategia była na razie długa. jeśli obecna pozycja długoterminowa wynosi 100.000 akcji, sprzedajesz krótko 200 000 akcji na rynku. Podobnie, jeśli obecna pozycja krótka to 100 000 akcji, kupiłbyś 200 000 akcji na rynku, aby odwrócić się od krótko - i długiej. Zastosowano krótszą historię cen niż byłoby to idealne. Niemniej jednak wyniki były pozytywne w segmencie walidacji, sugerując, że strategia nie była nadmierna. To popiera ideę, że sieć neuronowa może być wykorzystana w strategii handlowej, niekoniecznie nadmiernie dopasowanej do strategii strategii. Przedstawiona strategia nie jest przeznaczona do rzeczywistego obrotu ani nie została przetestowana w śledzeniu w czasie rzeczywistym lub w handlu. Ten artykuł może jednak służyć jako szablon do opracowywania podobnych strategii dla EURUSD lub innych rynków. Jak zawsze każda strategia handlowa, którą rozwijasz, powinna być dokładnie przetestowana w śledzeniu w czasie rzeczywistym lub na oddzielnych danych w celu potwierdzenia wyników i zapoznania się z charakterystyką handlową strategii przed rozpoczęciem handlu na żywo. Ten artykuł został opublikowany w biuletynie Adaptrade Software w lutym 2018 roku. WYNIKI WYDAJNOŚCI HIPOTETYCZNEJ LUB SYTUROWANEJ WYNIKAJĄCE Z NINIEJSZEJ OGRANICZENIA. NIE PRZEWIDZIEĆ, ŻE INNE WYNIKI WYDAJNOŚCI, SYTUROWANE WYNIKI NIE UDZIELAJĄ RĘCZNEJ REKRUTACJI. Także od czasu, w którym targi nie były realizowane, rezultaty mogą być niższe lub bardziej kompensowane pod względem wpływu, jeśli jakiekolwiek są pewne czynniki rynkowe, takie jak brak płynności. SYMBOLE PROGRAMY TRADYCYJNE W OGÓLNYCH MOGĄ ZOSTAĆ FUNKCJONOWANE Z FUNKCJONAMI, KTÓREGO ZOSTAJE ZAPROPONOWANE ZE ŚWIADECTWO HINDSIGHT. ŻADNA OŚWIADCZENIE ZOSTAŁO WYKONANE, ŻE JAKĄKOLWIEK KONTO LUB JEST LIKWIDOWANE DO OSIĄGNIĘCIA ZYSKÓW LUB STRATYCH PODOBNYCH DO TEGO MIEJSCA. Jeśli chcesz być informowany o nowych wydarzeniach, nowościach i specjalnych ofertach od Adaptrade Software, dołącz do naszej listy e-mailowej. Dziękuję. Nieberalne sieci w handlu: Wybieranie wejść i wyjść Podczas tworzenia sieci neuronowej jedną z pierwszych rzeczy, które musisz zdecydować, są wartości, które będą wartościami wejściowymi, a które wartości będą wartościami wyjściowymi sieci. Wyjściami są wartości, które chcesz przewidzieć, aby osiągnąć zyski w systemie handlowym 8211, a wartością wejściową są wartości, które pozwolą przewidzieć dane wyjściowe z wystarczającą dokładnością, aby spowodować nieefektywność. Obecnie wybór wejść i wyjść nie jest zadaniem prostym, ponieważ stanowi większość sukcesu lub porażki sieci neuronowych. W dzisiejszym tekście roku będę podzieliła się ze mną wskazówkami dotyczącymi wyboru wejść i wyjść oraz sposobu, w jaki mogą prowadzić do nieefektywności w sposób, który może być bardzo intuicyjny. Wyjaśnię także, dlaczego najbardziej rozsądnie rozsądne rozwiązania wejścia mogą być nie najlepsze i dlaczego tak jest. Sieć neuronowa jest tworzona przez zestaw warstw funkcji, które zmieniają pewien zestaw zmiennych wejściowych (warstwa wejściowa) w określony zestaw wartości wyjściowych (warstwa wyjściowa). Pomiędzy warstwami wejściowymi i wyjściowymi znajduje się różnorodna liczba warstw i funkcji (neuronów) 8211, w zależności od wybranego elementu 8211, który będzie próbował przekształcić dane wejściowe w wyjściach z możliwie najmniejszym błędem. Odbywa się to za pomocą zestawów szkoleniowych, które pozwalają sieciowi dostosować współczynniki ukrytej warstwy do zestawu danych, dla których dane wejściowe i wyjściowe są już znane. Nadzieja polega oczywiście na tym, że sieć będzie miała co najmniej tę samą moc predykcyjną w ramach nie przeszkolonego zestawu. The first thing you need to choose when you build a neural network for trading is exactly what values you want to predict. Do you want to predict the next day8217s close The next week8217s close The next support or resistance level Choosing the output of the network first allows you to know how you8217re going to build your inputs as you need to choose values that are able to predict the desired output. A very important thing here is to consider how you will normalize the output and if the output falls into what the neural network is 8220best at doing8221. Remember that in neural networks output values need to range from -1 to 1 (when using efficient sigmoid symmetric functions) since arbitrary outputs require the use of linear functions which are 8220very bad8221 at fitting the network. Once you choose the output you want the next logical step is to build inputs that you believe are predictive towards this output. Certainly before building the network there is no way of telling if one input will be better than another but you can obviously reduce the amount of variables you will use by doing a PCA (Principal Component Analysis) to filter out those variables which are evidently and heavily correlated. For example you might be interested in predicting the next week8217s close and you decide to use as inputs past weekly closes, open, highs and lows but it turns out that a PCA analysis 8211 as an example, I don8217t know if this is the case 8211 tells you that the close and open are very correlated and therefore it makes sense to only use the close, high and low. The PCA technique allows us to eliminate those variables which might be redundant within the network and therefore only increase complexity without increasing the quality of the results. Once you have a set of variables which are not correlated it is time to test how much predictive power they actually have against your desired output. If the results are initially discouraging it may be because you are missing an important piece of information within your inputs or because the shape of your output isn8217t appropriate. For example if you want to predict the weekly close and you have attempted to normalize it by diving it over the last week8217s close and then dividing it by two then doing a different mathematical operation over the output might increase the predictive quality of your network. Sometimes including information related with all inputs within the output can be a handy trick to 8220force8221 the network into 8220using8221 every piece of knowledge it has although the results will vary and you will need to assess which one works better. A very difficult aspect of neural network development for trading systems is to actually choose outputs which are useful for trading system development and yet accurate enough. For example you may be tempted to choose outputs and inputs that are very efficient for the neural network 8211 such as an output between 0 an 1 attempting to predict a week8217s change 8211 but it turns out that this is not predicted as well as predicting the week8217s close because predicting the weekly change using weekly change data makes the network loose a very important piece of information (absolute support and resistance levels) which are derived from direct price information. From a computational point of view it seems like the best solution but from a trading point of view you8217re missing a vital piece of information which is not included in weekly change data. A very interesting thing I have found out in the networks I have developed for Sunqu is that the use of absolute price values is very good since the network learns about support and resistance levels as they develop, actually trading around them in a certain way. Obviously the actual calculations done by the networks and their meaning are not known (remember that a neural network is for all practical purposes a black box) but looking at how trades are executed by the network shows a certain 8220taking into account8221 of things such as support and resistance. Since price is what you want to capture then taking into account absolute price values and basing predictors on them is a more straighforward way to system building than attempting to develop indicator output based networks. However this doesn8217t mean that you couldn8217t get good results in this way. Predicting things like RSI extremes will allow you to take advantage of rapid price movements before they happen and predicting moving average shifts in the long term will allow you to take long term trend following positions. Nonetheless whatever you want to predict (your output choice) needs to be accompanied by a very judicious decision of which inputs you will use, reinforced by an adequate PCA analysis which can show you the quality of your inputs and how well separated they are from one another. The pair choice will also be very important as certain pairs need fundamental inputs as they deeply affect the way in which they behave (a good example is a USDCAD neural network using US oil futures data). If you would like to learn more about my work in automated trading and how you too can get a true education in this field please consider joining Asirikuy. a website filled with educational videos, trading systems, development and a sound, honest and transparent approach towards automated trading in general. I hope you enjoyed this article. o)Neural Networks I personally feel that in order for us to create a truly robust Trading System we need to think outside the box. I also feel that we need to develop new tools rather than try to optimize old methods. It is amazing to see everyone here work so hard at building systems and for the benefit of all. I guess thats why I stopped lurking and would like to contribute. A few things I have been interested in and have been working on. Spectral Analysis. I have some software to create digital filters of raw price action. Neural Networks: cool but still boggles my mind. Market Sentiment: ideas in PDFs Attached Is anyone interested in brainstorming I think I will start with a lagging digital filter on the 30 minute euro. Neural Network Indicators Development Im trying to make some neural network indicators for metatrader4, and would like some sugestions, mostly regarding inputs and outputs of the net, and maybe the structure or type of net that you consider the best for this application. As far as in know the best outputs for financial series forecasting, are price range forcasting, tops or bottoms forecasting, and that tipe of things. Forecasting directly the price (open, close) doesnt get good results because to numerous reasons, for example a little shift on the time between the open time and the close time could change their values considerately. If anyone has a sugestion ill be glad to listen to it and try it. By the way, im no expert neural network programmer, i just have a good overall idea on the subject P. Thanks in advance, Im trying to make some neural network indicators for metatrader4, and would like some sugestions, mostly regarding inputs and outputs of the net, and maybe the structure or type of net that you consider the best for this application. As far as in know the best outputs for financial series forecasting, are price range forcasting, tops or bottoms forecasting, and that tipe of things. Forecasting directly the price (open, close) doesnt get good results because to numerous reasons, for example a little shift on the time between the open time and the close time could change their values considerately. If anyone has a sugestion ill be glad to listen to it and try it. By the way, im no expert neural network programmer, i just have a good overall idea on the subject P. Thanks in advance, NN is my thesis couple years ago. but almost forgotten now This idea can refresh my mind again. I think NN based on pattern recognition using backpropagation is good for forex data mining. Im prefer using high low data to feed the NN in order to predict the next daily range data.. I also think using high and low is much better than using open or close, to be truth i dont really like the open and close values for intraday analisis, as they seem rather inestable values if you make a displacement on when you place your start point. Median price also looks good, but i prefer highlow as the information loss in less. Ill probably use a moving average of the high and one of the low. Ive found the JMA to be a really good filter in comparison to regular MAs so ill do my first tests using a short period JMA without phase changes to avoid distorsion. So far the inputs im considering for predicting future ranges are: - JMA of High JMA of Low. - Date (Day of Month, ex. Monday, Thuesday. ). The other idea i have in mind is to use NN to forecast news events direction. I have a quite big database of forex fundamentals since some years, so i may use those as inputs. As for what type of neural network to use, im still doing some research, backpropagation NNs are the common standard for NNs, but there are others that seem to have very good results, like the time lagged recurrent networks (but they are hard to train and understand). Other idea i had, was to use a Fukushima NN, those are mainly made for image processing, but with some modifications i think they could be used for pattern recognition on timeseries. It is the thread where people are developing Neural Networks indicator for MT4. In Russian language, sorry. - they started with some e-books and articles - then some library files for Delphi 4 (NeuralBase, Neural Network Wizard, GeneBase, SOMBase, WavUtils) - then they coded many versions of indicator NeuroProba. mql4 (author is Rosh) - then they tested it and found many bugs and mistakes in calculation. This thread is not closed yet and seems they are continuing to development (it is necessary to register on their forum to see the attachments). Besides I found this link about Neural Networks (in English). It is the thread where people are developing Neural Networks indicator for MT4. In Russian language, sorry. - they started with some e-books and articles - then some library files for Delphi 4 (NeuralBase, Neural Network Wizard, GeneBase, SOMBase, WavUtils) - then they coded many versions of indicator NeuroProba. mql4 (author is Rosh) - then they tested it and found many bugs and mistakes in calculation. This thread is not closed yet and seems they are continuing to development (it is necessary to register on their forum to see the attachments). Besides I found this link about Neural Networks (in English). Awsome New Digital Ill look at the material in a few minutes. gotta break out the russian..which isnt so great, but I think that coupled with AltaVista ill be able to make a decent attempt. Im currently coding in CORTEX on other Neural Networks (NN from now on) and im planning to convert into MQ4. I think we should DEFINATLY keep this thread going because (and this is an opinion) NN are THE future of tecnical anaylsis. NNs, for those who arent geek enough to know..are basically algorythms that mimic the brain (not nessisarily the human brain..cuz that would be Mind bustingly complicated) in that it learns as it goes. Im writing the EAs to give advice on whether or not to take a particular signal based on small patterns that have come before when a similer signal was given. Thats what most NNs do, they search data for small patterns that would be meaningless to us, or even other algorthms and see what those patterns do over time. The first EA will feature Brain Trend. I ask that everyone be patient though, CORTEX coding takes time. rather, it takes time to train the NNs and perfect them. If anyone here is familier with CORTEX or Code conversion, any help would be appreciated. I understand why russian forum would go commercial. NNs are the current style with big money traders. Więc. what do you guys say i say take 2 moving averages, few sup-res lines and 1 or two filters and trade if you cant make money of simple system like this than dont expect from some NN to make you rich from my 3 years forex expirience i know how i would build perfect system but it will be long long coding. at leats 3 time frames to look, covering all possible situations, range, trend. and then aplying few systems together to get perfect results my advice to you is if you know how to trade than first trade, make money and one day when you have enaugh you can try to make NN JUST JOKING but botom line you dont need some NN to make money trading i spent second year of my trading making programms and testing dosens of systems and one day i realise i am not trading any of them and lot was good, profitable. i had first to reprogramm my brain to avoid fear, greed. and to discipline myself (and lost almost 70 of my account during that time) first find good system (there is several good here) make money, learn and than try to teach this NN to trade this system or just make EA to autotrade for you and when you make enaugh money you can buy comercial NN i say take 2 moving averages, few sup-res lines and 1 or two filters and trade if you cant make money of simple system like this than dont expect from some NN to make you rich from my 3 years forex expirience i know how i would build perfect system but it will be long long coding. at leats 3 time frames to look, covering all possible situations, range, trend. and then aplying few systems together to get perfect results my advice to you is if you know how to trade than first trade, make money and one day when you have enaugh you can try to make NN JUST JOKING but botom line you dont need some NN to make money trading i spent second year of my trading making programms and testing dosens of systems and one day i realise i am not trading any of them and lot was good, profitable. i had first to reprogramm my brain to avoid fear, greed. and to discipline myself (and lost almost 70 of my account during that time) first find good system (there is several good here) make money, learn and than try to teach this NN to trade this system or just make EA to autotrade for you and when you make enaugh money you can buy comercial NN I know what you mean I spend months going over historical data for all kinds of indicators and systems. and the bottom line is that any number of them could make pips on any given trade. All im saying here is that it would be nice to have an INDIPENDANT system, that works in a DIFFERENT way to either confirm or deny what your indicator or system is telling you. I trade with Brain Trend, MTFMACD, MoneyMap (MQ4 version) and I do pretty well. But it would still be nice to have that secondary system running in the background to say based on 15 years of historical data, this signal when occuring with this currency pair, in this time frame, with this volume, has proven to be unreliable, I cant advice this trade Yes, some might call it overkill. but I call it having a FOREX pro wathcing over my shoulder. For as long as humans are creatures of habit and continue to create cycles (of any size) I would argue that this is what a well trained FOREX NN would be. I dont call that overkill if it keeps me from losing some chips. Our experiances seem strikingly similer, though, im a newbie. just starting my second year as a trader trading with real money. I spent the last several months just going over indicators THAT I KNEW WORKED. and just spinning my wheels..for fear of making bad trades. But..I guess thats why I want to develope the NN. it doesnt know fear, and responds to market data the way no human can. They can find meaning in the smallest of price patterns. things that our ordinary indicators cant. If MQ4 indicators are binoculars..then the NN is the hubble. I think its worth developing here. Thanks NewDigital, I found a copy of neuroproba. It looks interesting. I dont see any bugs in the MQ4 file, but without seeing the script for the NN I cant say if it is accurate or not. one reason people might have given up on it is that for it to do anything but show two horizontal lines (one red and one yellow, with the version I have) you have to set the StudyNumber to above 100. I tweaked it and got it to match the signals that Brain Trend gives. That setting is 200. Im not sure about the NN aspect of this indicator though. Do you possibly know where a copy of the script file for the NN might be floating around Oh, and the second link you gave is to snowseed, where they talk about CORTEX, which is a very good freeware program for programming NNs. Thanks New Digital Join us download MetaTrader 5 Copyright 2000-2018, MQL5 Ltd.

No comments:

Post a Comment