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

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 č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
Ilustrativní obrázek

Prudential Financial zaplatí 32,6 mil. USD, aby urovnala spor ohledně podílového fondu

Ilustrativní obrázek

Ranní restart 17.9.2019

Ilustrativní obrázek

Akciové trhy - denní zpráva 17.9.2019

Ilustrativní obrázek

Při zničujícím útoku na zařízení Aramco prý byly použity íránské zbraně

Ilustrativní obrázek

Akciový výhled 17.9.2019



Čti více
Ilustrativní obrázek

Asijské trhy se vyvíjejí smíšeně

Ilustrativní obrázek

Zámořské akcie mírně oslabily

Ilustrativní obrázek

Praha zaznamenala silný start do nového týdne

Ilustrativní obrázek

Index DAX oslabuje o 0,61 %

Ilustrativní obrázek

Asijsko-pacifické indexy se na pozadí útoků na saúdskoarabská ropná zařízení obchodovaly smíšeně

Ilustrativní obrázek

Pražská burza zakončila s mírným ziskem, všechny seance v tomto týdnu růstové

Portál W4T.CZ 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.