Tuesday 19 December 2017

Zbuduj swój własny system automatycznego handlu


MetaTrader 5 - Przykłady Jak zrobić robot handlowy bez konieczności robienia robota handlowego, potrzebny jest system handlowy Handel na rynkach finansowych obejmuje wiele ryzyk, w tym najważniejszych - ryzyko popełnienia niewłaściwej decyzji handlowej. Marzeniem każdego handlowca jest znalezienie robota handlowego. która zawsze jest w dobrym stanie i nie podlega ludzkiej słabości - strach, chciwość i niecierpliwość. Każdy nowy użytkownik chce uzyskać lub stworzyć jasny i ścisły system handlu, który można przedstawić w formie algorytmów i całkowicie pozbyć się rutynowych operacji. Czy to możliwe System handlu jest niezbędnym warunkiem wejścia na rynek, a ten system powinien być oczywiście opłacalny. Kiedy przybysze wchodzą na rynek, zazwyczaj są przytłoczeni ogromną masą informacji trudnych do uchwycenia. W takim przypadku fora książek i fora pośredników mogą pomóc. Niestety, nie wszyscy autorzy odnoszą sukcesy, a nie wszyscy przedsiębiorcy handlowi książkami. Wiele specjalnych zasobów internetowych jest tworzonych tylko w celu zarobienia zysku dla ich właścicieli, ponieważ trudniej jest sprzedawać własne pieniądze niż wydawać prognozy i uczenia systemów handlowych. Każdy przedsiębiorca powinien niezależnie przejść przez wszystkie etapy tworzenia systemu handlowego. Jest popularne powiedzenie, że nie ma znaczenia, jaki system używasz do obrotu, najważniejsze jest to, że powinieneś handlować zgodnie z tym systemem. W przeciwnym razie handel na rynku staje się hazardzistą o przewidywalnym wyniku. Uważa się, że roboty handlowe i rynek Forex mają dużą płynność. Ponadto umożliwia handel 24 godziny na dobę, w przeciwieństwie do wielu innych rynków. Dlatego wielu przedsiębiorców stara się robić roboty handlowe specjalnie dla rynku Forex, ponieważ oferuje dużą liczbę instrumentów handlowych. Jednak sceptycy twierdzą, że wszystkie pary walutowe są silnie skorelowane ze sobą zapewniając bardzo niską zmienność na rynku. Ale ich przeciwnicy odpowiadają, że każda para walutowa ma własne cechy i niska lotność jest kompensowana przez duży dźwignię. W każdym razie instrumenty Forex są atrakcyjne dla robienia roboty handlowej, a większość zwolenników automatycznego obrotu doskonali swoje umiejętności na pary walut. Terminale transakcyjne MetaTrader 4 i MetaTrader 5 są specjalnie zaprojektowane do łatwego opracowywania zautomatyzowanych systemów obrotu, a jednocześnie ich interfejs jest również wygodny w handlu ręcznym. Jak rozpocząć roboty handlowe Istnieje wiele sposobów budowania zautomatyzowanego systemu obrotu. Opisujemy tylko kilka głównych. Pierwsze podejście opiera się na matematyce. Deweloper próbuje utworzyć pewien rodzaj równania, które może uwzględniać wiele czynników. Podejście to opiera się na przekonaniu, że ruchy cen są zarządzane przez model, który można znaleźć przy użyciu dostępnych danych historycznych. W większości przypadków wyznawcy takiego podejścia wiedzą zbyt dużo matematyki, ale nic nie wiedzą o tym, że nie są zainteresowani rynkiem. Rynek jest czystą abstrakcją, rodzajem intelektualnej gry dla nich. Takie podejście zazwyczaj prowadzi do wielu lat badań i rozwoju, a zdecydowany wynik w postaci zautomatyzowanego systemu obrotu nie jest tak ważny. Drugie podejście opiera się na zbadaniu praw rynkowych. Nie próbowano zrozumieć, dlaczego cena wzrasta lub maleje, gdy na wykresie pojawiają się różne dane techniczne. Zaletą tego podejścia jest to, że nie wymaga specjalnej znajomości matematyki i nie zakłada założenia dotyczącego siły napędowej rynku. Jest to najbardziej jasne i wygodne podczas nauki handlu. Jest to najbardziej popularna wśród przedsiębiorców, którzy otrzymali powszechne uznanie. Wadą podejścia jest konieczność ciągłego śledzenia wszystkich potrzebnych symboli. Wcześniej czy później przedsiębiorca zaczyna rozważać automatyzację procesów handlowych, a na tym etapie pojawia się najistotniejsza kwestia złożoności sformalizowania reguł handlowych, próbując wyrazić je w formie algorytmów. W niektórych przypadkach przedsiębiorcy, którzy próbują zamówić robota handlowego, nie mogą opisywać reguł handlowych i znaleźć wspólny plan z programistami. Trzecie podejście opiera się na próbie stworzenia czarnej skrzynki opartej na sieciach neuronowych z wykorzystaniem gotowych narzędzi szeroko dostępnych w specjalnych pakietach oprogramowania i matematyki. Utworzenie zautomatyzowanego systemu handlowego z elementami sztucznej inteligencji jest ekscytującym i wymagającym zadaniem nawet dla początkujących, ponieważ nie wymaga głębokiego matematyki, ani doświadczenia programistycznego - wszystko to odbywa się przy użyciu pomocy wzrokowych. Przedsiębiorca powinien znać podstawy wskaźników technicznych, posiadać umiejętność przygotowywania niezbędnych danych cenowych i doświadczenia w pewnym określonym pakiecie do pracy z sieciami nerwowymi. Główną wadą tego podejścia jest to, że robot handlowy uzyskiwany przy użyciu takich wyspecjalizowanych narzędzi do pracy z sieciami nerwowymi jest w rzeczywistości czarnym pudełkiem. Przedsiębiorcy nie znają zasad działania, a ogólnie nie da się przewidzieć, jaki etap rynku będzie najbardziej problematyczny dla robota. Programiści często wybierają czwarte podejście, od razu robią robot handlowy, nie poświęcając czas na ręczny handel. Dlaczego handel ręcznie Możesz robota robota spędzać kilka miesięcy i czerpać korzyści z twoich wysiłków wtedy. Ale bez bólów, zysków. W większości przypadków programiści zaczynają tworzyć całą niezbędną infrastrukturę przy użyciu znajomego języka programowania, a nie tylko robić roboty handlowe, uzyskiwania i przetwarzania danych o cenach, wizualnej reprezentacji wykresów i wskaźników, niestandardowych metod testowania strategii dotyczących danych historycznych itd. Mają duże doświadczenie w tym procesie. Ale w większości przypadków to doświadczenie nie zbliża ich do ostatecznego celu tworzenia automatycznego systemu handlowego. Nawet jeśli powstanie robot handlowy, nie ma gwarancji, że będzie to opłacalne. A co jeśli programista chce napisać inny system handlowy Głęboka restrukturyzacja i nowe błędy programowania są nieuniknione. Istnieje również piąte podejście do zakupu gotowego systemu handlowego w formie robota handlowego. W takim przypadku przedsiębiorca działa jako operator lub tuner. To podejście oszczędza wiele czasu (nie trzeba nauczyć się wielu nowych rzeczy) i pozwala handlowcom szybko wejść w świat handlu zautomatyzowanego. Główną wadą tego podejścia wynika z jego zalet nie znasz zasad działania robota handlowego i jego struktury. Nawet jeśli sprzedający dostarczy Państwu szczegółowy opis wdrożonego systemu obrotu, nigdy nie będziesz w nim w pełni pewny. Jednak żaden z wymienionych podejść nie może stanowić gwarancji absolutnej, z wyjątkiem depozytu bankowego. Ale to nie jest bardzo odpowiednie rozwiązanie dla osób zainteresowanych handlem na rynku i sposobów zwiększenia ich prywatnych aktywów. Jakie jest najlepsze podejście do automatycznego obrotu dla przedsiębiorcy Każdy z pięciu opisanych podejść ma swoje zalety i odpowiada określonemu typowi handlowcy. Jest mało prawdopodobne, aby wybrać pierwsze podejście (opis analityczny rynku) bez dobrze matematycznego tła. Jest mało prawdopodobne, aby rozpocząć roboty handlowe na bazie sieci neuronowych. Jednak oba te podejścia są bardzo ekscytujące i zapewniają dobre ćwiczenia intelektualne. Poniżej omówimy tylko drugie podejście, które już uważamy za klasyczne. Takie podejście jest zwykle wybierane przez nowych zwolenników handlu zautomatyzowanego, ponieważ analiza techniczna pozostaje kluczowym obszarem wiedzy przy uczeniu się podstaw wymiany handlowej. Inną zaletą drugiego podejścia jest to, że po spędzeniu trochę czasu na ręcznym handlu i uzyskaniu poczucia rynku, już dobrze zrozumiesz narzędzia analizy technicznej. Poza tym będziesz mógł zaprogramować strategie handlowe lub tworzyć sieci neuronowe na wyższym poziomie. Pierwsze kroki w przygotowaniu robota handlowego Aby stworzyć zautomatyzowany system handlu, potrzebujesz umiejętności programowania i wiedzy o wszystkich zawiłościach przetwarzania zapytań handlowych. Ale najpierw możesz zacząć od gotowych ekspertów ds. Handlu ekspertów z bezpłatnej biblioteki Code Base. Pobierz dowolnego eksperta eksperta (robota handlowy) i uruchom go w Narzędzie do testów strategicznych terminali klientów MetaTrader 4 lub MetaTrader 5. Wybierz przedział historyczny wykazujący silny trend i interwał z płaskim. Wykonaj optymalizację parametrów wejściowych eksperta eksperta i zbadaj ich różnice w tych dwóch odstępach czasu. Uruchom Expert Advisor z optymalnymi parametrami dla mieszkania w przedziale trendów i optymalnych parametrach dla tendencji na płaskim przedziale. Zbadaj różnice w wynikach handlowych, rozkładach transakcji i innych parametrach statystycznych. W rezultacie dowiesz się, ile zachowań Twojego systemu obrotu może się zmieniać, gdy sytuacja na rynku się zmieni. Lepiej byłoby wypróbować kilka standardowych strategii handlowych przy użyciu tej metody w różnych częściach historii i różnych symboli. Taka próba zapobiega dopasowywaniu systemu handlowego do pewnego określonego przedziału historii i zapewnia lepsze zrozumienie systemów trendu i przeciwdziałania. Następnym etapem byłoby stworzenie bardziej złożonych systemów transakcyjnych opartych na połączeniu już istniejących prostych sygnałów z zestawu Kreatora MQL5. Możesz testować i rozwijać intuicję transakcyjną, sortując złe sygnały jednego systemu przy użyciu filtru opartego na innym systemie bez użycia narzędzi programowania. Najważniejszą rzeczą tutaj nie jest przeładowanie. Im więcej wejściowych parametrów ma system handlowy, tym łatwiej jest go zamontować. Rozmawiano o różnicach między optymalizacją a dopasowaniem. Nie ma tu powszechnie zaakceptowanych rozwiązań. Ale wizualizacja wyników testoptymalizacji i zdrowego rozsądku może pomóc. Dowiedz się, jak zidentyfikować najważniejsze parametry wejściowe wpływające na system handlu z całego zestawu danych wejściowych. Nie zwracaj uwagi na dodatkowe parametry, które wymagają czasu podczas optymalizacji, ale nie mają wpływu na bardzo logikę systemu. Pamiętaj, że dobry system obrotu zawsze wykazuje mały swobodny ruch drugorzędnych parametrów, ale nie wykazuje znacznej niestabilności w przypadku niewielkich zmian na rynku. Na tym etapie możesz spędzić tyle czasu, ile chcesz, dopóki nie jesteś pewien, że możesz zrozumieć strategię handlową analizującą wyniki testów i optymalizacji. Znajomość mocnych i słabych stron standardowych systemów pozwoli Ci lepiej przygotować się podczas tworzenia własnego robota handlowego. Programowanie Robot Trading Załóżmy, że nauczyłeś się uczenia się języka programowania MQL4 lub MQL5, a teraz jesteś gotowy, aby napisać swojego pierwszego Ekspert Advisor dla klienta terminalu MetaTrader. Możliwe jest tutaj kilka przypadków. Po pierwsze, można sprawdzić kilka gotowych roboty handlowej opisanych w artykułach, aby lepiej zrozumieć zawiłości programowania. Po drugie, możesz zadawać pytania na temat MQL4munity lub MQL5munity. jeśli masz jakieś nierozwiązane problemy. Doświadczeni uczestnicy społeczności często pomagają nowicjuszom wykazującym szczere zainteresowanie tematem. Po trzecie, można zamówić imrpovement lub opracowanie Expert Advisor lub wskaźnik w usłudze Jobs. jeśli nie jesteś w stanie napisać niezbędnego programu na własną rękę. Ale nawet jeśli złożysz zamówienie za pośrednictwem usługi niezależnej, powinieneś mieć jakiś pomysł na testowanie strategii, aby znaleźć wspólny język z programistą. Poza tym, podstawowa znajomość języka programowania pozwala na wprowadzenie drobnych poprawek i zmian w kodzie po zakończeniu pracy. W końcu nie byłoby zbyt wygodne, aby zadzwonić do programisty, aby rozwiązać każdą drobne problemy. Byłoby znacznie łatwiejsze i szybsze naprawianie samego siebie. Nie ma potrzeby reinstalowania koła Jak znaleźć własną strategię handlową lub co najmniej w jakim kierunku należy skupić swoje wyszukiwanie Wszyscy handlowcy chronią własne systemy handlowe, jeśli mają. Wszyscy nowicjusze chcą stworzyć korzystny system lub przygotować gotowy. Jednocześnie wydaje się, że jakikolwiek otrzymany roztwór jest zbyt prosty w porównaniu do pomysłów nowicjuszy o autentycznym systemie handlu. Armii na całym świecie są skłonni do nadmiernego poziomu tajemnicy. Jest wiele dowcipów z tego, w tym następujących: Tajemnica militarna nie jest w tym, co studiujesz, - oficer mówi do wojskowych uczniów, ale w tym, że dokładnie to studiuje. Sytuacja w systemach handlowych jest wystarczająco podobna: większość przedsiębiorców stosuje proste i dobrze znane pomysły handlowe z niewielkimi modyfikacjami, na przykład dodając Trailing Stop lub potwierdzenia ze wskaźników trendów. Istnieje wiele forów pośredników handlowych z ograniczonym dostępem, w których uczestnicy starają się rozwinąć lub poprawić niektóre tajne systemy handlowe. Najciekawsze jest to, że takie systemy nie zawierają wcale nic specjalnego. Zazwyczaj jest to dobrze znany pomysł (jak handel z trendem). Następnie udoskonalone są pewne nowe wskaźniki nieznane opinii publicznej. Dlatego też można łatwo zabrać dostępne kody źródłowe robota handlowego i spróbować ich używać z różnymi symbolami i ramkami czasowymi. Inne popularne powiedzenie można wspomnieć tutaj: Nie lubisz kota Po prostu nie wiesz, jak je gotować Trudno w to uwierzyć, ale prawdopodobieństwo, że rozwinie się coś naprawdę nowego jest bardzo małe. Najważniejszą rzeczą jest stworzenie systemu przy użyciu dostępnych składników. Nie myśl, że niektórzy geniusze mają dostęp do niektórych tajnych systemów z laboratoriów NASA. To jest sekret Graala. Tylko nieliczni potrafią to zrozumieć Dlaczego nikt nie używa pomysłów handlowych, jeśli dosłownie są w zasięgu ręki Odpowiedź prawdopodobnie leży w psychologii człowieka. Pracownicy wielu banków i dużych funduszy inwestycyjnych obejmują handlowców zajmujących się transakcjami zgodnie z surowymi zasadami iw ograniczonych ilościach. Ale z jakiegoś powodu tylko kilku instytucjonalnych przedsiębiorców opuszcza swoje firmy i zaczyna handlować własnymi pieniędzmi. Okazuje się, że potrzebujesz nie tylko strategii handlowej, ale również żelaznej dyscypliny, aby ją śledzić. Wielu przedsiębiorców dowiedziało się z żalem, że mają te same problemy psychologiczne opisane w książkach. Po tym, jak zdaje sobie sprawę, że najgorszym wrogiem handlowców są sami, nowicjusz zaczyna myśleć o robieniu robota handlowego w celu wyeliminowania obciążenia psychicznego. Chociaż nieco odbiegiem od tematu, powinienem wspomnieć o legendarnych przedsiębiorcach z żółwie, którzy z powodzeniem handlowali na wielu rynkach pod koniec 20 wieku. Przeczytaj Way of the Turtle i przekonasz się, że najważniejszą rzeczą dla przedsiębiorcy jest samodyscyplina, a nie jakiś najbardziej tajny system. Niestety, większość nowych przybyszów nie będzie w stanie postępować zgodnie z korzystną strategią, nawet jeśli otrzymają ją za darmo. Problem polega na tym, że większość strategii handlowych, które są idealnie dopasowane do ręcznego obrotu, nie można sformalizować i przetłumaczyć na język programowania. Strategie, które można łatwo sformalizować (na przykład te, które dotyczą dwóch przecięć średnich ruchomej) są zbyt proste i wymagają wielu udoskonaleń i udoskonaleń, dzięki czemu mogą być stosowane w praktyce. Zatem prosta idea jest stopniowo skomplikowana przez wiele zewnętrznych parametrów, które uniemożliwiają robotom handlowym fałszywe wpisy i błędy wyraźnie widoczne dla dewelopera. Pojawia się problem z optymalizacją robota handlowego. Proces ten nie powinien przekładać się na nadmierną optymalizację i dopasowanie do określonego przedziału historii. Aby rozwiązać ten problem, w terminalu MetaTrader 5 wdrożono testy wstępne przy użyciu uzyskanych parametrów systemu. Jeśli wyniki testów terminowych nie różnią się istotnie od wyników uzyskanych w sekcji optymalizacji, istnieje prawdopodobieństwo, że robot handlowy będzie wystarczająco stabilny przez jakiś czas po jego uruchomieniu na koncie handlowym. Długość przedziału optymalizacji parametrów i rzeczywistej wartości tego czasu zależy od określonego systemu obrotu. Tak więc optymalizacja robota handlowego przed jego uruchomieniem na koncie handlowym przypomina zluzowanie pasa - tym bardziej, że rozwinięto się i opuściliśmy pocisk z pasa, im dalej będzie latało, tym dokładniej będzie się znajdować trajektoria. Dokładnie rozwinięty robot handlowy będzie utrzymywał pozytywny wynik na koncie handlowym przez dłuższy czas niż robota handlowy uzyskany w wyniku dopasowania. Możemy powiedzieć, że Grail jest pomysłem pracy i poprawnym dostosowywaniem parametrów wykonywanych od czasu do czasu w momentach zmian warunków rynkowych. Można to zilustrować wynikami Automated Trading Championship, które odbywają się od wielu lat. Złożone eksperci doradcy wszystkich uczestników przechodzą przez automatyczne testy w przedziale czasowym od stycznia do końca lipca. Głównym wymogiem przejścia testu automatycznego jest zysk osiągnięty przez osiem miesięcy testów. Ale mniej niż połowa robotów handlowych dopuszczonych do mistrzostw pozostaje rentowna po miesiącach autonomicznej pracy. Możesz też spróbować swoich umiejętności w tworzeniu i dostosowywaniu robota handlowego do udziału w Mistrzostwach i otrzymaniu wyników testów eksperta eksperta. Poza tym uczestnictwo jest bezpłatne, a nagrody są imponujące. Mamy nadzieję, że spotkamy się z Tobą Konkludu Profesjonalni handlowcy w ciągu dnia spędzają wiele godzin na swoich komputerach i czekają na właściwą chwilę, aby wykonać transakcję. Oczywiście, nie zawsze mogą być w dobrym stanie. Większość przedsiębiorców doszedł do wniosku, że ich działania naruszają własne zasady handlowe. Nie wszystkie systemy handlowe można całkowicie sformalizować, ale nawet w takich przypadkach systemy takie mogą w większości przypadków przyjąć dodatkowe narzędzia, takie jak wskaźniki, systemy analityczne i fałszywe sygnały. Nie zalecamy żadnych specjalnych zaleceń dotyczących uczenia się języków MQL4 lub MQL5, ponieważ istnieje wiele innych użytecznych artykułów dotyczących tego tematu. Celem tego artykułu było dostarczenie wstępnej koncepcji rozpoczęcia roboty handlowej dla terminali MetaTrader 4 i MetaTrader 5. Mamy nadzieję, że niniejszy artykuł pozwoli zaoszczędzić czas nowo przybyłym i pokazać właściwy kierunek w trudnym zadaniu opracowania zautomatyzowanego systemu handlu. Ostrzeżenie: Wszystkie prawa do tych materiałów zastrzeżone są przez MQL5 Ltd. Kopiowanie lub ponowne drukowanie tych materiałów w całości lub w części jest zabronione. Jak zbudować własny system automatycznego handlu w Pythonie Jak zbudować własny system automatyzacji handlu w Pythonie Przegląd kursu: W tym seminarium dowiesz się, jak rozwijać własne pary walutowe, CFD i systemy zautomatyzowanego handlu za pomocą Pythona i platformy Oanda. Po zakończeniu seminarium będziesz mógł: Zyskać zrozumienie Pythona na jelenie i jego ekosystem Wykorzystanie platformy Oanda i jej wyodrębnianie API Wyświetl ceny na aukcji Oanda (aukcja) Platforma Uzyskanie informacji o rachunku, wykorzystaniu marginesu, otwartych zamówień. Przegląd kursu: W tym seminarium dowiesz się, jak rozwijać własne pary walutowe, CFD i systemy zautomatyzowanego handlu za pomocą Pythona i platformy Oanda. Po zakończeniu seminarium będziesz mógł: Zyskać zrozumienie Pythona na jelenie i jego ekosystem Wykorzystanie platformy Oanda i jej wyodrębnianie API Wyświetl ceny na aukcji Oanda (aukcja) Platforma Uzyskanie informacji o rachunku, wykorzystywanej marży, otwartych zamówień, otwartych transakcji, zrealizowanych i niezrealizowanych zysków Utworzenie i zarządzanie otwartymi zamówieniami Zarządzanie transakcjami (monitorowanie, modyfikowanie lub zamykanie) Wykonywanie zbiorczego zarządzania pozycjami (monitorowanie, modyfikowanie lub zamykanie) Pobierz historię transakcji dla dalsza analiza Strumień rynków na żywo Niniejsze seminarium prezentuje Anthony Ng, wykładowca NYP. Anthony Ng: jest starszym wykładowcą w Politechnice w Nanyang w zakresie zarządzania bankowością, finansami, inwestycjami i zarządzaniem portfelem. Pomaga Quantopianowi przeprowadzić algorytmiczne warsztaty handlowe w Singapurze i zaprezentował niedawny QuantCon Singapore 2018 w temacie Momentum serii czasowej. Pasjonat finansowy, informatyki i pythonu, Anthony cieszył się badaniem, nauczaniem i dzieleniem się na te tematy. Anthony studiował studia magisterskie z dziedziny inżynierii finansowej w NUS Singapore. Możesz dotrzeć do niego lub śledzić: 8 uczestników (30 zaproszonych) MetaTrader 5 - przykłady Tworzenie własnego robota handlowego w 6 krokach Więcej czasu na temat Kreatora MQL5 Świat wokół nas zmienia się szybko i staramy się nadążać za tym. Nie mamy czasu, aby nauczyć się czegoś nowego i jest to normalna postawa normalnej istoty ludzkiej. Handlowcy to ludzie tak samo jak wszyscy inni, chcą osiągnąć maksymalne rezultaty za minimalny wysiłek. Specjalnie dla przedsiębiorców MetaEditor 5 oferuje wspaniały Kreator MQL5. Istnieje kilka artykułów opisujących sposób tworzenia automatycznego systemu handlu przy użyciu kreatora, w tym Lightweight MQL5 Wizard for Dummies i wersji od programistów - Kreator MQL5: Nowa wersja. To wszystko wydaje się dobre - robot handlowy jest tworzony za pomocą 5 kliknięć myszą, możesz przetestować je w Testerze strategii i zoptymalizować parametry systemu handlowego, możesz pozwolić na wynik roboty handlowej na koncie bez potrzeby robienia niczego ręcznie . Ale problem pojawia się, gdy deweloper traderMQL5 chce stworzyć coś własnego, coś wyjątkowego, którego nigdy nie było opisane, i napisze własny moduł sygnałów handlowych. Przedsiębiorca otwiera dokumentację MQL5, przechodzi do biblioteki standardowej i jest przerażony. Pięć Terrible Classes Prawda, Kreator MQL5 znacznie upraszcza tworzenie Doradców Zaawansowanych, ale najpierw musisz się dowiedzieć, co będzie używane jako dane wejściowe. Aby automatycznie utworzyć Expert Advisor za pomocą Kreatora MQL5, upewnij się, że jego komponenty są zgodne z pięcioma podstawowymi klasami sekcji Base Classes of Expert Advisors: CExpertBase jest klasą bazową dla czterech innych klas. CExpert jest klasą tworzenia robota handlowego, która jest klasą, która zajmuje się handlem. CExpertSignal jest klasą do tworzenia modułu handlu sygnałami artykuł dotyczy tej klasy. CExpertTrailing jest klasą do śledzenia ochrony Stop Loss. CExpertMoney jest klasą zarządzania pieniędzmi. Oto cała siła wielkiego i strasznego podejścia, które nazywa się programowaniem obiektowym (OOP). Ale nie bój się, teraz prawie każdy ma telefon komórkowy z dużą ilością funkcji, a prawie nikt nie wie jak to działa. Nie musimy studiować tego wszystkiego, omówimy tylko niektóre funkcje klasy CExpertSignal. W tym artykule przechodzimy przez etapy tworzenia modułu sygnałów handlowych. i zobaczysz, jak to zrobić bez konieczności nauki OOP lub klas. Ale jeśli chcesz, możesz pójść trochę dalej. 1. Tworzenie klasy od zera Nie będziemy zmieniać żadnego istniejącego modułu sygnałów handlowych na nasze potrzeby, ponieważ jest to sposób na pomylenie. Dlatego po prostu piszemy własną klasę, ale najpierw będziemy korzystać z Nawigatora, aby utworzyć nowy folder do przechowywania naszych sygnałów w MQL5IncludeExpert. Kliknij prawym przyciskiem myszy utworzony folder, wybierz polecenie Nowy plik i utwórz nową klasę dla naszego modułu sygnałów handlowych. Wypełnij pola: Nazwa klasy - nazwa klasy. Będzie to moduł służący do generowania sygnałów na przecięciu dwóch średnich ruchomej, więc nazwij to MACross. Nazwa podstawowa to klasa, z której pochodzi nasza klasa. Powinniśmy to wywodzić z klasy bazowej CExpertSignal. Kliknij przycisk Zakończ i gotowy projekt naszego modułu. Do tej pory wszystko na wschodzie. Musimy dodać deklarację include do pliku wynikowego, aby kompilator wiedział, gdzie znajduje się klasa bazowa CExpertSignal Sprawdź klasę wynikową (musi być wolna od błędów kompilacji) i kliknij przycisk F7. Nie ma błędów i możemy przejść dalej. 2. Uchwyt do modułu Nasza klasa jest całkowicie pusta, nie ma żadnych błędów i możemy ją przetestować - spróbuj utworzyć nowego eksperta w Kreatorze MQL5 na jego podstawie. Docieramy do etapu wybierania modułu sygnałów handlowych i zobaczyć. że nasz moduł nie ma tam. I jak tam być Nie dodamy żadnych wskazówek dla Kreatora MQL5, aby zrozumieć, że nasza klasa może być czymś użytecznym. Pozwól to naprawić. Jeśli spojrzysz na moduły pakietu standardowego, zobaczysz, że każdy z nich zawiera nagłówek na początku pliku. Jest to uchwyt modułu opracowany zgodnie z określonymi zasadami. Reguły są bardzo proste. Otwórz, na przykład kod źródłowy modułu sygnałów handlowych opartych na AMA (zobacz opis logiczny w sygnale Adaptive Moving Average). Uruchom Kreator MQL5 wybierając ten moduł. Porównaj: Ostatni blok w uchwycie odnosi się do parametrów modułu, pierwsza linia zawiera nazwę modułu, który ma być wyświetlany w Kreatorze MQL5. Jak widać, nie ma nic skomplikowanego. W ten sposób uchwyt każdego modułu zawiera następujące wpisy: Tytuł - nazwa modułu, która będzie widoczna w Kreatorze MQL5. Typ - wersja modułu sygnałów. Musi być zawsze SignalAdvanced. Nazwa - nazwa modułu po jej wybraniu w Kreatorze MQL5 i jest używana w komentarzach do opisywania wewnętrznych parametrów generowanego doradcy eksperta (najlepiej wyszczególnionego). ShortName - przedrostek automatycznego nazewnictwa parametrów zewnętrznych generowanego przez eksperta (w postaci SignalltShortNamegtltParameterNamegt). Class - nazwa, która znajduje się w module. Strona - parametr, aby uzyskać pomoc dla tego modułu (tylko dla modułów dostarczonych standardowo). Następnie przedstawiono opis parametrów w postaci wartości parametrów parametru, w których określono następujące (oddzielone przecinkami): Nazwa funkcji, która ma być ustawiona na wartość parametru podczas uruchamiania Doradcy eksperta. Typ parametru może być wyliczeniem. Domyślna wartość parametru, tzn. Wartość, która zostanie ustawiona na parametr, jeśli nie zostanie ona zmieniona w kreatorze MQL5. Opis parametru, który można zobaczyć podczas uruchamiania eksperta eksperta generowanego w Kreatorze MQL5. Teraz, wiedząc wszystko to, pozwala utworzyć uchwyt naszego modułu sygnałów handlowych. Więc piszemy moduł do pobierania sygnałów handlowych na skrzyżowaniu dwóch średnich kroczących. Musimy ustawić co najmniej cztery parametry zewnętrzne: FastPeriod - okres szybkiej średniej prędkości FastMethod - rodzaj wygładzania szybko poruszającej się średniej SlowPeriod - okres niskiej średniej ruchomej SlowMethod - rodzaj wygładzania średniej wolnej średniej ruchomej Można również dodać zmianę i rodzaj cen, aby obliczyć każdy z ruchomej średniej, ale nic zasadniczo nie zmienia niczego. Więc aktualna wersja jest następująca: Uchwyt modułu jest gotowy i opisaliśmy w nim następujące informacje: Nazwa wyświetlana w Kreatorze MQL5 - Sygnały na przecięciu dwóch średnich ruchomej. Cztery parametry zewnętrzne służące do konfigurowania sygnałów handlowych. FastPeriod - okres szybkiej średniej z wartością domyślną 13. FastMethod - rodzaj wygładzania średniej szybko poruszającej, proste wygładzanie domyślnie. SlowPeriod - okres wolnej średniej ruchomej z domyślną wartością 21. SlowMethod - rodzaj wygładzania wolnej średniej ruchomej, proste wygładzenie domyślnie. Zapisz zmiany i skompiluj. Nie powinno być żadnych błędów. Uruchom Kreator MQL5, aby go sprawdzić. Widzisz, nasz moduł jest teraz dostępny do wyboru i pokazuje wszystkie nasze parametry Gratulacje, nasz moduł handlu sygnałem wygląda świetnie teraz 3. Metody ustawiania parametrów Teraz nadszedł czas, aby pracować z parametrami zewnętrznymi. Ponieważ nasz moduł handlowy jest reprezentowany przez klasę MACross, wówczas jej parametry muszą być przechowywane w tej samej klasie co członkowie prywatni. Pozwala dodać cztery linie (równe liczbie parametrów) do deklaracji klasy. Weve już opisał parametr w uchwycie i znać następujące: Ale jak wartości parametrów zewnętrznych modułu pojawiają się w odpowiednich członkach naszej klasy MACross Jest to bardzo proste, musisz tylko zadeklarować publiczne metody o tej samej nazwie w klasie, a mianowicie dodanie czterech linii do sekcji publicznej: Gdy generujesz Doradcę Ekspertów na podstawie tego modułu przy użyciu Kreatora MQL5 i uruchom go na wykresie, te cztery metody są automatycznie wywoływane podczas inicjowania Doradcy Expert. Oto zasada prosta: reguła tworzenia parametrów w module - dla każdego parametru, który zadeklarowaliśmy w uchwycie, powinniśmy utworzyć prywatnego członka klasy do przechowywania jego wartości i członka publicznego do ustawiania jej wartości . Nazwa metody musi odpowiadać nazwie parametru. Ostatnim momentem jest ustawienie domyślnych wartości dla naszych parametrów, które będą stosowane w przypadku, gdy metody ustawiania wartości nie są wywoływane. Każda zadeklarowana zmienna lub element klasy muszą zostać zainicjalizowane. Ta technika pozwala uniknąć wielu trudnych do znalezienia błędów. Dla automatycznej inicjalizacji najlepszym suitingem jest konstruktor klasy, który zawsze jest pierwszym wywołanym podczas tworzenia obiektu. Dla wartości domyślnych będziemy używać tych napisanych w uchwycie modułu. Tutaj członkowie klasy są inicjalizowani za pomocą listy inicjalizacji. Jak widać, nie wykorzystaliśmy jeszcze przeciętnych wskaźników ruchu. Znaleźliśmy prostą regułę - jak wiele parametrów jest podanych w uchwycie modułu, tak wiele metod i elementów powinno być w klasie, która implementuje moduł. Nie ma nic skomplikowanego. Jednak nie zapomnij ustawić domyślnych wartości parametrów na konstruktorze. 4. Sprawdź poprawność parametrów wejściowych Utworzyliśmy parametry dla naszego modułu handlowego, pisemne metody ich ustawiania, a teraz przyszła kolejna ważna faza - poprawność parametrów musi zostać sprawdzona. W naszym przypadku musimy sprawdzić okresy ruchomych średnich i rodzaj wygładzania w celu ich kalkulacji. W tym celu w klasie należy wpisać własną metodę ValidationSettings (). Ta metoda jest zdefiniowana w klasie nadrzędnej CExpertBase. i we wszystkich swoich dzieciach jest to obligatoryjne przedefiniowanie. Jeśli jednak nic nie wiesz o programowaniu obiektowym, pamiętaj tylko - w naszej klasie powinniśmy wpisać funkcję ValidationSettings (), która nie wymaga żadnych parametrów i zwraca true lub false. Jak widać, w części publicznej klastra MACross dodaliśmy deklarację metody ValidationSettings (), a następnie dodano korpus metody w następującej formie: Najpierw pojawia się typ zwracania, a następnie nazwa klasy, a następnie operator rozdzielczości zakresu. po czym następuje nazwa wcześniej zadeklarowanej metody. Nie zapominaj, że nazwa i typ parametrów muszą odpowiadać deklaracji i opisowi metody klasy. Jednakże kompilator ostrzega Cię o takim błędzie. Zauważ, że najpierw wywoływana jest metoda klasy podstawowej, a następnie wprowadzane są parametry wejściowe. Jeśli nie dodasz tej linii, wygenerowany przez ekspertów doradca nie będzie mógł zainicjować naszego modułu sygnałów handlowych. 5. Gdzie są nasze wskaźniki Czas pracy ze wskaźnikami, ponieważ wszystkie prace przygotowawcze z parametrami dla nich zostały zakończone. Każdy moduł sygnałów handlowych zawiera metodę InitIndicators (), która jest automatycznie wywoływana po uruchomieniu generowanego eksperta. W tej metodzie musimy dostarczyć wskaźników średnich kroczących dla naszego modułu. First, declare the InitIndicators() method in the class and paste its draft: So there is nothing complicated, we declare the method and then simply create the method body, as we have done for the ValidationSettings() method. Above all, do not forget to insert the class name and the operator. in the function definition. We have a draft, which we can insert into a code to create moving averages. Lets do this properly - for each indicator we create a separate function in the class, which returns true if successful. The function can have any name, but let it reflect its purpose, so lets call the functions CreateFastMA() and CreateSlowMA(). Thats all, we only need to write code that generates the MA indicators and somehow integrates the handles of these indicators into the trading module, so that the module can use the values of these indicators. That is why a pointer to a variable of type CIndicators is passed as a parameter. The following is written in Documentation about it: The CIndicators is a class for collecting instances of timeseries and technical indicators classes. The CIndicators class provides creation of instanced of technical indicator classes, their storage and management (data synchronization, handle and memory management). This means that we must create our indicators and place them in this collection. Since only indicators of the CIndicator form and its children can be stored in the collection, we should use this fact. We will use CiCustom. which is the above mentioned child. For each moving average we declare an object of type CiCustom in the private part of the class: Of course, you can create your own indicator class, which will be derived from CIndicator. and implement all the necessary methods for use with the MQL5 Wizard. But in this case we want to show how you can use any custom indicator in the module of trading signals using CiCustom . Heres how it looks in the code: In the CreateFastMA() method, first check the pointer of the collection of indicators, and then add a pointer of the fast MA mfastma to this collection. Then declare the MqlParam structure, which is especially designed for storing parameters of custom indicators, and fill it with values. We use Custom Moving Average from the standard terminal delivery pack as the custom MA indicator. The name of the indicator must be indicated relative to the folder datafolderMQL5Indicators . Since Custom Moving Average. mq5 from the standard package is located in datafolderMQL5Indicators Examples, we specify its path including the Examples folder: If you look at the code for this indicator, you can see all the required data: The values of the structure contain the type-value pairs: parameter type - string (to transfer the name of the indicator) the name of the executable file of the custom indicator - Custom Moving Averages. exe parameter type - int (value of the period) period of the moving average parameter type - int (shift value) horizontal shift of the average in bars parameter type - int (enumeration value is an integer) method of averaging After filling the structure, the indicator is initialized by the Create() method of all the required parameters: symbol name and the timeframe on which it is calculated, the type of the indicator from the ENUMINDICATOR enumeration, the number of indicator parameters and the MqlParam structure with parameter values. And the last one is specifying the number of indicator buffers using the NumBuffers() method. The CreateSlowMA() method for creating the slow moving average is simple. When using custom indicators in the module, do not forget that the Expert Advisor generated by the MQL5 Wizard will also run in the tester. So at the beginning of our file we add the property property testerindicator that communicates to the tester the location of required indicators: If we use several different indicators, we should add this line for each of them. So, we have added the indicators. For more convenience, lets provide two methods of receiving MA values: As you can see, the methods are very simple, they used the GetData() method of the SIndicator parent class, which returns a value from the specified indicator buffer at the specified position. If you need classes for working with classical indicators of the standard package, they are available in section Classes for working with indicators. We are ready to proceed to the final stage. 6. Define the LongCondition and ShortCondition Methods Everything is ready to make our module work and generate trading signals. This functionality is provided by two methods that must be described in each child of CExpertSignal. LongCondition() checks the buy conditions and returns the strength of the Long signal from 0 to 100. ShortCondition() - checks the sell condition and returns the strength of the Short signal from 0 to 100 . If the function returns a null value, it means that there is no trading signal. If there are conditions for the signal, then you can estimate the strength of the signal and return any value not exceeding 100. Evaluation of the signal strength allows you to flexibly build trading systems based on several modules and market models. Read more about this in MQL5 Wizard: New Version . Since we are writing a simple module of trading signals, we can agree that the buy and sell signals are valued equally (100). Lets add necessary methods in the class declaration. Also, lets create the description of functions. This is how the buy signal is checked (its all the same with the sell signal): Note that we have declare the idx variable, to which the value returned by the StartIndex() function of the parent class CExpertBase is assigned. The StartIndex() function returns 0, if the Expert Advisor is designed to work on all ticks, and in this case the analysis starts with the current bar. If the Expert Advisor is designed to work at open prices, StartIndex() returns 1 and the analysis starts with the last formed bar. By default StartIndex() returns 1 . which means that the Expert Advisor generated by the MQL5 Wizard will only run at the opening of a new bar and will ignore incoming ticks during formation of the current bar. How to activate this mode and how it can be used will be described later in the finishing stroke. The module is ready for use, so lets create a trading robot in the MQL5 Wizard based on this module. Checking an Expert Advisor in the Tester To test the efficiency of our module, lets generate an Expert Advisor based on it in the MQL5 Wizard and run it on the chart. The Inputs tab of the appeared start window contains the parameters of the MACross module. All other parameters have also been added by the MQL5 Wizard while generating the EA based on the selected money management module and position maintenance module (Trailing Stop). Thus, we only had to write a module of trading signals and received a ready solution. This is the main advantage of using the MQL5 Wizard Now lets test the trading robot in the MetaTrader 5 Strategy Tester. Lets try to run a quick optimization of key parameters. In these settings of input parameters, more than half a million of passes is required for full optimization. Therefore, we choose fast optimization (genetic algorithm) and additionally utilize MQL5 Cloud Network to accelerate the optimization. The optimization has been done in 10 minutes and we have got the results. As you can see, creating a trading robot in MQL5 and optimization of input parameters have taken much less time than would be required for writing the position management servicing logic, debugging and searching for the best algorithms. You can skip this item or go back to it later when you are completely comfortable with the technique of writing a module of trading signals. If you open the source code of the Expert Advisor generated by the MQL5 Wizard, you will find the global variable ExpertEveryTick with the false value. Based on this variable, the StartIndex() function returns its value. It communicates to the Expert Advisor the mode it should run in. If you set ExpertEveryTick true and compile the code, the trading robot will analyze each incoming tick, and thus make decisions on the values of the current incomplete bar. Do this only if you understand how it works. Not all trading systems are designed to work inside the bar. You can also add a keyword input for the ExpertEveryTick parameter, and then you will have a new input parameter of the Expert Advisor. which you can set at the EA startup on a chart or in the tester: And now its time to summarize what we have done. 6 Steps to Create a Module of Trading Signals If you have mastered MQL5, then you no longer need to write an Expert Advisor from scratch. Just create a module of trading signals and, based on this module, automatically generate a trading robot with the enabled trailing and trade volume management modules. And even if you are not familiar with OOP or do not want to delve much into the structure of trade classes, you can just go through 6 steps: Create a new class using the MQL5 Wizard in a separate folder MQL5IncludeMySignals. Our module of trading signals will be stored there. Create a module handle that describes the parameters, their type and default values. Declare module parameters in the class and add methods for initialization in the constructor. Check the input parameters and do not forget to call ValidationSettings() of the CExpertSignal base class. Create indicator-objects and add a predefined initialization method InitIndicators(). Identify conditions of trading signals in the methods LongCondition() and ShortCondition(). Each step is simple and requires little skill in MQL5 programming. You only need to write your module once, following the instructions, and further verification of any trade idea will take no more than an hour, without tiring hours of coding and debugging. From Simple to Complex Remember that the trading strategy implemented by your trading robot created using the MQL5 Wizard, is as complex as the module of trading signals it uses. But before you start to build a complex trading system based on a set of rules for entry and exit, split it into several simple systems and check each one separately. Based on simple modules you can create complex trading strategies using the ready-made modules of trading signals, but this is a topic for another articleTrading Systems Coding Trading systems are simply sets of rules that traders use to determine their entries and exits from a position. Rozwijanie i używanie systemów obrotu może pomóc przedsiębiorcom w osiągnięciu spójnego zwrotu, przy jednoczesnym ograniczeniu ryzyka. W idealnej sytuacji przedsiębiorcy powinni czuć się jak roboty, wykonywać zawody w sposób systematyczny i bez emocji. Być może spytałeś siebie: Co zrobić, aby zatrzymać robota z mojego systemu? Odpowiedź: Nic Ten samouczek nie przedstawi Ci narzędzi i technik, które możesz wykorzystać do stworzenia własnego zautomatyzowanego systemu handlu. Jak są automatyczne systemy obrotu Utworzono Automatyczne systemy handlowe są tworzone przez konwertowanie reguł systemu handlowego na kody, które komputer może zrozumieć. Następnie komputer uruchamia te zasady za pośrednictwem oprogramowania handlowego, który sprawdza transakcje, które przestrzegają Twoich zasad. Wreszcie transakcje są automatycznie umieszczane u Twojego maklera. Ten samouczek skupi się na drugiej i trzeciej części tego procesu, gdzie Twoje reguły są przekształcane w kodzie, który oprogramowanie handlujące może zrozumieć i wykorzystać. Jakie oprogramowanie handlowe obsługuje systemy automatyzacji handlu Istnieje wiele programów handlowych wspierających zautomatyzowane systemy obrotu. Niektóre automatycznie generują i zamieszczają transakcje z brokerem. Inni automatycznie wyszukują transakcje, które pasują do Twoich kryteriów, ale wymagają ręcznego zamawiania zamówień z brokerem. Co więcej, w pełni automatyczne programy handlowe często wymagają używania określonych maklerów obsługujących takie funkcje, które mogą wymagać uzupełnienia dodatkowego formularza autoryzacji. Zalety i wady Automatyczne systemy handlowe mają wiele zalet, ale mają również swoje wady. Wszakże jeśli ktoś miał system handlu, który automatycznie zarabiał przez cały czas, to on by dosłownie posiadał automat do robienia pieniędzy. Zalety: zautomatyzowany system pobiera emocje i zajmuje się handlem, co pozwala skupić się na poprawie strategii i zasad zarządzania pieniędzmi. 13 Kiedy powstanie rentowny system, nie wymaga pracy z twojej strony, dopóki nie zerwie, a warunki rynkowe wymagają zmiany. Wady: Jeśli system nie jest prawidłowo zakodowany i przetestowany, duże straty mogą wystąpić bardzo szybko. 13 Czasami niemożliwe jest wprowadzenie pewnych reguł do kodu, co utrudnia opracowanie zautomatyzowanego systemu obrotu. W tym samouczku dowiesz się, jak zaplanować i zaprojektować zautomatyzowany system handlu, jak przetłumaczyć ten projekt na kod, który komputer zrozumie, jak przetestować plan w celu zapewnienia optymalnej skuteczności, a na koniec sposobu na użycie systemu. Przedsiębiorcy systemów dzielą swój czas pomiędzy handel, rozwój, testowanie zaplecza, optymalizację i przetestowanie testów, tworząc rentowne i wysokie prawdopodobieństwo systemów handlowych. Automatyczne oprogramowanie do handlu forex skanuje rynek sprzyjających transakcji opartych na Twoim wkładzie. Dowiedz się więcej o tym cennym narzędziu forex. System obrotu może zaoszczędzić czas i wyeliminować emocje z handlu, ale przyjmowanie jednej umiejętności i zasobów - dowiedz się więcej tutaj. Większość brokerów dostarczy Ci rejestry handlowe, ale również ważne jest, aby śledzić na własną rękę. Oprogramowanie sprawiło, że codzienne zakupy były szybkie i automatyczne - tym bardziej, że wybierzesz odpowiedni dla Twoich potrzeb. Często zadawane pytania Określenie fosy gospodarczej, wymyślone i popularyzowane przez Warren Buffetta, odnosi się do zdolności biznesowych do utrzymania przewagi konkurencyjnej. Poznaj różnice między partnerstwami ogólnymi a partnerami z ograniczoną odpowiedzialnością, każdy typ ma niepowtarzalne cechy i zalety. Odkryj historię SampP 500, którą wyrafinowani uczestnicy rynku uważają za najlepszy indeks do zrozumienia. Dowiedz się, które kraje mają najbardziej restrykcyjne taryfy przywozowe na produkty międzynarodowe, na podstawie danych zebranych przez. Często zadawane pytania Określenie fosy gospodarczej, wymyślone i popularyzowane przez Warren Buffetta, odnosi się do zdolności biznesowych do utrzymania przewagi konkurencyjnej. Poznaj różnice między partnerstwami ogólnymi a partnerami z ograniczoną odpowiedzialnością, każdy typ ma niepowtarzalne cechy i zalety. Odkryj historię SampP 500, którą wyrafinowani uczestnicy rynku uważają za najlepszy indeks do zrozumienia. Dowiedz się, które kraje mają najbardziej restrykcyjne taryfy przywozowe na produkty międzynarodowe, na podstawie danych zebranych przez.

No comments:

Post a Comment