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

Stále více seniorů vyráží za zážitky do zahraničí

Ilustrativní obrázek

Vonovia oslabuje v reakci na zprávu, že město Berlín plánuje zmrazit ceny nájmů po dobu pěti let

Ilustrativní obrázek

Volkswagen plánuje většinu automobilového softwaru vyvíjet sám

Ilustrativní obrázek

Růst české ekonomiky v 1. čtvrtletí pokračoval

Ilustrativní obrázek

Donald Trump se negativně vyjádřil ke slovům šéfa ECB

Ilustrativní obrázek

Řešit osobní krize kovákům pomáhá Konto živelných pohrom



Čti více
Ilustrativní obrázek

Asijsko-pacifické indexy převážně silnější

Ilustrativní obrázek

S&P 500 a Dow Jones uzavřely na kladné nule, Nasdaq rostl

Ilustrativní obrázek

Amerika po otevření posiluje

Ilustrativní obrázek

Alibaba navrhuje split akcií v poměru 1:8

Ilustrativní obrázek

Akcie německé aerolinky Lufthansa se utápí hluboko v červených číslech

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.