Friday 8 December 2017

Prosty system handlu amibrokerem


Jak zoptymalizować system obrotu UWAGA: jest to dość zaawansowany temat. Przeczytaj najpierw poprzednie ćwiczenia AFL. Idea optymalizacji jest prosta. Najpierw trzeba mieć system handlu, na przykład może to być prosty ruchome przecięcie średnie. W prawie każdym systemie istnieją pewne parametry (jako okres uśredniania), które decydują o zachowaniu danego systemu (tj. Dobrze sprawdza się w perspektywie długoterminowej lub krótkoterminowej, jak reaguje na wysoce niestabilne zapasy itp.). Optymalizacja to proces znalezienia optymalnych wartości tych parametrów (dających największy zysk z systemu) dla danego symbolu (lub portfolio symboli). AmiBroker jest jednym z niewielu programów, które pozwalają na optymalizację systemu na wielu symbolach na raz. Aby zoptymalizować system, należy zoptymalizować jeden z dziesięciu parametrów. Zdecydujesz, jaka jest minimalna i maksymalna dozwolona wartość parametru oraz w jakich krokach wartość ta powinna zostać zaktualizowana. Następnie AmiBroker wykonuje wiele testów wstecznych systemu przy użyciu wszystkich możliwych kombinacji wartości parametrów. Po zakończeniu tego procesu AmiBroker wyświetli listę wyników posortowanych według zysku netto. Możesz zobaczyć wartości parametrów optymalizacji, które dają najlepszy rezultat. Pisanie formuły AFL Optymalizacja w testerze wstecznym jest obsługiwana za pomocą nowej funkcji zwanej optymalizacją. Składnia tej funkcji jest następująca: zmienna optymalizacja (opis Opis, domyślnie min. Maks. Krok) zmienna - to zwykła zmienna AFL, która otrzymuje przypisaną wartość zwracaną przez optymalizację funkcji. Przy normalnych testach wstecznych, skanowaniu, eksploracji i trybach komutacyjnych funkcja optymalizacji zwraca wartość domyślną, więc powyższe wywołanie funkcji jest równoważne z: zmienną domyślną W trybie optymalizacji optymalizuje się kolejne wartości od min do maksimum (włącznie) z krokiem krokowym. quot Descriptionquot to ciąg, który jest używany do identyfikacji zmiennej optymalizacji i jest wyświetlany jako nazwa kolumny na liście wyników optymalizacji. domyślnie jest to wartość domyślna, która optymalizuje funkcje zwracane w trybie eksploracji, wskaźnika, komentarza, skanowania i normalnego testu wstecznego min to wartość minimalna zmiennej zoptymalizowana max to maksymalna wartość zmiennej zoptymalizowana krok to przedział uŜywany do zwiększenia wartość od min do maksimum AmiBroker obsługuje maks. 64 wywołania w celu zoptymalizowania funkcji (a więc do 64 zmiennych optymalizacyjnych), pamiętaj, że jeśli używasz wyczerpującej optymalizacji, naprawdę warto pominąć ograniczenie liczby zmiennych optymalizacyjnych do zaledwie kilku. Każde wywołanie optymalizacji generowania (maks.) Kroków optymalizacji etapu i wielu połączeń w celu optymalizacji liczby potrzebnych przebiegów. Na przykład optymalizacja dwóch parametrów przy użyciu 10 kroków wymaga 1010 100 optymalizacyjnych pętli. Funkcja optymalizacji połączeń działa tylko raz na zmienną na początku formuły, ponieważ każde wywołanie generuje nowe pętle optymalizacyjne Optymalizacja wielu symboli jest w pełni obsługiwana przez AmiBroker Maksymalna przestrzeń wyszukiwania to 2 64 (10 19 000 000 000 000 000 000) kombinacji 1. Pojedyncza optymalizacja: sigavg Optymalizacja (Średnia sygnałów 9. 2. 20. 1) Kup Cross (MACD (12. 26), Signal (12. 26. sigavg)) Sprzedaj Krzyż (Signal (12. 26. sigavg), MACD (12. 26)) 2. Optymalizacja (na poziomie 2. 5. 50. 1) Optymalizacja poziomu (poziom 2. 2. 150. 4) Kup krzyż (CCI (per), - Level) Sprzedaj (MACD Slow. 26. 17. 30. 1) sigavg Optymalizacja (Signal) (Optymalizacja (maks. średnie 9. 2. 20. 1) Kup krzyż (MACD (mfast, mslow) Sygnał (mfast, mslow, sigavg)) Sprzedaj krzyż (sygnał (mfast, mslow, sigavg), MACD (mfast, mslow)) Po wprowadzeniu f ormula wystarczy kliknąć przycisk Optymalizuj w oknie CommentQuantquot Analysis. AmiBroker rozpocznie testowanie wszystkich możliwych kombinacji zmiennych optymalizacyjnych i raportuje wyniki z listy. Po dokonaniu optymalizacji lista wyników jest przedstawiana według zysku netto. Jak można sortować wyniki według dowolnej kolumny na liście wyników, można uzyskać optymalne parametry dla najmniejszego wypłatu, najniższej liczby transakcji, największego współczynnika zysku, najniższej ekspozycji na rynku i największego zwrotu z ryzykiem. Ostatnie kolumny listy wyników przedstawiają wartości zmiennych optymalizacyjnych dla danego testu. Kiedy zdecydujesz, która kombinacja parametrów odpowiada Twoim potrzebom, wystarczy zastąpić wartości domyślne w celu optymalizacji połączeń funkcji z optymalnymi wartościami. Na obecnym etapie należy wpisać je ręcznie w oknie edycji formuły (drugi parametr optymalizacji funkcji wywołania). Wyświetlanie wykresów optymalizacji animowanej 3D Aby wyświetlić mapę optymalizacji 3D, najpierw należy najpierw przeprowadzić dwie zmienne optymalizacje. Dwie zmienne funkcje optymalizacji potrzebują formuły, która zawiera 2 wywołania funkcji Optimize (). Przykładowa zmienna o dwóch zmiennych wygląda następująco: na Optymalizowanie (na 2. 5. 50. 1) Optymalizacja poziomu (poziom 2. 2. 150. 4) Kup krzyż (CCI (per), - Level) Sprzedaj Krzyż (Poziom, WIK (na)) Po wprowadzeniu formuły należy kliknąć przycisk OOptimizequot. Po ukończeniu optymalizacji kliknij strzałkę rozwijaną przycisku Optymalizuj i wybierz Wyświetl wykres optymalizacji 3D. Po kilku sekundach w oknie widoku wykresu 3D pojawią się kolorowe trójwymiarowe wykresy powierzchni. Przykładowy wykres 3D generowany przy użyciu powyższego wzoru przedstawiono poniżej. Domyślnie wykresy 3D przedstawiają wartość zysku netto względem zmiennych optymalizacyjnych. Można jednak wykreślić wykres powierzchni 3D dla dowolnej kolumny w tabeli wyników optymalizacji. Wystarczy kliknąć nagłówek kolumny, aby go posortować (niebieska strzałka wskazuje, że wyniki optymalizacji są sortowane według wybranej kolumny), a następnie ponownie wybierz opcję Wyświetl wykres optymalizacji 3D. Wizualizując, jak parametry systemu wpływają na wydajność handlu, można łatwiej zdecydować, które wartości parametrów generują kwantylację i które zapewniają niezbyt wysoką wydajność systemu. Solidnymi ustawieniami są regiony na wykresie 3D, które wykazują stopniowe, a nie nagłe zmiany powierzchni. Wykresy optymalizacji 3D są świetnym narzędziem zapobiegającym krzywizowaniu. Konfiguracja krzywej (lub nadmierna optymalizacja) pojawia się, gdy system jest bardziej złożony niż musi być, a ta złożoność skupiła się na warunkach rynkowych, które mogą się nigdy nie powtórzyć. Radykalne zmiany (lub skoki) na wykresach optymalizacji 3D pokazują wyraźnie obszary nadmiernego optymalizowania. Powinieneś wybrać region parametrów, który generuje szeroki i szeroki płaskowyż na wykresie 3D dla Twojego prawdziwego życia. Zestawy parametrów generujące skoki zysku nie będą działały w wiarygodny sposób. Przeglądarka wykresów 3D kontroluje przeglądarkę wykresów 3D AmiBroker oferuje całkowite możliwości wyświetlania z pełnym rotowaniem wykresu i animacją. Teraz możesz przeglądać wyniki swoich systemów z każdej możliwej perspektywy. Możesz kontrolować pozycję i inne parametry wykresu za pomocą myszy, paska narzędzi i skrótów klawiaturowych, niezależnie od tego, co Ci się łatwiej. Poniżej znajdziesz listę. - obracanie - przytrzymanie lewego przycisku myszy i poruszanie się po kierunkach XY - w celu powiększenia, oddalenia - przytrzymania przycisku PRAWO i poruszania się w kierunku XY - poruszania się (tłumaczyć) - przytrzymanie lewego przycisku myszy i klawisza CTRL poruszaj się po kierunkach XY - aby animować - przytrzymaj lewy przycisk myszy, przeciągnij szybko i zwolnij przycisk, przeciągając obszar SPACE - animowany (automatyczny obrót) LEWA STRZAŁKA W LEWO - obróć wierzchołek. lewa STRZAŁKA W PRAWO - obracaj vert. prawy klawisz strzałki w górę - obracanie horyzontu. strzałka w dół STRZAŁKA W GÓRĘ - obracanie horyzontu. w lewo NUMPAD 6 - przesuń w prawo NUMPAD 8 - przesuń NUMPAD 2 - przesuń w dół PAGE UP - poziom wody do góry STRZAŁKA W GÓRĘ (w dół) NUMPAD (PLUS) - poziom wody w dół Inteligentna (nie wyczerpująca) optymalizacja AmiBroker oferuje teraz inteligentną (nie wyczerpującą) optymalizację oprócz regularnych, wyczerpujących wyszukiwań. Niewyczerpujące wyszukiwanie jest użyteczne, jeśli liczba wszystkich kombinacji parametrów danego systemu obrotu jest po prostu zbyt duży, aby możliwe było wyczerpujące wyszukiwanie. Wyczerpujące wyszukiwanie jest w porządku, o ile jest to rozsądne. Powiedzmy, że masz 2 parametry w zakresie od 1 do 100 (krok 1). To 10000 kombinacji - idealnie OK dla wyczerpującego wyszukiwania. Teraz z trzema parametrami masz milion kombinacji - wciąż jest to możliwe w przypadku wyczerpujących wyszukiwań (ale może to być lenghty). Z 4 parametrami masz 100 milionów kombinacji i 5 parametrów (1..100) masz 10 miliardów kombinacji. W takim przypadku byłoby to zbyt czasochłonne, aby sprawdzić wszystkie z nich, a jest to obszar, w którym niewyczerpujące metody inteligentnego wyszukiwania mogą rozwiązać problem, którego nie można rozwiązać w rozsądnym czasie przy użyciu wyczerpujących wyszukiwań. Oto instrukcja SIMPLEST, jak używać nowego niedokładnego optymalizatora (w tym przypadku CMA-ES). 1. Otwórz swoją formułę w Edytorze formuł 2. Dodaj jedną pojedynczą linię u góry formuły: OptymalizatorSetEngine (quotcmaequot) można również użyć quotspsoquot lub quottribquot tutaj 3. (Opcjonalnie) Wybierz cel optymalizacji w sekcji Automatyczna analiza, ustawienia, quotWalk - karta "Do przodu", "Pole docelowe optymalizacji". Jeśli pominiesz ten krok, zoptymalizuje się dla CARMDD (złożony roczny zwrot z podziałem na maksymalne wypłaty). Teraz, jeśli uruchomisz optymalizację przy użyciu tej formuły, użyjesz nowego, ewolucyjnego (nie wyczerpującego) optymalizatora CMA-ES. Jak to działa Optymalizacja jest procesem określania minimalnej (lub maksymalnej) danej funkcji. Każdy system obrotu może być traktowany jako funkcja pewnej liczby argumentów. Wejścia są parametrami i danymi kwotowania. wyjście jest Twoim celem optymalizacji (np. CARMDD). I szukasz maksymalnej funkcji. Niektóre inteligentne algorytmy optymalizacji opierają się na naturze (zachowanie zwierząt) - algorytm PSO lub proces biologiczny - algorytmy genetyczne, a niektóre są oparte na koncepcjach matematycznych pochodzących od ludzi - CMA-ES. Te algorytmy są stosowane w wielu różnych dziedzinach, w tym w finansach. W Google można podać kwotę finansową programu quotOOM lub dokumentację quotCMA-ES w programie Google, a znajdziesz wiele informacji. Niewyczerpujące (lub quotsmartquot) metody znajdą globalny lub lokalny optymalny. Celem jest oczywiście znalezienie globalnego, ale jeśli istnieje pojedynczy ostry szczyt z kombinacji parametrów zilionów, niewyczerpujące metody mogą nie odnaleźć tego pojedynczego szczytu, ale biorąc pod uwagę podmioty gospodarcze, patrząc na pojedynczy ostry szczyt jest bezużyteczny ponieważ ten wynik byłby niestabilny (zbyt delikatny) i nie może być replikowany w obrocie rzeczywistym. W procesie optymalizacji poszukujemy raczej regionów płaskowyżu o stabilnych parametrach i jest to obszar, w którym rozświetlają się inteligentne metody. Jeśli chodzi o algorytm użyty w wyniku niewyczerpującego wyszukiwania, to wygląda następująco: a) optymalizator wygeneruje pewną (zwykle przypadkową) początkową populację zestawów parametrów b) test typu backtest jest wykonywany przez AmiBroker dla każdego zestawu parametrów z populacji c) wyniki testów wstecznych obliczane zgodnie z logiką algorytmu a nowa populacja jest generowana na podstawie ewolucji wyników, d) jeśli zostanie znaleziona nowa bestia - zapisz ją i przejdź do kroku b) dopóki nie zostaną spełnione kryteria zatrzymania Przykładowe kryteria zatrzymania mogą obejmować: a) osiągnięcie określonych maksimum iteracji b) zatrzymać, jeśli zakres wartości najlepszych obiektywów ostatnich generacji X wynosi zero c) stop, jeśli dodanie 0,1 wektora odchylenia standardowego w dowolnym kierunku osi głównej nie zmienia wartości wartości celu d) innych Aby użyć dowolnego inteligentnego (non - wyczerpujący) w AmiBrokerze musisz określić silnik optymalizatora, którego chcesz używać w formule AFL przy użyciu funkcji OptimizerSetEngine. Funkcja wybiera zewnętrzny silnik optymalizacji określony przez nazwę. AmiBroker jest obecnie wyposażony w 3 silniki: Standardowy Cząsteczkowy Optymalizuj Swarm (quotspsoquot), Tribes (quottribquot) i CMA-ES (quotcmaequot) - nazwy w nawiasach klamerkowych mają być użyte w wywołaniach OptimizerSetEngine. Poza wyborem silnika optymalizacyjnego możesz ustawić niektóre z jego wewnętrznych parametrów. W tym celu należy użyć funkcji OptimizerSetOption. Funkcja OptimizerSetOption (nazwa_zakresu, wartości) Funkcja ustawia dodatkowe parametry zewnętrznego silnika optymalizacyjnego. Parametry zależą od silnika. Wszystkie trzy optymalizatory dostarczane z AmiBroker (SPSO, Trib, CMAE) obsługują dwa parametry: quotRunsquot (liczba przebiegów) i quotMaxEvalquot (maksymalne oceny (testy) na pojedynczą trasę). Zachowanie każdego parametru jest uzależnione od silnika, więc takie same wartości mogą i zwykle przynoszą różne wyniki przy użyciu różnych silników. Różnica między Runs i MaxEval jest następująca. Ewaluacja (lub test) jest pojedynczym testem wstecznym (lub ewaluacją wartości funkcji obiektywnej). RUN jest jednym pełnym biegiem algorytmu (znalezienie optymalnej wartości) - zazwyczaj obejmuje wiele testów (ewaluacji). Każdy cykl po prostu RESTARTS cały proces optymalizacji od nowego początku (nowa początkowa liczba losowa). Dlatego też każda próba może prowadzić do znalezienia innego lokalnego maksima (jeśli nie ma globalnego). Parametr Run Run definiuje liczbę następnych algorytmów. MaxEval to maksymalna liczba ocen (baktów) w dowolnym pojedynczym cyklu. Jeśli problem jest stosunkowo prosty i 1000 testów wystarczy, aby znaleźć globalny maks., 5x1000 jest bardziej prawdopodobne, aby znaleźć globalny maksymalny, ponieważ istnieje mniejsze prawdopodobieństwo, że zostanie zablokowany w lokalnym maksimum, ponieważ następne uruchamianie rozpocznie się od początkowej losowej populacji Wybór wartości parametru może być trudne. Zależy to od problemu w trakcie testu, jego złożoności, itd. Itd. Każda metoda stochastyczna nie wyczerpująca daje gwarancję znalezienia globalnego maksimum, niezależnie od liczby testów, jeśli jest mniejsza niż wyczerpująca. Najłatwiejszą odpowiedzią jest. określić jak dużą liczbę testów, jeśli jest to rozsądne pod kątem czasu wymaganego do wykonania. Inną prostą radą jest pomnożenie przez liczbę testów o 10 nowych wymiarów. Może to doprowadzić do przecenienia wymaganych testów, ale jest całkiem bezpieczna. Napędzane silniki są zaprojektowane tak, aby były łatwe w obsłudze, dlatego też używane są niezmiernie dużo wartości domyślnych, dzięki czemu optymalizacja może być zazwyczaj wykonywana bez określania czegokolwiek (przyjmowanie wartości domyślnych). Ważne jest, aby zrozumieć, że wszystkie inteligentne metody optymalizacji działają najlepiej w przestrzeniach parametrów ciągłych i względnie gładkich funkcjach obiektywnych. Jeśli przestrzeń parametrów jest dyskretnym algorytmem ewolucyjnym może mieć kłopot z znalezieniem optymalnej wartości. Jest to szczególnie prawdziwe w przypadku parametrów binarnych (onoff) - nie pasują one do żadnej metody przeszukiwania, która używa gradientu obiektywnej zmiany funkcji (jak najbardziej inteligentnych metod). Jeśli system handlu zawiera wiele parametrów binarnych, nie należy używać ich bezpośrednio do inteligentnego optymalizatora. Zamiast tego staraj się optymalizować tylko ciągłe parametry za pomocą inteligentnego optymalizatora i przełączać parametry binarne ręcznie lub za pomocą zewnętrznego skryptu. SPSO - Standardowy Cząstek Optymalizuj Swarm Optymalizator rozdrabniania cząstek jest oparty na kodzie SPSO2007, który ma przynieść dobre wyniki, pod warunkiem że dla danego problemu są określone prawidłowe parametry (tj. Uruchamianie, MaxEval). Wybieranie prawidłowych opcji dla optymalizatora PSO może być trudne, dlatego też wyniki mogą znacznie różnić się w zależności od przypadku. SPSO. dll jest dostarczany z pełnym kodem źródłowym w podkatalogu podmenu ADKquot. Przykładowy kod optymalizatora cząstek Standard Particle Swarm: (znalezienie optymalnej wartości w 1000 testów w przestrzeni wyszukiwania 10000 kombinacji) OptimizerSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optymalizacja (quotsquot, 26, 1, 100, 1 (FAD (fa, sl)) TRIBES - Adaptive Parameter-less Particle Swarm Optimizer Plemiona są adaptacyjne (np. , bezsensowna wersja PSO (optymalizacja roju cząstek) nie wyczerpujący optymalizator. W naukowych podstawach patrz: particleswarm. infoTribes2006Cooren. pdf Teoretycznie powinna ona działać lepiej niż zwykły PSO, ponieważ może automatycznie dostosować rozmiary roju i strategię algorytmu do rozwiązywanego problemu. Praktyka pokazuje, że jej wydajność jest dość podobna do PSO. Wtyczka Tribes. DLL implementuje wariant quotTribes-Dquot (tj. Bezwymiarowy). Na podstawie clerc. maurice. free. frpsoTribesTRIBES-D. zip autorstwa Maurice Clerc. Oryginalne kody źródłowe używane za zgodą autora Tribes. DLL jest dostarczany z pełnym kodem źródłowym (wewnątrz folderu ADK kwot) Obsługiwane parametry: quotMaxEvalquot - maksymalna liczba ocen (testów wstecznych) na wykonanie (domyślnie 1000). Należy zwiększyć liczbę ocen z rosnącą liczbą wymiarów (liczba parametrów optymalizacji). Wartość domyślna 1000 jest dobra dla 2 lub maksymalnie 3 wymiarów. quotRunsquot - liczba uruchomień (restart). (domyślnie 5) Możesz pozostawić liczbę przebiegów z domyślną wartością 5. Domyślnie liczba uruchomień (lub restartów) jest ustawiona na 5. Aby użyć optymalizatora Tribes wystarczy dodać jedną linię do swojego kodu: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 ocen max CMA-ES - adaptacja matryc wariancyjnych Optymalizator strategii ewolucyjnej CMA-ES (strategia ewolucyjna ewolucji macierzy zmienności wariancji) jest zaawansowanym nie wyczerpującym optymalizatorem. W naukowych podstawach patrz: bionik. tu-berlin. deusernikocmaesintro. html Według naukowych wskaźników przewyższających dziewięć innych najpopularniejszych strategii ewolucyjnych (takich jak PSO, ewolucja genetyczna i różnicowa). bionik. tu-berlin. deusernikocec2005.html Wtyczka CMAE. DLL implementuje wariant wyszukiwarki o numerGlobalquot z kilkoma restartami ze wzrastającym rozmiarem populacji CMAE. DLL jest dostarczany z pełnym kodem źródłowym (wewnątrz folderu ADK kwot) Domyślnie liczba uruchomień (lub restartów) jest ustawiona do 5. Zaleca się pozostawienie domyślnej liczby restartów. Możesz zmienić to za pomocą OptymalizatoraSetOption (kwRunsquot, N), gdzie N powinno być w zakresie 1..10. Określenie więcej niż 10 przebiegów nie jest zalecane, chociaż możliwe. Zauważ, że każdy bieg używa Dwukrotnie wielkości populacji poprzedniego biegu, więc rośnie wykładniczo. W związku z tym z 10 biegami kończy się liczba ludności 210 większą (1024 razy) niż w pierwszej rundzie. Jest inny parametrMaxEvalquot. Wartością domyślną jest ZERO, co oznacza, że ​​wtyczka automatycznie obliczy MaxEval. Zaleca się NIE definiowania MaxEval przez siebie, ponieważ domyślnie działa prawidłowo. Algorytm jest wystarczająco inteligentny, aby zminimalizować liczbę wymaganych ocen i zbiegać się bardzo szybko w punkcie rozwiązania, więc często znajduje rozwiązania szybciej niż inne strategie. To normalne, że plugin pominie niektóre etapy oceny, jeśli wykryje znalezione rozwiązanie, dlatego nie należy się dziwić, że pasek postępu optymalizacji może poruszać się bardzo szybko w niektórych punktach. Ponadto wtyczka może zwiększyć liczbę kroków w stosunku do początkowej wartości szacowanej, jeśli jest potrzebna do znalezienia rozwiązania. Ze względu na adaptacyjny charakter, szacowany czas podany po lewej stronie lub liczbie kilogramów podanych w oknie dialogowym postępu jest tylko najdokładniejszy w danym momencie i może się różnić w trakcie kursu optymalizacji. Aby skorzystać z optymalizatora CMA-ES, wystarczy dodać jedną linię do swojego kodu: spowoduje to optymalizację z ustawieniami domyślnymi, które w większości przypadków są w porządku. Należy zauważyć, podobnie jak w przypadku wielu algorytmów przeszukiwania przestrzenno-przestrzennego, że zmniejszenie parametru sqstepquot w wywołaniach funcidonowych Optimize () nie ma istotnego wpływu na czasy optymalizacji. Jedyną rzeczą, która ma znaczenie, jest problemowy przykładowy numer pytania, tj. Liczba różnych parametrów (liczba funkcji optymalizacji połączeń). Liczba parametrów na jeden parametr może być ustawiona bez wpływu na czas optymalizacji, więc użyj najlepszej rozdzielczości, jaką chcesz. W teorii algorytm powinien być w stanie znaleźć rozwiązanie w co najmniej 900 (N3) (N3) testach wstecznych, gdzie liczbaNot jest wymiarem. W praktyce zbiegnie się dużo szybciej. Na przykład rozwiązanie w przestrzeni parametrów wymiarowych 3 (N3) (powiedzmy 100100100 1000 milisekundowych kroków) można znaleźć tylko w krokach 500-900 CMA-ES. Wieloinwidrowana indywidualna optymalizacja Począwszy od AmiBroker 5.70 oprócz wielu-symboli wielozmiennych. można przeprowadzić wielogodzinną optymalizację pojedynczego symbolu. Aby uzyskać dostęp do tej funkcji, kliknij strzałkę w dół obok przycisku quotOptimizequot w oknie Nowa analiza i wybierz opcję Indywidualne optymalizowanie. Osoba indywidualna Optimizequot wykorzystuje wszystkie dostępne rdzenie procesora do przeprowadzania optymalizacji pojedynczego symbolu, co znacznie przyspiesza jej wyniki. W bieżącym trybie symbolquot wykona optymalizację na jednym symbolu. W trybie kwarcowym i kwerendowym przetworzy się wszystkie symbole kolejno, tj. Pierwszą pełną optymalizację pierwszego symbolu, a następnie optymalizację na drugim symbolu itp. Ograniczenia: 1. Niestandardowy backtester NIE jest obsługiwany (jeszcze) 2. Inteligentne silniki optymalizacji nie są obsługiwane - tylko optymalizacja EXHAUSTIVE działa. Ostatecznie możemy pozbyć się ograniczeń (1) - gdy AmiBroker zostanie zmieniony, więc niestandardowy backtester nie używa już OLE. Ale (2) prawdopodobnie tu pozostać na długo. 14 października 2017 Dodano 29 lutego 2017, dodatkowe punkty do rozważenia: 1) Ten system zależy od dokładnego wypełnienia po cenie otwarcia. Aby uzyskać takie napełnienie, wymagane jest podawanie jakości danych o minimalnym opóźnieniu i zaawansowane umiejętności programowania w celu wdrożenia automatyzacji handlu. 2) Przy ustalaniu ceny wejścia nieznacznie poniżej ceny otwarcia (usiłując poprawić wydajność) system nie działa źle. Nawet poprawa ceny o jeden cent zabija system. To sugeruje, że większość zysku pochodzi z dni, w których cena otwarta była równa dziennej niskim, tzn. Cena wzrosła z poziomu otwartego i nigdy nie spadła poniżej. Oczywiście jest to oczywiste. Aby to potwierdzić, dodałem ten warunek testowy (sprawdza się z wyprzedzeniem), aby wykluczyć dni, w których Open Low: Kup Kup, a nie O L To zabija system i dowodzi, że większość zysku pochodzi z dni, w których OL. Aby to potwierdzić dodałem warunek przeciwny: Buy Buy i O L To daje prawie nieskończone zyski i dowodzi, że większość zysków pochodzi z dni, kiedy cena wzrasta natychmiast z Open i nigdy nie zwraca poniżej. Starając się poprawić cenę wejścia jest błędem, należy wprowadzić na zestawie Stop 1-2 ct powyżej ceny otwarcia, co eliminuje dni, kiedy cena spadnie i nigdy się nie odwróci. To znacząco poprawia wydajność. 3) System ten obsługuje osoby odpowiedzialne za przetrwanie na kolana. Takie wzorce są zwykle utopione przez dużą objętość obrotu, a tym samym system działa znacznie lepiej, gdy wybierasz tickerzy z woluminami od 500.000 do 5.000.000 akcji. To znacznie poprawia wydajność. Dodanie powyższych dwóch funkcji powoduje znacznie większą krzywą niż ta, którą przedstawiono poniżej. Przepraszam, nie mam czasu na dokumentowanie powyższego w bardziej szczegółowy sposób. Powodzenia Ten post przedstawia bardzo prosty pomysł na biznes długi, który kupuje w określonym przedziale procentowym poniżej wczoraj lata 821 niski i kończy się w następnym dniu otwarcia w biurze. Chociaż czasami trudno jest uzyskać dokładną cenę otwartą, wysoka rentowność tego systemu sprawia, że ​​jest dobrym kandydatem do dalszych eksperymentów. System działa dobrze z Watchlists jak N100, SP500, SP1500, Russel 1000 itd. Wydajność na Russel 1000, max. Pozycje otwarte ustawione na 1, na okres 12102003 do 12102017, wyglądają tak: Niektóre z innych Watchlists dają mniejszą ekspozycję (zyski), ale przychodzi z niższych DD. Prowizje wyniosły 0,005 na akcję. Nie użyto marginesu. Nie stosuje się wyraźnego rankingu tickerów na podstawie ich alfabetycznego sortowania na liście obserwowanych. Może to wydawać się dziwne, ale znaczące: odwrócenie tego rodzaju systemu nie powiedzie się. Może to oznaczać, że ze względu na problemy z skanowaniem w czasie rzeczywistym, symbole wymienione na górze tego typu mogą być wymieniane inaczej niż te wymienione na dole. Zwróć uwagę na płynność (możesz handlować więcej niż jedną pozycją) i poślizg (wejście jest raczej wolne od ryzyka, ale wyjścia mogą być problematyczne). DD są znaczące, ale mogą być zrekompensowane poprawionymi wpisami i wyjściami w czasie rzeczywistym. Podczas automatycznego obrotu może być możliwe umieszczenie zleceń OCA DAY-LMT dla wszystkich sygnałów i poczekaj i zobacz co wypełnia. Ponieważ wyjścia są trudniejsze niż wpisy, które mogą Cię zainteresować innymi strategiami wyjścia. Wartości domyślne parametrów są wybierane tylko z kapelusza. Prawie z pewnością można je zoptymalizować lub dostosować dynamicznie do poszczególnych tickerów. Krótko sprawdziłem ten system w trybie Walk-Forward, a wyniki były opłacalne przez wszystkie lata testowane. Z wyjątkiem liczby parametrów obrotu akcjami nie są bardzo krytyczne. Nadmierne optymalizowanie doesn8217t wydaje się problemem w tym przypadku. Poniższy kod jest bardzo prosty i wymaga kilku wyjaśnień. Jednak ważne jest, aby zrozumieć, że ten system ma małą przewagę poprzez handel na Open i obliczając TrendMA przy tej samej cenie otwartej. Niektórzy mogą interpretować to jako przyszły wyciek, jednakże, jeśli handlujesz tym systemem w czasie rzeczywistym, to nie. Wielu ludzi nie zdaje sobie sprawy z tego, że jeśli sprzedajesz na Openze, możesz skorzystać z tej ceny w swoich obliczeniach 8212, o ile robisz to w czasie rzeczywistym 8212, gdzie AmiBroker i technologia mogą dać Ci przewagę. Jeśli Ref () cofa TrendMA po jednym pasku, system jest nadal bardzo opłacalny, ale DDs zwiększa się dla niektórych Watchlists. Jeśli używasz inwestycji stałych, różnica jest nieistotna. Procedurą handlową byłoby rozpoczęcie skanowania przed otwarciem rynku i usunięcie tickerów, które są wycenione tak zdalnie, że są mało prawdopodobne, aby spełnić OpenThresh. W ten sposób można rozpocząć skanowanie 1000 symboli, ale bardzo szybko skanowany numer zmniejszy się do zaledwie kilkunastu tickerów. Gdy zbliżasz się 9:30, skanowanie w czasie rzeczywistym będzie bardzo szybkie i będziesz mógł umieścić zamówienie LMT w bardzo zbliżonym stopniu do Open 8211, które może nawet poprawić cenę Open. Pomimo tego, że niektórzy ludzie przyjrzeli się poniższym kodeksowi i nie znaleźli nic złego, zyski wydają się dość wysokie w tak prostym systemie. Zgłoś błędy, które możesz zobaczyć. Zapisano przez Herman o 7:03 pm w ramach pomysłów (eksperymentalnych) Comments Off on EOD Gap-Trading Portfolio system 1 września 2017 Ten pomysł został opublikowany (161332) na głównej liście AmiBroker w dniu 3 lipca 2017. Było wiele doskonałych komentarzy na temat lista i jeśli jesteś zainteresowany pracą nad tym systemem, dobrze czyta się je wszystkie przed rozpoczęciem. Po wysłaniu znalazłem wiele postów w internecie omawiając ten pomysł handlowy, niektórzy twierdzili, że sprzedają podobny system z dużym powodzeniem. Odwołałem się do tego systemu 8220Gap Trading8221, ale może to być błąd w tłumaczeniu, 8220Mean reversion8221 może być lepszą klasyfikacją. Googling za to dostaniesz wiele więcej trafień do podobnych systemów. Oto kilka linków: wydaje się, że jest dość szeroko omawianym pomysłem handlowym i sugeruję, abyś sam uczył się czegoś z Googlingiem. Jako użytkownik programu Amibroker masz lepsze narzędzia niż większość przedsiębiorców i masz większą szansę, niż większość, aby wymyślić odmianę, która działa. Być może przy nieco mniejszym zysku, a przy znacznej ilości dodatkowego kodu 8212 wygrałbyś 8217quicky8221 projektu :-) Niektórzy komentowali, że ten system nie będzie działał w prawdziwym obrocie, a oni mogą mieć rację mówiąc innymi programami podobnymi do tej pracy. I didn8217t zakończyć system i can8217t twierdzą wiedzieć, czy jest to zbywalne, czy nie. System Kupuje za pewien procent poniżej wczoraj8217s Niski, na zamówienie LMT i kończy się tego samego dnia na zamknięciu. Zapisano przez Herman o 6:53 pm w Pomysły (Eksperymentalne) Komentarze wyłączone na długim tylko pomysł handlu EAP Gap Używam małych kryteriów konfiguracji, aby skanować moje zasoby. Domyślnie MACD, szukam pasków w dół Histogramu 4 i paska 1 na pasku sygnału kupującego (histogram ustawiony na czerwony na dół i na niebiesko, więc widzę to wyraźnie). MACD powyżej Zero Line RSI Powyżej 30 System ten bazuje na trendzie handlowym. Kupowanie na pullback, gdy rynek nadal trenuje. Aby skanować ustawienia MACD Trend: 1) Wstaw następującą formułę do wykresu. 2) Uruchom Skanowanie w AA przy użyciu SMACDTrend z wszystkimi symbolami. n ostatnich dni. n 1 i Synchronizuj wykres jako wybrane ustawienia. Zapasy spełniające kryteria zostaną wyświetlone na liście wyników. Uwaga: Niektóre warianty reguł konfiguracji mogą definiować sygnały dość rzadkie iw małych bazach danych możliwe jest, że w danym dniu nie będzie żadnych ustawień (stąd żaden raport nie zostanie zgłoszony przez skanowanie). 3) Kliknij dowolny symbol w okienku Wyniki, aby wyświetlić w nim wykres, dla tego symbolu. Uwaga: w tym przykładzie wykorzystano bazę danych szkoleniowych zawierającą tylko dane do 5112007. Pomysł obrotu przez protraderinc. Uwagi i formułka Bill 8211 WaveMechanic. Złożony przez brianz o 11:06 pm w Pomysły (Eksperymentalne) Komentarze wyłączone na MACD Trend System 14 października 2007 Zapisano przez brianz o 10:43 w Pomysły (Eksperymentalne) Komentarze Off on 15-dniowy Performers Trading System 19 sierpnia 2007 To jest pierwszy w serii z KISS (trzymaj to proste, głupie) pomysły handlowe, aby grać z. Wszystkie prezentowane tutaj pomysły są niesprawdzone, niedokończone i mogą zawierać błędy. Mają one wykazywać możliwe wzorce do dalszej eksploracji. Jak zawsze zachęcamy do komentowania i dodawania własnych pomysłów do tej serii. Wolę systemy w czasie rzeczywistym, które szybko handlują, są zautomatyzowane i pozbawione są tradycyjnych wskaźników. Korzystnie, nie powinny mieć optymalnych parametrów, jednak nie zawsze jestem w stanie osiągnąć ten cel. Nie wszystkie systemy będą takie proste, ale niektóre będą używać prostych funkcji uśredniających lub HHVLLV. Pierwszym systemem pokazanym poniżej jest kopia systemu demonstracyjnego, którego używam w celu opracowania procedur handlu - automatyki gdzie indziej na tej stronie. Real-Time Gap-Trading. Aby sprawdzić, jak to działa, należy sprawdzać dane po 1 minutach w okresach 5-60 minut. Pierwszym wrażeniem może być to, że te zyski są po prostu spowodowane wzrostem rynku, jednakże długie i krótkie zyski są prawie równe, sugeruje, że jest więcej. Ponieważ 98 wszystkich transakcji wchodzi w okres od 9:30 do 10:30, ten typ systemu jest ładny, jeśli chcesz tylko krótko sprzedawać każdy dzień. Zmniejsza ryzyko związane z ekspozycją na rynku i daje więcej czasu na korzystanie z innych działań. Badanie to na liście obserwacyjnej NASDAQ-100 (indywidualne testy zwrotne, 15-minutowe okresy) daje zyski pokazane poniżej w okresie od 1 marca 2007 r. Do 17 sierpnia 2007 r. Oznaczenia skrótów są pomijane w celu utrzymania wykresu na wykresie po prostu pokazuje zysk netto pasek dla każdego testera. Średnia ekspozycja na ten system wynosi około 15, dlatego można prowadzić handel portfelami w celu zwiększenia zysków i wygładzania krzywych kapitałów. Należy zachować ostrożność, że w swojej surowej formie wypłaty są nie do przyjęcia i że mogą występować ograniczenia ilościowe dla wielu tickerów. Ponieważ ten system ma niską ekspozycję, może być kandydatem do skanowania rynkowego i obsługi portfela w rankingu. RAR wskazywałyby na bezwzględne maksymalne zyski, jakie można by uzyskać, jeśli udało się zwiększyć ekspozycję do blisko 100. Jednakże ruch cen z różnych rynków może być skorelowany, a transakcje z różnych tickerów mogą się pokrywać. Jeśli wielu sprzedawców jednocześnie handluje kartą, trudno byłoby zwiększyć ekspozycję systemu. Filed by Herman at 1:49 pm under Ideas (Experimental) Comments Off on KISS-001: Intraday Gap Trading August 17, 2007 You are invited to submit links to system ideas in comments to this post. Gap Trading Strategies 8211 Stockcharts Intraday Moving Average Crossover with Position Sizing 8211 NeoTicker Volatility-Breakout-Systems 8211 Traders Log Ten day HighLow system 8211 StockWeblog Reversion Systems 8211 SeekingAlpha Systems Traders Club . Trader Club Bulletins. July 16, 2007 This category is reserved for real working trading systems, i. e. that you have traded at some point in time or would consider trading. Since the criteria for tradability varies from person to person, and since systems may work or not depending on how they are traded, it will be difficult to screen contributions here. With respect to what is posted here, keep an open mind and consider that the poster considers the system tradable. You can contribute by posting as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:14 am under Practical (Profitable) Comments Off on Introduction to Trading Systems 8211 Practical This is where you can share trading systems that are marginally profitable, i. e. those that should not be traded as they are but that show potential. Typically this would be a basic system that is profitable but experiences draw downs of 50. Such systems can often be improved by adding Stops, Targets, Money Management, Portfolio techniques, etc. The reality is that while you may not have the expertise to make it work someone else may. Almost all of us find trading system ideas in books and magazines that we then code in AFL for evaluation. Some of these systems may have been around for many years while others are new ideas. After coding them, almost always, we are disappointed and chuck out the system (work). Instead of throwing out your work you are invited to post the system here to give another developer a chance to fix it. You are invited to contribute as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:04 am under Ideas (Experimental) Comments Off on Introduction to Trading Systems 8211 IdeasOctober 14, 2017 Added February 29, 2017, additional points to consider: 1) This system depends on getting accurate fills at the Open price. To obtain such fills requires a quality minimum-delay data feed and advanced programming skills to implement trade-automation. 2) When setting the entry price slightly below the Open price (trying to improve performance) the system fails miserably. Even improving the price by just one cent kills the system. This suggests that most of the profit comes from days on which the Open price was equal to the daily Low, i. e. the price moved up from the Open and never dropped below it. This, of course, is obvious. To confirm this I added this test condition (it looks ahead) to exclude days on which Open Low: Buy Buy AND NOT O L This kills the system and proves that most of the profit comes from days where OL. To further confirm this I added the opposite condition: Buy Buy AND O L This gives nearly infinite profits and proves that most profits come from days on which the price moves up immediately from the Open and never returns below it. Trying to improve the entry price is a mistake one should enter on a Stop set 1-2 ct above the Open price, this will eliminate days when the price drops and never turns back. This improves performance significantly. 3) This system trades knee-jerk trader-responsespatterns. Such patterns are usually drowned by large volume trading hence this system works far better when you select tickers with volumes between 500,000 and 5,000,000 sharesday. This also improves performance significantly. Adding the above two features results in an equity curve much better than that shown below. Sorry, I have no time to document the above in greater detail. Good luck This post outlines a very simple Long-only trading idea that Buys at a given percentage below yesterday8217s Low, and exits at the next day8217s Open. While sometimes it may be difficult to get the exact Open price, the high profitability of this system makes it a good candidate for further experimentation. The system works well with Watchlists like the N100, SP500, SP1500, Russel 1000, etc. Performance on the Russel 1000, with max. open positions set to 1, for the period 12102003 to 12102017, looks like this: Some of the other Watchlists give less exposure (profits) but this comes with lower DDs. Commissions were set to 0.005 per share. No margin used. No explicit ranking is used tickers are traded based on their alphabetical sort in the Watchlist. This may seem odd but is significant: reversing this sort the system fails. This might mean that, due to real-time scanning problems, symbols listed at the top of this sort may be traded differently than those listed at the bottom. Pay attention to Liquidity (you might want to trade more than one position) and slippage (Entry is rather risk-free, but exits may be problematic). DDs are significant but may be offset with improved real-time traded entries and exits. When trading automatically it may be possible to place OCA DAY-LMT entry orders for all signals and just wait and see what fills. Since exits are more difficult than entries you may wish to explore other exit strategies. Parameter default values are just picked out of a hat. Almost certainly you can Optimize them or adjust them dynamically for individual tickers. I briefly tested this system in Walk-Forward mode and the results were profitable for all years tested. Except for the number of stocks traded parameters appear not very critical. Over-optimizing doesn8217t seem a problem in this case. The code below is very simple and requires few explanations. However it is important to understand that this system enjoys a small edge by trading at the Open, and by calculating the TrendMA using the same Open price. Some might interpret this as future leak, however if you trade this system in real-time, it is not. Many people do not realize that if you trade at the Open you can also use this price in your calculations 8212 as long as you perform them in real-time 8212 this is where AmiBroker and technology can give you an edge. If you Ref() back the TrendMA by one bar the system is still very profitable however DDs increase for some Watchlists. If you use fixed investments the difference is negligible. The trading procedure would be to start scanning before the market opens and remove tickers that are priced so remote that they are unlikely to meet the OpenThresh. Thus you may start scanning 1000 symbols but very quickly the number scanned will dwindle to just a dozen or so tickers. When you approach 9:30am your real-time scan will be very fast and you will be able to place your LMT order very close to the Open 8211 you may even be able to improve on the Open price. Even though a few people looked at the code below and found nothing wrong, the profits seem rather high for such a simple system. Please report errors you may see. Filed by Herman at 7:03 pm under Ideas (Experimental) Comments Off on EOD Gap-Trading Portfolio systemAmibroker AFL Collection My trading courses now come with complete Amibroker system code for over 20 strategies. Check them out here . The Amibroker trading platform is extremely fast, flexible and is excellent value for money. I8217ve been using the software for around five years now and my Amibroker AFL collection has grown considerably in that time. Whether you8217re interested in building trading systems, trading long term trends, investing in blue-chip companies, or picking penny stocks, you8217ll be able to do that and lots more with Amibroker. Best Amibroker AFL Collection There are two places I go to look for free Amibroker AFL. One is the Amibroker online library and the other is the Yahoo Amibroker forum . I recently came across this collection of 129 Amibroker systems too. I haven8217t delved into it too deeply yet but the systems look simple and easy to use. These are all great places to start learning about Amibroker but as with most sources of free material some hunting is often required in order to get to the good stuff. The other problem with any Amibroker AFL collection, is that any trading system you find online is available for anyone to use. Because of this, you8217re pretty unlikely to find one that works, or at least works well. Nevertheless, Amibroker AFL that you find online can always be adjusted, altered and learnt from for your own means. Don8217t forget the data Another important thing to remember when using Amibroker is that a trading system is only as good as the data you8217re using. It is essential to use high quality, clean stock data. Otherwise you will end up with a flawed trading system that will lose money in real trading. I use the services at Norgate Premium Data and am very happy, especially with the new historical constituents database which comes with the Alpha program. You can get a free trial of the service here . AFL in my courses If you are looking for Amibroker AFL, my courses contain a collection of over 20 trading systems, some trend following and some mean reverting. These are tested on at least ten years of historical stock data, and in the case of my new Trend Following For Stocks course, the system and code has been back-tested over 30 years. The trading systems shown on my courses are the best trading systems I8217ve found from years of back-testing and research. They produce returns ranging from 13 CAR (compound annual return) to over 50 CAR. And they are all simple, straightforward systems that can be easily implemented on a daily or weekly basis. Trading the Noise AFL For example, trading system 4 in my HTBWS course is called 8216Trading the Noise Plus Shorts8217 . It uses a very simple indicator to measure the level of noise in a stock in order to determine when it is trending. It returned 23.93 CAR over 10 years and had only one down year which was 2002. You can get the free Amibroker AFL for the strategy here. RSI with the VIX AFL Likewise, trading system 15, is called 8216RSI with the Vix8217 and returned 25.73 in backtesting. It uses a simple trend following strategy using the RSI indicator and the VIX volatility index as a filter. Get the free Code Here Cherry Picking Penny Stocks Trading system 18, called 8216Cherry Picking Penny Stocks8217, delivers 30.45 CAR over 10 years of stock market data and has a maximum system drawdown of -30.18 . The system picks penny stocks that are moving in strong upward trends using a filter based on the ATR (average true range function). It also has a price filter though to avoid the really illiquid penny stocks. And these trading systems are also mentioned in my book which is available on Amazon. The book, however, does not include any of the new strategies that I have since added to the courses. Such as Trend Following For Stocks, Market Timing with the VIX and the Unusual Volume system. See More Posts Like This One Writing AFL for Amibroker Learn Amibroker with TradingMarkets: Review My stock market book 20 Quantitative Trading Systems How to build a Nifty positional trading system in under 3 minutes using Amibroker 20 Basic Amibroker Buy Arguments How to build profitable mean reversion trading systems This week8217s stock picks 29 April 2017 Can you make money in penny stocks Simple breakout trading system 038 code 16 Best Trading Books Of All Time Best Trading Audiobook (Download Free On Audible) Finding the Next Starbucks by Michael Moe Review Require to create Popup Alert AFL for Amibroker i have draw the horizontaltrend line in so many stocks in multipal time frame (2 min. 5 min. 15min. 30 min. hrs. and daily) and whenever price will cross and close above (selected time candle) of horizontaltrend line then require 8220POPUP8221 alert and same think below the horizontaltrend line and close the price below the horizontaltrend line. input area are as under. Input Area 82128212821282128212- selective stock, selective time frame price close above horizontaltrend line price close below horizontaltrend line Let me know the charges Sorry, I don8217t tend to do custom programming. I8217m sure there are others who can assist you. Dzięki. sir do you have afl or afl code for the gunners 24 based on gann fan and sq of 9 technique Leave a Reply Cancel reply Categories JB Marwood Independent trader, analyst writer JB Marwood is an independent trader, educator and writer specialising in trading systems and stock trading. He began his career trading the FTSE 100 and German Bund for a trading house in London and now works through his own company. He also writes for Seeking Alpha and other financial publications. Google Please remember financial trading is risky and you could incur significant loss of capital. Nothing on this site is to be construed as personalised investment advice. Please see the full disclaimer .

No comments:

Post a Comment