Tvorba vlastního AOS (9) – Příprava kódu pro testování a optimalizaci

20.03.2017 09:49 | Mar Ve | Diskuze

V předchozím díle jsme se seznámili s testerem strategií a zkusili otestovat vytvořený AOS na historických datech. Nyní si ukážeme, jak snadno upravit kód, abychom mohli provádět optimalizaci obchodních parametrů.

Ilustrační obrázek
Foto: W4T

Nejprve si otevřeme MetaEditor se strategií. Naším cílem bude tvorba proměnných, které budou zastupovat parametry, se kterými chceme v rámci optimalizace pracovat. Těmi mohou být např. úrovně stop lossu a take profitu, perioda klouzavého průměru či objem obchodů.  

Můžeme začít například právě s objemem. Ten v našem kódu zadáváme v obchodní funkci OrderSend() jako třetí parametr a dříve jsme ho nastavili na výchozí hodnotu 1, tedy 1 lot.

OrderSend(Symbol(),OP_BUY,1,Ask,0,stoploss,takeprofit,NULL,0,0,clrNONE)

Místo pevně stanovené hodnoty však můžeme použít proměnnou. Pro objem zvolíme datový typ double a v hlavičce kódu si tak specifikujeme novou proměnnou. Důležitým krokem je přidání klíčového slovíčka extern před deklaraci. Díky tomu bude možné s proměnnou později pracovat v testeru strategií. Zároveň přiřadíme proměnné rovnou i výchozí hodnotu. Zápis bude vypadat následovně:

extern double objem=1;

Nyní můžeme do funkce OrderSend() místo pevné hodnoty 1 napsat název nově vytvořené proměnné – objem.

Podobným způsobem budeme pokračovat i dále. Periodu klouzavého průměru specifikujeme ve funkci iMA v proměnné hodnota_MA jako třetí parametr. Můžeme si tak opět vytvořit novou proměnnou pro periodu klouzavého průměru například ve tvaru:

extern int perioda_MA=100;

Místo pevně stanovené hodnoty 100 tak vložíme pouze perioda_MA.

Zbývají nám ještě parametry stop loss a take profit. Úpravou v nastavení toho, jestli chceme na 1 obchod riskovat 2 % a cílovat zisk 4 % , nebo zvolit úplně jiné hodnoty, může být dosaženo výrazně odlišných výsledků. Z toho důvodu se nám tyto parametry budou při optimalizaci rozhodně hodit. Nestačilo by však nyní pouze využít stávající proměnné stoploss a takeprofit, jelikož v těch je uložena cenová úroveň odvíjející se od aktuální ceny při vstupu do obchodu. My chceme mít možnost manipulovat s výší procent. Aktuálně je hodnota proměnné počítána takto:

stoploss=Close[0]*0.98;

Tím je vypočítána úroveň stop lossu jako aktuální cena bez 2 %. Možnost měnit procentuální vyjádření můžeme však získat například následujícím zápisem s využitím nové proměnné (s názvem stoploss_procenta):

stoploss=Close[0]*(1-stoploss_procenta);

Jako menšenec od jedničky je použita nová proměnná, se kterou je v základním nastavení na 2 % dosaženo stejné hodnoty závorky jako původně (0.98). Nyní však můžeme měnit pouze hodnotu proměnné a tím upravovat velikost stop lossu v procentuálním vyjádření. Nezapomeňte na vytvoření samotné proměnné.

extern double stoploss_procenta=0.02;

Obdobný postup platí také pro take profit. Pevnou hodnotu 1.04 v jeho výpočtu nahradíme operací s novou proměnnou (takeprofit_procenta), která vyjadřuje procentuální hodnotu take profitu. Nový výpočet proměnné takeprofit bude tedy následovný:

takeprofit=Close[0]*(1+takeprofit_procenta);

Nezapomeňte, že zde musí být znaménko plus, jelikož úroveň takeprofit je vyšší než aktuální tržní cena a procenta k ní musí být tedy přičítána. V hlavičce kódu vznikne proměnná:

extern double takeprofit_procenta=0.04;

Pro kontrolu si můžete prohlédnout pozměněné a nové části kódu, tedy proměnné v hlavičce, výpočet hodnot proměnných ve funkci OnTick() a proměnnou s obchodní funkcí.

Proměnné v hlavičce:

Výpočet hodnot proměnných:

 

Obchodní funkce:

Nyní máme připraveny 4 parametry, se kterými lze dále pracovat v testeru strategií. Pokud kód zkompilujeme, otevřeme tester strategií a klikneme na tlačítko „Vlastnosti strategie“ zjistíme, že se objevila nová záložka s názvem „Vložit parametry“. V ní nalezneme námi nově vytvořené proměnné.

Jak s nimi pracovat při optimalizace strategie si ukážeme v příštím díle.

Líbil se vám tento článek?
+0 / -0
Odeslat článek e-mailem
Diskuze
Vstoupit do diskuze
V diskuzi zatím není žádný komentář. Buďte první, kdo bude komentovat.


Související články
Ilustrační foto

Každou devátou pobočku České pošty již provozuje smluvní partner

Ilustrační foto

Ovocné sady se bez umělé závlahy neobejdou, říkají ovocnáři

Produkce z obnovitelných zdrojů v USA poprvé překonala jadernou

Ilustrační foto

Závěr G20: Volný obchod ano, ochrana klimatu bez USA

Ilustrační foto

EC: České stavebnictví v příštím roce meziročně vzroste o 4,9 procenta

Ilustrační foto

Itálie zaznamenala za loňský rok více než 100 tisíc podezřelých finančních transakcí



Čti více
Ilustrační foto

Příští týden na akciových trzích: V USA začíná výsledková sezóna

Ilustrační foto

Uplynulý týden na finančních trzích: Obchodování narušilo volno, pozornost jsme věnovali makroukazatelům

Ilustrační foto

Americkým akciím pomohla k zisku dobrá zpráva o vývoji nezaměstnanosti

Technologické akcie se zotaví po nadcházejících čtvrtletních výsledcích, věří analytici

Toshiba se snaží získat úvěr ve výši 6 miliard USD. V EU čelí obtížím ze strany regulačních úřadů

Počet aktivních ropných vrtů v USA v tomto týdnu opět rostl

Portál Web4Trader používá cookies s cílem zajistit co možná nejlepší zážitek při návštěvě těchto webových stránek. Dalším užíváním těchto webových stránek vyjadřujete souhlas s umístěním souborů cookies na vašem počítači / zařízení. Více informací naleznete zde.