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

USA: Index importních cen meziročně klesl

Ilustrativní obrázek

USA: Index žádostí o hypotéky MBA k 11. lednu dosahuje hodnoty 13,5 %

Ilustrativní obrázek

Společnost Charles Schwab vydala výsledky za 4Q FY 18 nad tržní očekáváním

Ilustrativní obrázek

U. S. Bancorp zveřejnila výsledky za 4Q FY18 nad odhady

Ilustrativní obrázek

Goldman Sachs překonává za 4Q FY 18 očekávání, akcie rostou

Ilustrativní obrázek

Bank of America zveřejnila výsledky za 4Q FY18 nad odhady



Čti více
Ilustrativní obrázek

Akcie společnosti Nordstrom oslabují po slabých tržbách během zimních svátků

Ilustrativní obrázek

Pražská burza slušně posílila díky bankovnímu sektoru

Ilustrativní obrázek

Letecká společnost United Continental překonala ve 4Q odhady

Ilustrativní obrázek

Akcie společnosti Snap klesají v předburzovní fázi o více než 8 %

Ilustrativní obrázek

Asijsko-pacifické indexy smíšeně

Ilustrativní obrázek

Akciový výhled 16.1.2019

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.