Strategia forex 80 20
Strategia FOREX Strategia Forex, prosta strategia, strategia handlu walutami, Forex Scalping Strategia Forex Schaff nie jest czymś rewolucyjnym i nowym, ale przez dłuższy czas jest dość dochodowy i łatwy, oparty na tym samym cyklu trendów schaff, który jest uzupełniany wskaźnikiem stochastycznym. W handlu zalecam wybranie jednego z brokerów: FxPro lub Alpari (dodaj 101 depozytów) hellip Strategy Forex 171Moho187 opiera się na zestawie standardowych wskaźników: wskaźnik MACD definiuje tendencję (kierunek handlu), Momentum 8212 pokazuje obecny nastrój rynku, a wskaźnik Fractals stanowi punkt wejścia, więc strategia zapewnia dobry zysk w pewnym sensie, ale to nie znaczy, że to piekło. Dziś publikujemy dość prostą, ale skuteczną strategię. który tylko jeden wskaźnik i okrągły poziom cen z końcem na dwa zera (dla czterocyfrowego pośrednika). Dla handlu polecam wybrać jednego z brokerów: FxPro lub Alpari (dodaje 50 depozytów) Pomimo prostoty tej strategii, strategia hellip forex 171Fox187 jest dość nadmiernym ryzykiem, a fakt ten należy wziąć pod uwagę, gdy zmienisz go w zestaw handlu (portfel ) 8212 stosunek utraty zysku straty w transakcjach czasami nie jest w korzyść handlowca8217s, ale wysoka dokładność sygnałów przy wejściu na rynek i dodatkowe filtry hellip strategii Forex 171mbush187 na pierwszy rzut oka może wydawać się trochę mylące i skomplikowane, i naprawdę za sprawdzenie wyników strategii wymagać będzie dużej cierpliwości i dokładności, ale w prawdziwym handlu cały proces jest dość prosty i logiczny: oczekiwany sygnał główny w przedziale H4, w którym określamy kierunek handlu. Następny hellip Pobierz wskaźnik MT4 - Kalkulator zarządzania pieniędzmi: MetaTrader 5 - Systemy handlowe 80-20 strategii handlowej Wprowadzenie 80-20 jest nazwą jednej ze strategii handlowych (TS) opisanej w książce Street Smarts: Wysokie prawdopodobieństwo krótkoterminowych strategii handlowych Linda Raschke i Laurence Connors. Podobnie jak w poprzednim artykule. autorzy przypisują je etapowi, gdy cena testuje granice zakresu. Skupia się również na wykorzystaniu fałszywych wyprysków i kręgosłupów z granic. Ale tym razem analizujemy ruch cen w znacznie krótszym przedziale historii, który dotyczy tylko dnia poprzedniego. Żywotność otrzymanego sygnału jest stosunkowo krótka, ponieważ system jest przeznaczony do obrotu wewnątrz dnia. Pierwszym celem artykułu jest opisanie rozwoju modułu sygnału strategii handlowej 80-20 z wykorzystaniem języka MQL5. Następnie połączymy ten moduł z nieco zmodyfikowaną wersją podstawowego robota handlowego opracowanego w poprzednim artykule z serii. Poza tym będziemy używać tego samego modułu do opracowania wskaźnika ręcznego obrotu. Jak już powiedziano, kod podany w serii artykułów jest skierowany głównie do nieco zaawansowanych początkujących programistów. Dlatego też, poza głównym celem, kod został zaprojektowany, aby pomóc w przejściu z programowania proceduralnego do obiektu zorientowanego obiektowo. Kod nie będzie zawierał klas. Zamiast tego w pełni wdroży struktury, które będą łatwiejsze do opanowania. Jeszcze innym celem artykułu jest opracowanie narzędzi umożliwiających sprawdzenie, czy strategia jest obecnie opłacalna, ponieważ Raschke i Connors wykorzystywali zachowanie rynkowe pod koniec ubiegłego stulecia, gdy ją tworzy. Kilka testów EA opartych o aktualne dane historyczne przedstawiono na końcu artykułu. 80-20 system handlowy Autorzy George Taylors Technika handlu Taylor. a także Steve Moores pracuje nad komputerową analizą rynków terminowych i doświadczeniem handlowym Derek Gipsons jako podstawą teoretyczną ich własnej pracy. Istotą strategii handlowej można krótko opisać w następujący sposób: jeśli w poprzednich dniach ceny otwarcia i zamknięcia znajdują się w przeciwnych obszarach dziennego zasięgu, prawdopodobieństwo odwrócenia w kierunku poprzednich dni jest bardzo wysokie. Poprzednie ceny otwarcia i zamknięcia powinny znajdować się w pobliżu granic zasięgu. Odwrócenie powinno rozpocząć się dnia bieżącego (nie wcześniej niż poprzedni dzień świeca jest zamknięta). Strategiczne zasady kupna są następujące: 1. Upewnij się, że rynek otworzył się w górnej 20 i zamknął się w dolnym 20 dzienna wartość wczoraj 2. Odczekaj do dzisiejszego dnia Nisko łamie poprzednie dni co najmniej o 5 kresek 3. Złożenie zlecenia kupna na dolną granicę wczorajszych przedziałów 4. Kiedy oczekujące zamówienie spowoduje uruchomienie, ustaw swój początek StopLoss w dniach Niskich 5. Użyj ogranicznika końcowego, aby chronić uzyskany zysk. Zasady wprowadzania sprzedaży są podobne, ale ostatni pasek powinien być uprzejmie, zlecenie kupna powinno znajdować się w górnej krawędzi słupka, a StopLoss należy umieścić na dzisiejszym Wysokim. Jeszcze inny ważny szczegół jest wielkością zamkniętego dziennego baru. Według Linda Raschke, powinna ona być wystarczająco duża - więcej niż średnia wielkość dziennych sztabek. Nie określa jednak, ile dni w historii należy wziąć pod uwagę przy obliczaniu średniego dziennego zasięgu. Trzeba też pamiętać, że TS jest przeznaczony wyłącznie do przykładów handlu wewnątrz dnia zamieszczonych w książce z wykorzystaniem map M15. Blok sygnału i wskaźnik tworzący układ według strategii są opisane poniżej. Możesz też zobaczyć kilka zrzutów ekranu z wynikami działania wskaźnika. Wyraźnie ilustrują wzorce odpowiadające regułom systemu i poziomom handlowym powiązanym z wzorami. Analiza wzorcowa powinna prowadzić do złożenia zamówienia oczekującego na zakup. Odpowiednie poziomy handlowania są lepiej widoczne w terminach M1: podobny wzór z odwrotnym kierunkiem obrotu w ramy czasowej M5: jego poziomy handlu (ramka M1): moduł sygnału Umożliwia dodanie wyliczenia poziomu zysku z zyskiem, aby zilustrować dodanie nowych opcji do niestandardowej TS. W oryginalnej wersji nie ma takiego poziomu, ponieważ tylko przystanek końcowy służy do zamykania pozycji. Pozwala uzależnić Take Profit od niestandardowego minimalnego poziomu breakout (TS8020ExtremumBreak), pomnożymy go przez TS8020TakeProfitRatio custom ratio. Będziemy potrzebować następujących elementów głównej funkcji modemu feGetEntrySignal: aktualnego stanu sygnału, obliczonego poziomu wejścia i wyjścia (Stop Loss and Take Profit), a także yesterdays range granice. Wszystkie poziomy są odbierane przez linki do zmiennych przekazanych do funkcji, natomiast status zwrotu sygnału korzysta z listy opcji z poprzedniego artykułu: Enum ENUMENTRYSIGNAL ENTRYBUY, kup sygnał ENTRYSELL, sygnał sprzedaży ENTRYNONE, brak sygnału ENTRYUNKNOWN stan nieokreślony ENUMENTRYSIGNAL feGetEntrySignal ( D1 dwurzędowy analiza deseń datetime tTime, aktualny czas podwójnego wzmacniacza dEntryLevel, poziom wejścia (link do zmiennej) podwójny wzmacniacz dSL, poziom StopLoss (link do zmiennej) podwójny wzmacniacz dTP, poziom TakeProfit (link do zmiennej) podwójny wzmacniacz dRangeHigh , Wysoki poziom wzoru 1 pasek (link do zmiennej) podwójny wzmacniacz dRangeLow Niski wzór 1 pasek (link do zmiennej)) Aby wykryć sygnał, musimy przeanalizować ostatnie dwa słupki ramki D1. Zacznij od pierwszego, jeśli nie spełnia kryteriów TS, nie ma potrzeby sprawdzania drugiego paska. Istnieją dwa kryteria: 1. Rozmiar paska (różnica między Wysokim a niskim) powinna przekroczyć średnią wartość z ostatnich XX dni (określona przez ustawienie niestandardowe TS8020D1AveragePeriod) 2. Poziomy otwarcia i zamknięcia paska powinny być umieszczone na przeciwległym 20 zakres paska Jeśli spełnione są te warunki, powinny być zapisane wysokie i niskie ceny do dalszego wykorzystania. Ponieważ pierwsze parametry paska nie zmieniają się przez cały dzień, nie ma sensu sprawdzać ich w każdym wywołaniu funkcji. Pozwala zapisać je w zmiennych statycznych: ustawienia niestandardowe uint TS8020D1AveragePeriod 20 80-20: liczba dni do obliczania średniego zakresu wejściowego uint TS8020ExtremumBreak 50 80-20: minimalny zerwanie ekstremum wczorajszego dnia (w punktach) statyczny ENUMENTRYSIGNAL sePossibleSignal INTRYUNKNOWN wzorce kierunek sygnału paska statyczne zmienne podwójne służące do przechowywania wyliczonych poziomów między kreskami sdEntryLevel 0, sdSL 0. sdTP 0, sdRangeHigh 0 sdRangeLow 0 Sprawdź wzorce na pierwszym pasku na D1: jeśli (sePossibleSignal ENTRYUNKNOWN) stLastD1Bar tCurrD1Bar 1 st bar nie zmienia średniej dnia dzienny zakres podwójny dAverageBarRange fdAverageBarRange (TS8020D1AveragePeriod, PERIODD1.tTime) if (maRates 0.high maRates 0.low lt dAverageBarRange) 1 bar nie jest wystarczająco duży sePossibleSignal ENTRYNONE oznacza dzisiaj brak sygnału (sePossibleSignal) double d20Percents 0.2 (maRates 0.high maRates 0.low) 20 z przedziału wczorajsze jeśli ((bar niedźwiedzi: maRates 0 otwarte w górnych partiach talerzowych baru d20Pertyfikat otwarty w górnych 20 ampułkach o napełnionym powietrzu 0.zasiążek gwałtownych 0.milów 20zapewnych i zamkniętych w dolnej części 20) (wzniesienie: maatter 0.close gt maRates 0.kilka d20Percents zamknięta w górnej 20 ampampratów 0.open lt mauty 0.low d20Percents i otwarte w dolnej 20)) 1 bar odpowiada warunkom określającym dzisiejszy kierunek obrotu dla wzorców 1 st bar: sePossibleSignal maRates 0.open gt maRates 0.close. ENTRYBUY. Poziom wejścia na rynek ENTRYSELL: sdEntryLevel dEntryLevel sePossibleSignal ENTRYBUY. marates 0.low. maRates 0.wzrost wzorców 1-ga zakres barów granicznych: sdRangeHigh dRangeHigh marates 0.high sdRangeLow dRangeLow maRates 0.w dolnym poziomie 1 stopki opasek nie zgadza się z warunkami sePossibleSignal ENTRYNONE oznacza dzisiaj żaden sygnał (sePossibleSignal) Lista funkcji do definiowania średni zakres pasma w określonej liczbie pasków w określonym przedziale czasowym określonym od określonej funkcji czasowej: podwójny fdAverageBarRange (Oblicz średnią wielkość paska int iBarsLimit, ile prętów uwzględnia ENUMTIMEFRAMES eTF PERIODCURRENT. paski czasowe datetime tTime WRONGVALUE podczas uruchamiania obliczeń) podwójne Zmienna dAverageRange 0 dla wartości sumowania if (iBarsLimit lt 1) return (dAverageRange) Pasek informacji o pasku MqlRates maRates pasuje do informacji o pasku z określonego przedziału historii: if (tTime WRONGVALUE) tTime TimeCurrent () int iPriceBars CopyRates (Symbol eTF, tTime, iBarsLimit , maRates) jeśli (iPriceBars WRONGVALUE) jeśli (LogLevel gt LOGLEVELNONE) PrintFor mat (s: Copypages: błąd u. FUNKCJONOWAĆ. (I: "CopyType": skopiowane paski u u. FUNCTION: iPriceBars, iBarsLimit) suma zakresów: int iBar iPriceBars while (iBar - gt 0 ) dAverageRange maRatesiBar. high maRatesiBar. low średnia wartość: return (dAverageRange double (iPriceBars)) Jedyne kryterium dla wzorców Druga (obecna) przerwa w pasku w przedziałach wczorajszych nie powinna być mniejsza niż ta określona w ustawieniach ( TS8020ExtremumBreak). Po osiągnięciu poziomu pojawi się sygnał złożenia oczekującego zamówienia: sprawdzić wzorce 2 (prądu) na D1: jeśli (sePossibleSignal ENTRYBUY) sdSL dSL maRates 1.low StopLoss do dzisiejszych wysokich, jeśli (TS8020TakeProfitRatio gt 0 ) sdTP dTP dEntryLevel Point TS8020ExtremumBreak TS8020TakeProfitRatio TakeProfit return (jest wyraźnym spadkiem widoczności waha się na poziomie 1).Twójność 0.kolorowa TS8020ExtremumBreak ENTRYBUY. ENTRYNONE) jeśli (sePossibleSignal ENTRYSELL) sdSL dSL maRates 1. Najwyższy stoper do najniższego dnia (TS8020TakeProfitRatio (feGetEntrySignal i fdAverageBarRange) oraz ustawienia niestandardowe związane z funkcją i funkcją zwrotu (np. odbierając sygnał do pliku biblioteki mqh. Pełny wykaz znajduje się poniżej. Pozwala nadać nazwę pliku Signal80-20.mqh i umieścić go w odpowiednim katalogu katalogu danych terminala (MQL5IncludeExpertSignal). Wskaźnik ręcznego obrotu Podobnie jak EA, wskaźnikiem jest użycie modułu sygnałowego opisanego powyżej. Wskaźnik powinien informować przedsiębiorcę o otrzymaniu sygnału oczekującego na zlecenie i dostarczyć obliczone poziomy umieszczania zamówień, Take Profit i Stop Loss. Użytkownik może wybrać metodę powiadamiania standardowego okna podręcznego, alertu e-mail lub powiadomienia push. Można wybrać wszystkie naraz lub dowolną kombinację, którą lubisz. Kolejnym celem wskaźnika jest układ historii transakcji według 80-20 TS. Wskaźnikiem jest wyróżnienie dziennych pasków odpowiadających kryteriom systemu i obliczonych poziomów obrotu. Linie poziomów wskazują, jak sytuacja ewoluowała w czasie. W celu uzyskania większej przejrzystości, wykonaj następujące czynności: gdy cena dotknie linii sygnału, ta ostatnia zostanie zastąpiona oczekującą kolejnością. Gdy aktywowane zlecenie jest aktywne, jego linia jest zastępowana liniami Take Profit i Stop Loss. Te linie są przerywane, gdy cena dotknie jednego z nich (zamówienie jest zamknięte). Ten układ ułatwia ocenę skuteczności reguł systemu handlowego i określa, co można poprawić. Zacznijmy od deklarowania buforów i ich parametrów wyświetlania. Najpierw musimy zadeklarować dwa bufory z pionowym wypełnieniem obszaru (DRAWFILLING). Pierwszym z nich jest podświetlenie pełnego dziennego zakresu pasków z poprzedniego dnia, podczas gdy drugi ma podświetlić obszar wewnętrzny tylko w celu oddzielenia go od górnej i dolnej 20 zakresu zastosowanego w TS. Następnie zadeklaruj dwa bufory dla wielobarwnej linii sygnałowej i oczekującej kolejności zamówienia (DRAWCOLORLINE). Ich kolor zależy od kierunku obrotu. Istnieją inne dwie linie (Take Proft i Stop Loss), których kolor pozostanie taki sam (DRAWLINE), że mają używać tych samych standardowych kolorów przypisanych do terminala. Wszystkie wybrane typy wyświetlania, za wyjątkiem prostego wiersza, wymagają dwóch buforów każda, dlatego kod wygląda następująco: właściwość wskaźnikchartwindow właściwość wskaźniki bufory 10 właściwość wskaźniki 6 właściwość labellabel1 1-st pasek właściwości wzoru indicatortype1 DRAWFILLING właściwość colorcolor1 clrDeepPink. clrDodgerBlue właściwość wskaźnikwidth1 1 właściwość indicatorlabel2 1-st pasek właściwości pattern indicatortype2 DRAWFILLING właściwość colorcolor2 clrDeepPink. clrDodgerBlue właściwość wskaźnikwidth2 1 właściwość indicatorlabel3 atrybut poziomu sygnału indicatortype3 wskaźnik właściwości DRAWCOLORLINE3 wskaźnik właściwości STYLESOLID3 clrDeepPink. clrDodgerBlue właściwość wskaźnikwidth3 2 właściwość indicatorlabel4 atrybut poziomu wejścia indicatortype4 wskaźnik właściwości DRAWCOLORLINE4 wskaźnik właściwości STYLEDASHDOT4 clrDeepPink. clrDodgerBlue właściwość indicatorwidth4 2 właściwość indicatorlabel5 stop loss właściwość indicatortype5 wskaźnik właściwości DRAWLINE5 wskaźnik stanu obiektu STYLEDASHDOTDOT 5 wskaźnik właściwości clrCrimson5 wskaźnik właściwości 1 właściwość property6 wskaż właściwość DRAWLINE6 wskaźnik właściwości STYLEDASHDOTDOT wskaźnik właściwości6 wskaźnik właściwości clrLime6 1 Pozwala zapewnić handlowcom możliwość wyłączenia wypełniania codziennych wzorców pierwszy pasek, wybierz opcje powiadomienia sygnału i ograniczyć głębokość układu historii. Wszystkie ustawienia systemu handlowego z modułu sygnału znajdują się tutaj. W tym celu musimy wstępnie wyliczyć zmienne stosowane w module, nawet jeśli niektóre z nich mają być używane tylko w EA i nie są potrzebne w wskaźniku: include ltExpertSignalSignal80- 20.mqhgt 80-20 wejście modułu sygnału TS bool ShowOuter true 1 pasek wzoru: Pokaż pełny zakres bool wejściowy ShowInner true 1 pasek wzoru: Pokaż wewnętrzny obszar wejściowy bool AlertPopup true Alert: wyświetlanie okna podręcznego podręcznego alertu Bool AlertEmail false Alert: Wyślij e-mail łańcuch wejściowy AlertEmailSubj Alert: eMail subject input bool AlertPush true Alert: wysłanie informacji o wprowadzaniu powiadomień uint BarsLimit 2000 Głębokość rozmieszczenia historii (w bieżących paskach TF) ENUMLOGLEVEL LogLevel LOGLEVELNONE Tryb rejestrowania podwójnego buff1stBarOuter, buff1stBarOuterZero, bufory do wykreślania pełnego zakresu wzorców 1 st bar buff1stBarInner, buff1stBarInnerZero, bufory do wykreślania wewnętrznych 60 wzorów 1 bar buffSignal, buffSignalColor, bufory linii sygnału buffEntry, buff, buffTP, stopLoss i TakeProfit buffers linii gdExtremumBreak 0 TS8020ExtremumBreak w cenach symboli int giD1AveragePeriod 1. poprawna wartość TS8020D1AveragePeriod giMinBars WRONGVALUE minimalna wymagana liczba prętów do ponownego obliczania int OnInit () zaznacz parametr TS8020D1AveragePeriod: giD1AveragePeriod int (fmin (1. TS8020D1AveragePeriod)) przeliczanie punktów na ceny symboli: gdExtremumBreak TS8020ExtremumBreak Określ minimalną wymaganą liczbę prętów do ponownego obliczania liczby prętów bieżącego TF w ciągu dnia giMinBars int (86400 okresówSeconds ()) wskaźników bufferów: 1 paski prostokąta pełnego zakresu SetIndexBuffer (0. buff1stBarOuter, INDICATORDATA) PlotIndexSetDouble (0. PLOTEMPTYVALUE. 0) SetIndexBuffer (1. buff1stBarOuterZero, INDICATORDATA) prostokątne prostokąty wewnętrzne 1 stanika SetIndexBuffer (2. buff1stBarInner, INDICATORDATA) PlotIndexSetDouble (1. PLOTEMPTYVALUE 0) SetIndexBuffer (3. buff1stBarInnerZero, INDICATORDATA) linia sygnału SetIndexBuffer (4. buffSignal, INDICATORDATA) PlotIndexBacker (7 BUFFEntryColor, INDICATORCOLORINDEX) Linia SL SetIndexBuffer (8.) SetIndexBuffer (7. BUFFEntryColor, INDICATORCOLORINDEX) SetIndexBuffer (7. BUFFEntryColor, INDICATORCOLORINDEX) SetIndexBuffer (7. BUFFEntryColor, INDICATORCOLORINDEX) SetIndexBuffer (8. (INDICATORSCHODS) 80-20 TS) Umieść kod programu głównego (INDICATOR_STATER_DATA), a następnie kliknij przycisk Dalej, a następnie kliknij przycisk Dalej, a następnie kliknij przycisk Dalej. do wbudowanej funkcji OnCalculate ustawia pętlę iteracyjną na bieżącej t w przeszłości przeszukują sygnały z wykorzystaniem funkcji modułu sygnałowego. Deklarowanie i inicjalizacja niezbędnych zmiennych przy użyciu wartości początkowych. Pozwala zdefiniować najstarszy pasek pętli dla pierwszego obliczenia z uwzględnieniem limitu głębokości historii zdefiniowanego przez użytkownika (BarsLimit). W przypadku kolejnych połączeń wszystkie kreski bieżącego dnia (a nie ostatnie paski) są ponownie obliczane, ponieważ wzorzec dwóch pasków faktycznie należy do wykresu D1 bez względu na bieżące ramy czasowe. Poza tym powinniśmy chronić przed tak zwanymi fantomami: jeśli nie wykonujemy wymuszonych buforów wskaźników kasujących podczas ponownej inicjalizacji, wtedy podczas ustawiania ramek czasowych lub symboli na ekranie pozostają nieużywane obszary wypełnione. Usunięcie buforu powinno być związane z pierwszym wywołaniem funkcji OnCalculate po inicjalizacji wskaźnika. Jednak standardowa wstępnie obliczona zmienna nie wystarcza do określenia, czy połączenie jest pierwsze, ponieważ może zawierać zero nie tylko podczas pierwszego wywołania funkcji, ale także przy zmianie sumy kontrolnej. Pozwala poświęcić trochę czasu, aby prawidłowo rozwiązać ten problem, tworząc strukturę, na którą nie ma wpływu ustawienie wstępnie skalowanej zmiennej na zero. Struktura polega na przechowywaniu i przetwarzaniu danych często używanych w wskaźnikach: - flagę funkcji OnCalculate - uruchamia się pierwszy licznik liczonych kresek, które nie są ustawione na zero podczas zmiany sumy kontrolnej - flagi zmiany sumy kontrolnej - flaga początku nowy pasek - aktualny czas rozpoczęcia paska. Struktura łącząca wszystkie te dane ma zostać zadeklarowana na poziomie globalnym. Powinien być w stanie zebrać lub prezentować dane z dowolnych wbudowanych lub niestandardowych funkcji. Pozwól nazwać tę strukturę Brownie. Można go umieścić na końcu kodu wskaźnika. Należy również zadeklarować pojedynczy globalny obiekt typu o nazwie goBrownie: struct BROWNIE datetime tLastBarTime czas ostatniego przetworzonego paska int iPrewCałkowana liczba obliczonych prętów bool bFirstRun boolbar uruchamia flagę bool bHistoryUpdated historia update flag bool bIsNewBar nowy pasek otwarcia flag BROWNIE ) wartości domyślne: tLastBarTime 0 iPrewCalculated WRONGVALUE bFirstRun bIsNewBar prawda bHistoryUpdated fałszywa próżnia fReset (bool bResetFirstRun true) wartości domyślne: tLastBarTime 0 iPrewCalculated WRONGVALUE if (bResetFirstRun) bFirstRun prawdziwy zestaw do zera, jeśli istnieje zgoda bIsNewBar prawda bHistoryUpdated fałszywa próżnia fUpdate (int iNewPrewCalculated WRONGVALUE ) flagę wbudowanej funkcji OnCalculate wywołuje pierwsze połączenie, jeśli (bFirstRun ampamp iPrewCalculated gt0) bFirstRun false new bar datetime tThisBarTime TimeCurrent () - TimeCurrent () PeriodSeconds () bIsNewBar tLastBarTime tThisBarTime aktualizuje aktualny czas paska, jeśli (bIsNewBar) tLastBar Czas tThisBarTime if (iNewPrewCalculated gt-1) są jakieś zmiany w historii bHistoryUpdated iNewPrewCalculated 0 ampamp Wywoływanie iPrewCalculated gt WRONGVALUE zostało wstępnie obliczone w przypadku wywołania OnCalculate 1, jeśli (iPrewCalculated WRONGVALUE) iPrewCalculated iNewPrewCalculated lub jeśli nie było innej historii, jeśli (iNewPrewCalculated gt 0) iPrewCalculated iNewPrewCalculated BROWNIE goBrownie Pozwala poinformować Brownie o de-inicjalizacji zdarzenia: void OnDeinit (const int reason) goBrownie. fReset () inform Brownie Jeśli to konieczne, ilość danych przechowywanych przez Brownie można rozszerzyć, jeśli funkcje niestandardowe lub klasy potrzebują cen, objętości lub bieżącej wartości spreadów (Open, High, Low, Close, tickvolume, volume, spread). Korzystanie z gotowych danych z funkcji OnCalculate jest wygodniejsze, a następnie przekazywanie ich za pośrednictwem Brownie, a nie korzystanie z funkcji kopiowania z serii czasowej (CopyOpen, CopyHigh itp. Lub CopyRates), co pozwala zaoszczędzić zasoby procesora i eliminuje konieczność obsługi przetwarzania błędów tych funkcji językowych. Wróćmy do głównego wskaźnika. Deklarowanie zmiennych i przygotowanie tablic przy użyciu struktury goBrownie wygląda następująco: goBrownie. fUpdate (prevcalculated) dane paszy do Brownie int iPeriodBar 0. licznik pomocniczy iCurrentTFBar wskaźnik szczątkowości - int (BarsLimit) bieżącej pętli TF pętla początkowa statyczna stLastD1Bar 0 time ostatniego przetworzonego paska pary prętów D1 (wzorce 2 nd bar) statyczny int si1stBarofDay 0 indeks bieżącego pierwszego paska dni, jeśli (goBrownie. bFirstRun) czyści buforowanie podczas ponownego inicjowania: ArrayInitialize (buff1stBarInner, 0) ArrayInitialize ( (buff2stBarInnerZero, 0) ArrayInitialize (buff1stBarOuter, 0) ArrayInitialize (buff1stBarOuterZero, 0) ArrayInitialize (buffEntry, 0) ArrayInitialize (buffEntryColor, 0) ArrayInitialize (buffSignal, 0) ArrayInitialize (buffSignalColor, 0) ArrayInitialize (buffTP, 0) ArrayInitialize (buffSL, 0) stLastD1Bar 0 si1stBarofDay 0 else datetime tTime TimeCurrent () minimalna głębokość ponownego obliczania - z poprzedniego dnia: iCurrentTFBar ratestotal - Bary (Symbol. PERIODCURRENT. tTime - tTime 86400. tTime) - 1 ENUMENTRYSIGNAL sygnał eSignal ENTRYUNKNOWN podwójny dSL WRONGVALUE. Poziom SL dTP WRONGVALUE. Poziom dEntryLevel WRONGVALUE TP. poziom wejścia dRangeHigh WRONGVALUE. dRangeLow WRONGVALUE granice wzorców 1 zakres paska datetime tCurrD1Bar 0. aktualny czas paska D1 (wzorce 2 pasek) tD1BarToFill 0 D1 bar time to fill (patterns 1 st bar) Upewnij się, że początkowy indeks re kalkulacyjny mieści się w dopuszczalnym zakresie zakres: int iCurrentTFBar (fmax (0. fmin (iCurrentTFBar, ratestotal - giMinBars)), podczas gdy pętla programu głównego powinna znajdować się w tym miejscu (iCurrentTFBar lt ratestotal ampamp IsStopped ()) Sprawdź obecność sygnału podczas iteracji nad prądem paski czasowe: eSignal feGetEntrySignal (czas iCurrentTFBar, dEntryLevel, dSL, dTP, dRangeHigh, dRangeLow), jeśli (eSignal gt 1) nie ma żadnego sygnału w ciągu dnia, w którym pasek należy do Jeśli na pasku pierwszego dnia znajduje się sygnał, zakres poprzedni dzienny pasek powinien być wypełniony. Jako zmienną używana jest wartość zmiennej tD1BarToFill typu datetime. Jeśli jest to wartość WRONGVALUE, na tym pasku nie ma potrzeby napełniania. Linia sygnału powinna zaczynać się od tego samego pierwszego paska, ale przedłużyć go do ostatniego paska poprzedniego dnia, aby uzyskać lepszą percepcję układu. Ponieważ obliczenia linii sygnału, a także linie i wypełnienie kolumn dla uproszczonych i nieprzyjemnych słupków są inne, można utworzyć dwa podobne bloki: tCurrD1Bar Czas iCurrentTFBar Czas iCurrentTFBar 86400 początek dnia, w którym pasek należy do if (stLastD1Bar lt tCurrD1Bar) tD1BarToFill Czas iCurrentTFBar 1 Czas iCurrentTFBar 1 86400 si1stBarofDay iCurrentTFBar else tD1BarToFill WRONGVALUE poprzedni pasek dnia, nowe wypełnienie nie wymagało stLastD1Bar tCurrD1Bar pamiętaj, jeśli (tD1BarToFill WRONGVALUE) Wypełnienie poprzednich dni Pasek D1: iPeriodBar iCurrentTFBar if (dEntryLevel lt dRangeHigh) if (ShowOuter) while (- - iPeriodBar gt 0) czy (czas iPeriodBar lt tD1BarToFill) break buff1stBarOuterZeroiPeriodBar dRangeLow buff1stBarOuteriPeriodBar dRangeHigh if (ShowInner) iPeriodBar iCurrentTFBar while (--iPeriodBar gt 0) czy (czas iPeriodBar lt tD1BarToFill) break buff1stBarInnerZeroiPeriodBar dRangeLow 0.2 (dRangeHigh dRangeLow) buff1stBarInneriPeriodBar dRangeHigh 0,2 (DRangeHigh dRangeLow) Początek linii sygnału z poprzednich dni, ostatni słupek buffSignaliCurrentTFBar buffSignaliCurrentTFBar 1 dRangeLow gdExtremumBreak buffSignalColoriCurrentTFBar buffSignalColoriCurrentTFBar 1 0 else if (ShowOuter), natomiast (--iPeriodBar gt 0) if (czas iPeriodBar LT tD1BarToFill) przełamania buff1stBarOuterZeroiPeriodBar dRangeHigh buff1stBarOuteriPeriodBar dRangeLow czy (ShowInner) iPeriodBar iCurrentTFBar while (--iPeriodBar gt 0) czy (czas iPeriodBar lt tD1BarToFill) break buff1stBarInnerZeroiPeriodBar dRangeHigh 0.2 (dRangeHigh dRangeLow) buff1stBarInneriPeriodBar dRangeLow 0.2 (dRangeHigh dRangeLow) Początek linii sygnału z poprzednich dni, ostatni słupek buffSignaliCurrentTFBar buffSignaliCurrentTFBar 1 dRangeHigh gdExtremumBreak buffSignalColoriCurrentTFBar buffSignalColoriCurrentTFBar 1 1 pozostałe kontynuuj Wszystkie pozostałe linie układu mają być wykreślone wewnątrz bieżącej pętli iteracyjnej paska czasowego. Jak już wspomniano, linia sygnału powinna się kończyć w barze, gdzie cena dotknęła go. Oczekiwana linia zamówienia powinna zaczynać się na tym samym pasku i na pasku, na którym ma miejsce kontakt z ceną. Take Profit i Stop Loss linie powinny rozpocząć się w tym samym pasku. Układ wzoru jest zakończony w pasku, w którym cena dotyka jednej z nich: Linia sygnału przecina pasek: iPeriodBar iCurrentTFBar if (dEntryLevel lt dRangeHigh), gdy (iPeriodBar lt ratestotal) if (Time iPeriodBar gt tCurrD1Bar 86399) przerwa buffSignaliPeriodBar dRangeLow gdExtremumBreak buffSignalColoriPeriodBar 0 if (dRangeLow gdExtremumBreak gt niskiej iPeriodBar) break inny while (iPeriodBar LT ratestotal) jeśli (czas iPeriodBar GT tCurrD1Bar 86399) break buffSignaliPeriodBar dRangeHigh gdExtremumBreak buffSignalColoriPeriodBar 1 gdy (dRangeHigh gdExtremumBreak lt wysokiej iPeriodBar) końca linii wejścia do przecina pasek: if (dEntryLevel lt dRangeHigh) podczas gdy (iPeriodBar lt ratestotal), jeśli (Time iPeriodBar gt tCurrD1Bar 86399) zerwij buffEntryiPeriodBar dRangeLow buffEntryColoriPeriodBar 0 jeśli (dRangeLow lt High iPeriodBar) jeśli (buffEntryiPeriodBar 1 0.) zaczyna się i kończy na jednym pasku, przedłużyć o 1 bar do poprzedniego buffEntryiPeriodBar 1 dR angeLow buffEntryColoriPeriodBar 1 0 przerwa, gdy (iPeriodBar gt tCurrD1Bar 86399) zrywa buffEntryiPeriodBar dRangeHigh buffEntryColoriPeriodBar 1 jeśli (dRangeHigh gt Low iPeriodBar), jeśli (buffEntryiPeriodBar 1 0.) zaczyna się i kończy na pojedynczym pasku, pasek do poprzedniego buffEntryiPeriodBar 1 dRangeHigh buffEntryColoriPeriodBar 1 1 złamać linie TP i SL, aż jeden z nich zostanie przekroczony przez pręt: jeśli (dEntryLevel lt dRangeHigh) SL równa jest Niska od początku dnia: dSL Low ArrayMinimum (Low. si1stBarofDay, iPeriodBar si1stBarofDay), podczas gdy (iPeriodBar lt ratestotal) jeśli (Time iPeriodBar gt tCurrD1Bar 86399) zrywa buffSLiPeriodBar dSL buffTPiPeriodBar dTP if (buffSLiPeriodBar 1 0.) uruchamia i kończy na pojedynczym pasku, przedłużyć o 1 bar do poprzedniego buffSLiPeriodBar 1 dSL buffTPiPeriodBar 1 dTP break else SL jest równy High od początku dnia: dSL High ArrayMaximum (Wysoka si1stBarofDay, iPeriodBar si1stBarofDay) podczas gdy (iPeriodBar lt ratestotal) jeśli (Time iPeriodBar gt tCurrD1Bar 86399) break buffSLiPeriodBar dSL buffTPiPeriodBar dTP if (buffSLiPeriodBar 1 0.) uruchamia i kończy na pojedynczym pasku, przedłuża o 1 bar do poprzedniego buffSLiPeriodBar 1 dSL buffTPiPeriodBar 1 dTP break Pozwala miejsce kod wywołania funkcji powiadamiania sygnału fDoAlert z pętli. W rzeczywistości ma nieco szersze możliwości w porównaniu do tych zaangażowanych w tym wskaźniku, że funkcja jest w stanie pracować z plikami audio, co oznacza, że można dodać tę opcję do ustawień niestandardowych. To samo dotyczy możliwości wyboru oddzielnych plików dla sygnałów kupna i sprzedaży. Lista funkcji: void fDoAlert (funkcja wysyłania sygnałów i powiadomień ciąg sMessage, komunikat ostrzegawczy bool bAlert true Wyświetlanie okna pop-up bool bSound false Odtwarzanie pliku dźwiękowego bool bEmail false wysyłanie eMail bool bNotification false. string sEmailSubject. serv string string sSound alert. wav plik dźwiękowy) static string ssPrevMessage nie było ciszy poprzedniej wiadomości ostrzegawczej statyczny datetime stPrevTime poprzedni pasek alertów timetime tThisBarTime TimeCurrent () PeriodSeconds () PeriodSeconds () aktualny czas paska if (ssPrevMessage sMessage stPrevTime tThisBarTime) inny andor 1 w tym pasku pamiętaj: ssPrevMessage sMessage stPreTime tThisBarTime tworzą ciąg komunikatów: sMessage StringFormat (ssss, TimeToString (TimeLocal (), TIMESECONDS), czas lokalny Symbol StringSubstr (EnumToString (ENUMTIMEFRAMES (Period)), 7), TF sMessage message) aktywuje sygnał powiadamiania: if (bAlert) Alert (sMessag e) jeśli (bEmail) SendMail (symbol sEmailSubject. sMessage) if (bNotification) SendNotification (sMessage) if (bSound) PlaySound (sSound) Kod sprawdzający potrzebę wywołania funkcji i uformowania tekstu dla niego umiejscowionego w ciele programu przed ukończeniem obsługi zdarzeń OnCalculate: alert iPeriodBar ratestotal 1 bieżący pasek jeśli (AlertPopup AlertEmail AlertPush 0) zwraca (szczerb) wszystko jest wyłączone, jeśli (buffSignaliPeriodBar 0) zwraca (szczerb) nic, aby złapać (lub już), jeśli (buffSignaliPeriodBar gt High iPeriodBar buffSignaliPeriodBar lt low iPeriodBar) linia sygnałowa dotykająca tekstu wiadomości: ciąg sMessage StringFormat (TS 80-20: potrzebne ss, TP: s, SL: s, buffSignalColoriPeriodBar gt 0. BuyStop, DoubleStart, DoubleToString (dEntryLevel, Digits), DoubleToString (dTP, Digits), DoubleToString dSL, cyfry)) powiadomienie: fDoAlert (sMessage, AlertPopup, false AlertEmail, AlertPush, AlertEmailSubj) return (ratestotal) pełna operacja OnCalculate Całe źródło c ode wskaźnika można znaleźć w dołączonych plikach (TS80-20.mq5). Układ obrotu według systemu jest najlepiej widoczny na wykresach minut. Pamiętaj, że wskaźnik używa danych paska, a nie zaznacza sekwencji wewnątrz pasków. Oznacza to, że jeśli cena przekroczyła kilka linii układu (na przykład linie Zyskuj i Zatrzymaj stratę) na jednym pasku, nie zawsze możesz określić, który z nich został przekroczony pierwszy. Inna niepewność wynika z faktu, że początek i koniec nie mogą zbiegać się. W przeciwnym razie linie z bufora typu DRAWLINE i DRAWCOLORLINE będą po prostu niewidoczne dla użytkownika. Funkcje te zmniejszają dokładność układu, ale nadal pozostaje całkiem jasne. Doradca ds. Testowania strategii handlowej 80-20 Podstawowa strategia EA w zakresie testowania strategii z książki Street Smarts: Krótkoterminowe strategie handlowe w zakresie wysokich prawdopodobieństw zostały opisane szczegółowo w pierwszym artykule. Lets insert two significant changes in it. First, the signal module is to be used in the indicator as well meaning it would be reasonable to set trading levels calculation in it. We have already done this above. Apart from the signal status, the feGetEntrySignal function returns order placement, Stop Loss and Take Profit levels. Therefore, lets remove the appropriate part of the code from the previous EA version adding the variables for accepting levels from the function and edit the function call itself. The listings of the old and new code blocks can be found in the attached file (strings 128-141). Another significant addition to the basic EA code is due to the fact that, unlike the previous two, this TS deals with a short-term trend. It assumes that the roll-back happens once a day and is unlikely to be repeated. This means that the robot has to make only one entry ignoring the existing signal all the rest of the time until the next day. The easiest way to implement that is to use a special flag static or global variable of bool type in the program memory. But if the EA operation is interrupted for some reason (the terminal is closed, the EA is removed from the chart, etc.), the flag value is lost as well. Thus, we should have the ability to check if todays signal was activated previously. To do this, we may analyze the history of trades for today or store the date of the last entry in the terminal global variables rather than in the program. Let us use the second option since it is much easier to implement. Provide users with the ability to manage one entry per day option and set an ID of each launched version of the robot it is needed to use global variables of the terminal level: input bool OneTrade false One position per day input uint MagicNumber 2018 EA magic number Lets add the variables necessary to implement one entry per day option to the programs global variables definition block. Initialize them in the OnInit function: string gsPrefix identifier of (super)global variables bool gbPositionToday false , gbPendingToday false Create a prefix of (super)global variable names: gsPrefix StringFormat ( SSB s u s. Symbol. MagicNumber, MQLInfoInteger ( MQLTESTER ). t . ) Has the robot worked with market or pending orders today gbPositionToday int ( GlobalVariableGet (gsPrefix LastPositionDate )) TimeCurrent () TimeCurrent () 86400 gbPendingToday int ( GlobalVariableGet (gsPrefix LastPendingDate )) TimeCurrent () TimeCurrent () 86400 Here the robot reads the values of global variables and compares the written time with the day start time, thus defining if the todays signal has already been processed. Time is written to the variables in two places lets add the appropriate block to the pending order installation code (additions highlighted): if (iTry - 10 ) if (LogLevel gt LOGLEVELNONE) Print ( Pending order placing error ) the distance from the current price is not enough :( if (LogLevel gt LOGLEVELERR) PrintFormat ( Pending order cannot be placed at the s level. Bid: s Ask: s StopLevel: s , DoubleToString (dEntryLevel, Digits ), DoubleToString (goTick. bid, Digits ), DoubleToString (goTick. ask, Digits ), DoubleToString (gdStopLevel, Digits ) ) else to update the flag: GlobalVariableSet ( in the terminal global variables gsPrefix LastPendingDate , TimeCurrent () TimeCurrent () 86400 ) gbPendingToday true in the program global variables The second block is placed after the code defining a newly opened position: if ( PositionSelect ( Symbol )) if ( PositionGetDouble ( POSITIONSL ) 0 .) if (gbPositionToday) update the flag: GlobalVariableSet ( in the terminal global vari ables gsPrefix LastPositionDate , TimeCurrent () TimeCurrent () 86400 ) gbPositionToday true in the program global variables . These are the only significant changes in the previous EA version code. The finalized source code of the new version is attached below. Strategy backtesting In order to illustrate the trading system viability, its authors use patterns detected on the charts from the end of the last century. Therefore, we need to check its relevance in todays market conditions. For testing, I took the most popular Forex pair EURUSD, the most volatile pair USDJPY and one of the metals XAUUSD. I increased the indents specified by Raschke and Connors 10 times, since four-digit quotes were used when the book was written, while I tested the EA on five-digit ones. Since there is no any guidance concerning the trailing parameters, I have selected the ones that seem to be most appropriate to daily timeframe and instrument volatility. The same applies to the Take Profit calculation algorithm added to the original rules the ratio for its calculation was chosen arbitrarily, without deep optimization. The balance chart when testing on the five-year EURUSD history with the original rules (no Take Profit): The same settings and Take Profit: The balance chart when testing the original rules on the five-year USDJPY history: The same settings and Take Profit: The balance chart when testing the original rules on the daily gold quotes for the last 4 years: The full data on the robot settings used in each test can be found in the attached archive containing the complete reports. Conclusion The rules programmed in the signal module match the 80-20 trading system description provided by Linda Raschke and Laurence Connors in their book Street Smarts: High Probability Short-Term Trading Strategies. However, we have extended the original rules a bit. The tools (the robot and the indicator) are to help traders draw their own conclusions concerning the TS relevance in todays market. In my humble opinion, the TS needs a serious upgrade. In this article, I have tried to make some detailed comments on developing the code of the signal module, as well as the appropriate robot and indicator. I hope, this will help those who decide to do the upgrade. Apart from modifying the rules, it is also possible to find trading instruments that fit better to the system, as well as signal detection and tracking parameters. FOREX Strategies Forex Strategy, Simple strategy, Forex Trading Strategy, Forex Scalping Forex Strategy 80-20 8212 another very simple and quite an interesting strategy forex Linda Raschke (previously we looked at 2 of its strategy: Turtle Soup, Turtle Soup plus One ), in which trade is conducted only on the daily range (D1) and trading signals are only During the 1 st trading day. Investigating the patterns of financial markets, it was noted that if the price on the market closes at the top or bottom 10 -20 of its daily range, then there is a possibility and it is 80 -90, the next morning, the price will continue to move in the same direction (ie towards the closing day candles), but eventually the price closes above or below this candle in only 50 of cases . That8217s a given fact (a chance to turn in the middle of the 2 nd day after the close of the 1 st day candles), and allowed 80-20 strategy exist and be popular in the financial markets. So, let8217s look at how deals are made in Forex Strategy 80-20 . an example of the transaction on the purchase . Suppose we open a trading terminal MetaTrader 4 today and note that: 1) Yesterday8217s daily candle was discovered in the upper 20 of its daily range and closed in the bottom 20 of its daily range. Ie If the daily candle divided into 5 parts, the opening price of yesterday8217s daily candle is in the top 1 5 of a closed candle. And the closing price is at the bottom 1 5 of the closed day candles. Figure 1. Dedicated bearish candle was discovered in 1 5 of the upper range and closed at 1 5 of its lower range 2) Today8217s daily candle opens and the price at the market went in the same direction as the close of the previous daily candle 8212 ie for sale, presumably for at least 10-15 points. 3) At this moment, when the price is already below yesterday8217s low and we have clearance to be placed pending order, we set the pending order to buy the type Buy Stop at yesterday8217s low price Figure 2. This is the same candle as in Figure 1, only the hourly interval. Expose the pending order to buy at a time when the price of the 2 nd hour candle falls below yesterday8217s low. 4) After the opening of trading positions in the purchase, we will establish a safety stop-loss orders below a few points (3-5) segodneshnego minimum. 5) Next, use a trailing stop (Universal trailing stop. the standard in Metatrader 4, or a trailing stop on the 1 st paragraph ) to lock in profits and tightens our stop-loss at a safe distance that you define for themselves, depending on the the chosen currency pair and the volatility in the forex market. For example, if the amount of daily candles 100-200 points, and trailing stop should be placed at a distance 50-70-100 points. Candle 50-70 points 8212 tryling-stop: 25-30 points. 6) If you prefer, you can put a profit target at a distance of at least 3.2 times the initial stop-loss (as required by our Money Management Forex ). Or record profits on the important Fibonacci levels. built by the first candle (38,2, 61,8) 7) Or you can simply rearrange the position of zero level. as soon as you see fit and leave the deal by the end of the trading day, and then look to close it or leave open. But I personally believe that it is better to use a trailing stop to lock in profits. For transactions on sale 8212 the rules of the opposite Figure 3. Vystalyaem pending order to sell Sell Stop, when the price broke yesterday makismum. Stop-loss is 10-15 points higher than this maximum, because price is not too moved away from him and turned around. Note: The transactions in this strategy are not as common, but if you observe the laws of several currency pairs, the probability of the conditions and the entry into the market will garazdo above By this strategy, forex trading you can buy Note: if you want to receive updates Expert Advisor - LEAVE positive feedback in the store Plati. ru without specifying e-mail in the body of reviews e-mail please indicate on the payment page 8212 which indicates where the goods will be delivered Subject to strict adherence to rules of the forex strategy 80-20, we get approximately the following trading results ( test results Adviser 80-20 strategy ): 1) Test strategies forex 80-20 8212 EURUSD (D1) with Expert Advisor 80-20 strategy 2) Test strategies forex 80-20 8212 EURJPY (D1) with Expert Advisor 80-20 strategy 3) test strategies forex 80-20 8212 USDCAD (D1) with Expert Advisor 80-20 strategyForex Strategy 80-20 - another very simple and quite an interesting strategy forex Linda Raschke (previous ly we looked at 2 of its strategy: Turtle Soup, Turtle Soup plus One ), in which trade is conducted only on the daily range (D1) and trading signals are only During the 1 st trading day. I recommend selecting a Broker Forex with Terminal MetaTrader 4 . Investigating the patterns of financial markets, it was noted that if the price on the market closes at the top or bottom 10 -20 of its daily range, then there is a possibility and it is 80 -90, the next morning, the price will continue to move in the same direction (ie towards the closing day candles), but eventually the price closes above or below this candle in only 50 of cases . Thatrsquos a given fact (a chance to turn in the middle of the 2 nd day after the close of the 1 st day candles), and allowed 80-20 strategy exist and be popular in the financial markets. So, letrsquos look at how deals are made in Forex Strategy 80-20 . an example of the transaction on the purchase. Suppose we open a trading terminal MetaTrader 4 today and note that: 1) Yesterdayrsquos daily candle was discovered in the upper 20 of its daily range and closed in the bottom 20 of its daily range. Ie If the daily candle divided into 5 parts, the opening price of yesterdayrsquos daily candle is in the top 1 5 of a closed candle. And the closing price is at the bottom 1 5 of the closed day candles. Figure 1. Dedicated bearish candle was discovered in 1 5 of the upper range and closed at 1 5 of its lower range 2) Todayrsquos daily candle opens and the price at the market went in the same direction as the close of the previous daily candle - ie for sale, presumably for at least 10-15 points. 3) At this moment, when the price is already below yesterdayrsquos low and we have clearance to be placed pending order, we set the pending order to buy the type Buy Stop at yesterdayrsquos low price Figure 2. This is the same candle as in Figure 1, only the hourly interval. Expose the pending order to buy at a time when the price of the 2 nd hour candle falls below yesterdayrsquos low. 4) After the opening of trading positions in the purchase, we will establish a safety stop-loss orders below a few points (3-5) segodneshnego minimum. 5) Next, use a trailing stop (Universal trailing stop. the standard in Metatrader 4, or a trailing stop on the 1 st paragraph ) to lock in profits and tightens our stop-loss at a safe distance that you define for themselves, depending on the the chosen currency pair and the volatility in the forex market. For example, if the amount of daily candles 100-200 points, and trailing stop should be placed at a distance 50-70-100 points. Candle 50-70 points - tryling-stop: 25-30 points. 6) If you prefer, you can put a profit target at a distance of at least 3.2 times the initial stop-loss (as required by our Money Management Forex ). Or record profits on the important Fibonacci levels, built by the first candle (38,2, 61,8) 7) Or you can simply rearrange the position of zero level. as soon as you see fit and leave the deal by the end of the trading day, and then look to close it or leave open. But I personally believe that it is better to use a trailing stop to lock in profits. For transactions on sale - the rules of the opposite Figure 3. Vystalyaem pending order to sell Sell Stop, when the price broke yesterday makismum. Stop-loss is 10-15 points higher than this maximum, because price is not too moved away from him and turned around. Note: The transactions in this strategy are not as common, but if you observe the laws of several currency pairs, the probability of the conditions and the entry into the market will garazdo abovBy this strategy, forex trading you Expert Advisor to the 80-20 strategy Subject to strict adherence to rules of the forex strategy 80-20, we get approximately the following trading results ( test results Adviser 80-20 strategy ): 1) Test strategies forex 80-20 - EURUSD (D1) with Expert Advisor 80-20 strategy 2) Test strategies forex 80-20 - EURJPY (D1) with Expert Advisor 80-20 strategy 3) test strategies forex 80-20 - USDCAD (D1) with Expert Advisor 80-20 strategy
Comments
Post a Comment