Také se vám stává, že vstupujete s jiným RRR než jaké vyžaduje vaše strategie, aby byla zisková? Já jsem s tím bojoval hodně dlouho a stejně jsem i přes všechna opatření občas vstoupil s RRR horším, než jsem chtěl. Pokud známe hodnotu PT a SL a rozhodneme se vstupovat minimálně s RRR 1:1 není nic jednoduššího, než si vypočítat prostřední vzdálenost mezi PT a SL a tato hodnota nám ukazuje, kde můžeme maximálně vstoupit. Nad ní by to již bylo špatně. Prostor mezi touto prostřední hodnotou a SL můžeme tedy nazvat „vstupní zóna“.
Vstupovat vždy pouze ve vstupní zóně se samozřejmě snadno řekne, ale pokud je tato vzdálenost hodně malá a my musíme ještě započítat spread a případný slipp, jde to velmi těžce. Aby toho ještě nebylo málo, co když potřebujeme vstoupit (viz například moje obchodovaná strategie) na close minutové svíčky – tedy nejlépe přesně v 59 vteřině? To již začíná být opravdový oříšek.
Samozřejmě jsou i vstupy, kdy se cena zastaví v naší vstupní zóně a poslušně zde čeká až do 59-té vteřiny. Pak je to samozřejmě hodně snadné. Prostě stiskneme tlačítko myši a vstupujeme s námi akceptovaným RRR, nebo lepším. Ale ve většině případech se cena nechová jako poslušný pejsek čekající na místě, ale přesně naopak. Lítá nahoru a dolů a chvilku je v naší vstupní zóně a během mrknutí oka je nad ní a za chvilku je tu zase a pořád dokola. V takovýchto situacích, kdy cena balancuje na horní hraně vstupní zóny, je vstup s přesným RRR defakto nemožný. Nezbývá, než prostě vstoupit a pak se zpětně podívat jaké jsme dostali plnění a porovnáním se vzdáleností k SL a PT zjistit naše skutečné RRR.
Aby to bylo ještě zajímavější, tak i SL se může v poslední vteřině, nebo v posledních pár vteřinách změnit. Ano, je to tak. U strategie, kterou obchoduji se občas hodnota SL změní doslova v posledních pár vteřinách a pořád se jedná o platný vstupní signál. Pokud se tak ale stane, okamžitě se samozřejmě mění vzdálenost SL od PT a tím pádem se mění i velikost a umístění vstupní zóny. V tomto případě ale opravdu již není v lidských silách spočítat okamžitě novou velikost vstupní zóny a zohlednit její velikost k aktuálnímu místu ceny. To se prostě nedá stihnout.
Není tedy divu, že jsem každou chvíli vstoupil s RRR horším než 1:1, což výrazně pomáhalo k tomu, že účet zrovna nenarůstal. Kde je sakra chyba? Jak z toho ven? No jasně už to mám. Jsem prostě pomalý!!! Pokud je cena ve vstupní zóně a já se rozhodnu vstoupit a tedy mačkám tlačítko myši pro vstup, tak za tu chviličku, než to stihnu, se cena stihne pohnout a klidně o pořádný kus. Natož, když se na poslední chvíli změní i umístění SL.
To je ono. Tak jsem na to již přišel. Jsem prostě pomalý a potřebuji tedy něco nebo někoho rychlejšího. No jo, ale co by to jako mělo být? To nebude tak jednoduché.
Pane jo, já jsem ale totální zabedněnec. Vždyť celou dobu mám odpověď před sebou a denně na ni koukám. Je to ta škatule s klávesnicí a monitorem. No jasně, vždyť co já potřebuji k výpočtu vstupní zóny? Znát umístění SL a umístění PT. PT znám vždycky a ten se nikdy nemění. Jediné co se někdy mění je hodnota SL, ale ten se mi přeci podařilo naprogramovat a tedy ho můj vstupní aos již zná. Přidám-li mu tedy ještě hodnotu PT měl by hravě vypočítat vstupní zónu a když mu pak dám jednoduchou podmínku pro vstup, tedy aby vstupoval pouze, když bude cena pod horním okrajem vstupní zóny, měl bych mít vyhráno.
No, počáteční nadšení v momentě, když jsem se rozhodl toto naprogramovat, ihned vystřídaly obavy, zda to opravdu bude tak jednoduché. Programovat přeci vůbec nedovedu a navíc jak jsem zapomněl zmínit v minulém článku, neumím anglicky. Ta angličtina je poměrně velký problém, protože k programovacímu jazyku MQL4 existují fantastické stránky s podrobnou nápovědou. Samozřejmě jsou ale v angličtině. Zde tedy každý, kdo umí anglicky snadno zjistí potřebné příkazy a vše si hravě naprogramuje. Ano KAŽDÝ KDO UMÍ ANGLICKY. Vím, že je to ostuda, ale já mezi ně nepatřím. No, to se prostě nedá nic dělat. Teď se učím trading a angličtina hold přijde na řadu, až bude účet přetékat statisíci dolary a já se budu stěhovat za oceán. Hold těch pár dní musí ještě ta angličtina počkat, no.
Tak tedy jdeme na to programování. Začneme v longovém aosu. Nevím, zda jsem to nezapomněl zmínit, tak raději pro jistotu. Mám dva vstupní aosy. Jeden pro vstup do longu a druhý pro vstup do shortu. Proč, je asi každému jasné. Již jsem to zmiňoval, nejsem programátor ba naopak a tak jsem na jistotu nic nechtěl komplikovat a snažil jsem se to udělat co nejjednodušší a přehledné. Tedy, když se blíží vstupní signál do longu, připravím si aos jménem buy a když se blíží vstupní signál do shortu, připravím si vstupní aos jménem sell. To je celé. Myslím, že to není až taková komplikace.
Tedy k naprogramování vstupní zóny. Hodnotu SL již známe z minulého článku. Ta se jmenuje „SL“ (a má v sobě hodnotu nejnižšího low z pěti posledních svíček). Tak teď tedy potřebujeme hodnotu PT. Na tu se zeptáme hned na začátku aosu tímto jednoduchým zápisem:
„extern double PT= 0;“
Slovo double seznamuje aos s pro něj neznámou veličinou tedy s naším „PT“ to je prostě nutné, aby ho aos znal a mohl s ním dále pracovat. (jinak jsem vypátral na internetu programátoři, mají tento příkaz ve škatulce Identifikátory / Datové typy / a dají se do něho ukládat čísla s desetinným místem). Protože neznám v tuto chvíli hodnotu PT a hlavně bude tato hodnota skoro při každém vstupu jiná tak zatím do této veličiny uložíme nulu.
Slovo extern patří mezi Identifikátory / Paměťové třídy a pokud ho umístíme před náš zápis „double PT=0;“ bude se tato proměnná zobrazovat při spuštění aosu a budeme si moci tuto hodnotu libovolně upravovat.
Tak tedy pokračujeme. Na začátek aosu jsme tedy napsali zápis, který jsme si výše vysvětlily.
extern double PT=0;
a jdeme dál. Ale kam? Co jsme potřebovali znát. No jasně hodnotu SL a tu známe z minula a hodnotu PT a tu si zadáme při spuštění aosu. Co dál? No nic, hotovo!!!!!
Cože? Tento jediný řádek mě stál tolik nervů a tolik špatných vstupů s negativním RRR??? Odpověď zní, ano. Opravdu tento řádek je ta složitost a „OPRÁVNĚNÁ“ obava z programování.
Odečíst od sebe PT-SL a vydělit jejich výsledek dvěma, a následně hodnotu, kterou vypočítám přičíst k SL abych získal horní okraj vstupní zóny, když spodní okraj znám – ten přeci tvoří SL - to již umí opravdu i děti z první třídy. No, a když budu znát horní okraj vstupní zóny, tak přidat před vstup podmínku, aby cena byla menší, než horní okraj vstupní zóny je podobně složité.
Tedy jdeme na to … jo pozor! Ještě jsem zapomněl na to, že PT umísťuji vždy jeden tick pod S/R. Vstupní signál se někdy nevykresluje zrovna pomalu, ale může se i objevit velice náhle. Potom není času zrovna nazbyt a tedy v takovýto moment si lámat hlavu rychlým odečítáním jednoho ticku (0.25 bodu) od S/R by tak mohlo akorát zapříčinit, že se spletu. Proto jsem se rozhodl přidat ještě jednu proměnnou a tu si nazvat hrubý profit target – tedy „HPT“. Do ní si tedy budu ukládat hodnotu hrubého PT (přesnou hodnotu S/R) a následně si teprve odečtu ten jeden tick.
Zápis tedy pozměníme a bude vypadat takto:
extern double HPT= 0;
seznamujeme aos s proměnnou „HPT“, která se objeví při spuštění aosu a bude po nás chtít zadat její hodnotu (náš hrubý PT).
double PT;
seznamujeme aos s proměnnou „PT“.
PT=HPT-0.25;
A zde odečítáme jeden tick od hrubého profit targetu a získáváme čistý profit target tedy „PT“.
Teď když máme PT potřebujeme k dalším počtům tedy i SL. Ten již známe z minula a tak můžeme opsat. Ale pozor ani zde nesmíme zapomenout aos se SL seznámit.
double SL;
if (Low[0]<=Low[1]&&Low[0]<=Low[2]&&Low[0]<=Low[3]&&Low[0]<=Low[4])
SL = Low[0];
if (Low[1]<=Low[0]&&Low[1]<=Low[2]&&Low[1]<=Low[3]&&Low[1]<=Low[4])
SL = Low[1];
if (Low[2]<=Low[0]&&Low[2]<=Low[1]&&Low[2]<=Low[3]&&Low[2]<=Low[4])
SL = Low[2];
if (Low[3]<=Low[0]&&Low[3]<=Low[1]&&Low[3]<=Low[2]&&Low[3]<=Low[4])
SL = Low[3];
if (Low[4]<=Low[0]&&Low[4]<=Low[1]&&Low[4]<=Low[2]&&Low[4]<=Low[3])
SL = Low[4];
A nyní již můžeme tedy počítat vstupní zónu. Nejprve tedy musíme odečíst od PT náš SL a jejich rozdíl vydělit dvěma. (Chceme přeci RRR 1:1 že? Ale pokud bychom se rozhodli jinak a například chtěli RRR 1:2 není to vůbec složité. Prostě rozdíl mezi PT a SL nevydělíme dvěma ale třemi. Myslím, že není třeba rozepisovat. To je již každému jasné. Takto lze snadno získat libovolné RRR). No, ale zpět k našemu.
Pro tento účel si opět zavedeme pomocnou proměnnou a nazveme ji „vstupní zóna“ tedy „VZ“. Ano, správně i s ní samozřejmě budeme muset náš aos seznámit. To již známe.
double VZ;
Nyní tedy odečteme od PT náš SL a rozdíl vydělíme dvěma a výsledek uložíme do proměnné „VZ“.
VZ=((PT-SL)/2) ;
V proměnné „VZ“ máme uloženou poloviční vzdálenost mezi SL a PT.
Dále je zapotřebí tuto vzdálenost přičíst k našemu SL a dostaneme již hodnotu horního okraje vstupní zóny. Pro přehlednost si opět zavedeme další proměnnou a tu nazveme „horní okraj vstupní zóny“ tedy „HOVZ“. Opět musíme náš aos seznámit s naší další proměnnou.
double HOVZ;
Teď, když se již znají, můžeme s ní dále pracovat.
HOVZ=VZ+SL;
V proměnné „HOVZ“ máme hodnotu horního okraje vstupní zóny a zbývá již jen dát do podmínky před vstupní příkaz porovnání s aktuální cenou v našem případě Ask.
If (HOVZ > Ask)
Pokud je „horní okraj vstupní zóny“ větší než aktuální cena. Neboli je aktuální cena pod horním okrajem vstupní zóny?
A je hotovo. Pro pořádek ještě raději upozorňuji, že cena může samozřejmě klesnout k dolnímu okraji vstupní zóny a to není nijak aosem ošetřeno. Je to schválně, protože zde již rozhoduji já sám, tedy lidský faktor, zda se rozhodnu vstoupit nebo ne a riskovat nepatrný SL (který může samozřejmě být malinkatým výkyvem ceny zbytečně zasažen.) Nebo se malinkatý SL udrží a obchod nám nadělí zisk s obrovským RRR. To již je na uvážení každého a je třeba zohlednit konkrétní situaci.
Zde ještě celkové poskládání aosu.
extern double HPT= 0;
double PT;
double SL;
double VZ;
double HOVZ;
if (Low[0]<=Low[1]&&Low[0]<=Low[2]&&Low[0]<=Low[3]&&Low[0]<=Low[4])
SL = Low[0];
if (Low[1]<=Low[0]&&Low[1]<=Low[2]&&Low[1]<=Low[3]&&Low[1]<=Low[4])
SL = Low[1];
if (Low[2]<=Low[0]&&Low[2]<=Low[1]&&Low[2]<=Low[3]&&Low[2]<=Low[4])
SL = Low[2];
if (Low[3]<=Low[0]&&Low[3]<=Low[1]&&Low[3]<=Low[2]&&Low[3]<=Low[4])
SL = Low[3];
if (Low[4]<=Low[0]&&Low[4]<=Low[1]&&Low[4]<=Low[2]&&Low[4]<=Low[3])
SL = Low[4];
PT=HPT-0.25;
VZ=((PT-SL)/2) ;
HOVZ=VZ+SL;
If (HOVZ > Ask)
Závěrem ještě jedna ukázka fungování aosu s RRR 1:1 ze dne 6. 8. 2018. V čase 16:27:59 jsem stiskl spoušť vstupního longového auosu. Na obrázku je vidět, že se cena pohybovala na hraně horního okraje vstupní zóny – černá linka bez čísla (Bid). Když se ale podíváme na cenu, za kterou bychom v daný okamžik nakupovali – černá linka s číslem (Ask), je již pouhým okem patrné, že vzdálenost mezi vstupní cenou a PT je menší, než vzdálenost vstupní ceny od SL. Tedy RRR je nižší, než požadované 1:1. Přesný poměr si snadno každý spočítá podle hodnot z obrázku. Aos tedy nemohl vstoupit a čekal.
Zde jsou dvě možnosti. Buď vstupní signál považujete již za neplatný a aos jednoduše vypnete. Nebo signál považujete stále ještě za platný a aos necháte pracovat.
Já jsem se rozhodl pro možnost číslo dvě a nechal aos ještě chvíli zapnutý. Po sedmi vteřinách v čase 16:28:07 se cena pohnula o trochu níže, a jak je patrné z dalšího obrázku v tento okamžik již RRR vykazovalo požadované minimální 1:1 a aos již vstoupil do obchodu, který v čase 16:29:49 skončil na PT.