V článku Backtestování v Excelu (VBA) – II. jsem popsal, jak v Excelu otevřít kartu Vývojář a jak vytvořit první makro. Toto makro vygenerovalo VBA skript, abych poté napsal, že nebudu makra zaznamenávat, aby mi tvořila VBA skript, ale budu postupovat přesně naopak, tedy psát VBA skript pro vytvoření makra. Takovou činnost jsem odstartoval v článku Backtestování v Excelu (VBA) – III.. Popsal jsem základní práci s excelovskými buňkami, jak je pomocí VBA skriptu označit, jak je smazat a jak pracovat také s jejími oblastmi (více buněk najednou). Popsal jsem základní práci s proměnnými a ukázal, k čemu vlastně taková proměnná může sloužit. V dnešním článku bych se chtěl posunout opět mírně dál, protože jsem se zatím pohyboval pouze na jednom listu otevřeného sešitu a pracoval s malým počtem dat (jednoduché údaje o miniportfoliu akcií Goldman Sachs). Toto se budu pokoušet rozšířit o práci s více listy a také ukázat, jak pomocí cyklické funkce VBA otestovat jednoduchý obchod na větším vzorku dat.


Práce s listy

   V minulém článku jsem popisoval, jak mohu buňky pomocí VBA skriptu označovat pomocí Cells a Range a jejich umístění jsem pak uvozoval příponou ActiveSheet. a měl tak na mysli skutečnost, že tyto buňky se nacházejí na otevřeném listu aktuálně otevřeného sešitu. Takový pohyb na jednom listu však může být nejen nepraktický, ale pro potřeby přehlednosti a adresnosti psaného skriptu také nevyhovující. Mohu si jednoduše chtít svou práci rozvrhnout na více listů, abych se neutopil v záplavě dat na jediném listu při zpracování většího datového souboru. Protože jsem avizoval, že nebudu zabíhat do programátorských detailů, ale ukážu zcela prakticky, jak si vše potřebné nastavit, budu v tomto trendu pokračovat i nyní. Pokud si otevřu excelovský sešit, budu mít k dispozici aktivní List1, na kterém mohu pracovat.

   Toto základní nastavení mi nemusí stačit, protože mohu například chtít, abych na tomto listu měl pouze data, která budu chtít podrobit analýze, na druhém listu budu chtít mít umístěny výsledky konkrétní analýzy a na třetím listu pak třeba nějaké shrnutí několika analýz najednou. V klasickém prostředí excelu to není žádný problém, listy si jednoduše přidám tlačítkem „plus“ vedle aktivního listu na takto vytvořené listy pak přejmenovat. Mohu tak například učinit, podle této mé zamýšlené potřeby, takto:

   Pohledem do pracovní plochy VBA mohu toto rozšíření mého otevřeného sešitu o přidané listy pozorovat v tomto náhledu.

   Mám tak definovány tři listy a každý má svůj název. Tuto skutečnost pak bude zapotřebí ošetřit také při psaní VBA skriptu, abych mohl poté své operace umisťovat na nějaký ze tří listů, které mám nyní k dispozici. Z pohledu struktury a logiky VBA programování je list sešitu tzv. objekt, na kterém mohu provádět nějaké zamýšlené činnosti a abych je mohl nějak definovat, musím je ve VBA nastavit. Toto se provádí pomocí instrukce Set. Není zapotřebí nad toto procedurou nějak přemýšlet, protože nastavení je mechanickou programátorskou rutinou. Můj nyní otevřený nový třílistový sešit, se kterým hodlám nyní pracovat, ještě neobsahuje žádné makro, proto si do něj vložím Modul, do kterého budu toto definování listů pomocí VBA skriptu zapisovat. Vložení Module provedu podle již popsaného způsobu v prvním článku o VBA, tedy instrukcí Insert z pásu nástrojů.

   Touto akcí vložím Module1 do svého sešitu a po kliknutí na něj mohu do pravé části plochy VBA, do okna General, zapisovat své skripty, tvořící makra.

   Mé makro bude mít název TestujiAkcie.

   Toto již znám z předchozích článků. Do takto připraveného skriptu budu ale nyní chtít definovat své tři excelovské listy otevřeného sešitu. Toto provedu tak, že nové objekty – vytvořené listy – budu považovat za proměnné, které budou mít hodnotu Worksheet, takto bude s nimi VBA také nakládat, nebudou to tedy ani čísla (Integer), ani textové výrazy (String) nebo datum (Date), ale bude to proměnná, která se bude chovat jako list excelovského sešitu. Deklarace této skutečnosti pak vypadá ve VBA takto.

   Po této deklaraci, kdy mám v excelovském sešitu tři nové proměnné – listy otevřeného sešitu, provedu jejich konkrétní nastavení pomocí již avizované instrukce Set následujícím zápisem.

  Tímto zápisem nastavím, že proměnná DataSheet bude chápána jako excelovský aktivní list, který má v klasickém excelu „ouško“ se jménem „Data“, tedy můj přejmenovaný první list, stejně tak pro zbylé dva aktivní listy „Backtest“ a „Celkem“. Co tedy nyní nastane za změnu ve psaní dalších řádků VBA skriptu? Nic jiného než zacílení zamýšlené operace na konkrétní list, který jsem si nyní nadeklaroval a následně nastavil, nyní tedy například pojmenování buněk nebude uvozovat přípona ActiveSheets.Cells…, která označovala buňku pouze aktuálně otevřeného jediného listu (jako doposud v článcích), ale pojmenování buňky podle umístění v aktivních listech, které jsem si vytvořil, konkrétní předponou podle názvu tohoto listu – DataSheet., BacktestSheet. nebo CelkemSheet. Například, pokud budu chtít do buňky C36 na listu „Backtest“ zapsat text „Hurá na listy“, bude zápis vypadat následovně.  

   Spuštěním makra mohu pozorovat tento výsledek.

   Zacílení mé akce na vybraný list s názvem „Backtest“ provedlo jeho výběr a akci v požadované buňce vybraného listu zápisem požadovaného textu. Toto by prozatím k instrukci Set mělo postačovat pro další postup v mé programátorské práci, takto nastavit si totiž mohu libovolný objekt excelu, tedy list, sešit, oblast buněk…atd., nebudu to ale dále významně komplikovat, pohyb po definovaných listech je i tak již nyní významná funkcionalita, která mi celkovou práci umožní docela výrazně zpřehlednit.

   Na závěr tohoto oddílu upozorním ještě na „technické problémy“, které se mohou vyskytnout při psaní VBA skriptu. Interaktivita prostředí, kde píšu VBA skript reaguje na nesprávný zápis skriptu upozorněním ve formě okna, které má tento tvar.

   Toto okno je upozorněním, že mám ve skriptu nějakou chybu syntaxe a VBA nemůže takovou chybu ignorovat a skript tak nemůže dále běžet, běh makra se tak zastaví. Kliknutím na tlačítko „Debug“ okno zavřu, aby mi VBA označilo řádek, který vykazuje pro VBA nepřekonatelný problém.

   Podbarvením žlutě pak mohu vidět chybový řádek. V něm jsem udělal chybu v psaní, když nemám správně napsánu předponu BacktestSheet, ale mám uvedeno chybně BatestSheet, skript tak neví, který list mám na mysli, protože takový v mém sešitu neexistuje. Pokud tuto chybu opravím, mohu makro opětovně spustit spouštěcím tlačítkem z lišty nástrojů.

   Dalším projevem interaktivity prostředí pro psaní VBA skriptu může být upozornění, že mému skriptu chybí nějaká podstatná část kódu, která vede k přerušení běhu makra. Může to vypadat následovně.

   V řádku podbarveném červeně chybí za rovnítkem část kódu, VBA vyhodnotilo, že v tomto místě je chyba. Konkrétně, že chybí dopsat nějaký výraz. Kliknutím na OK a doplněním chybějící části kódu  (dopsáním části skriptu za rovnítko) vyřeším upozornění a makro již opět běží. 


   Předeslal jsem, že pro mou analytickou práci s daty pomocí VBA skriptů budou zásadní funkce cyklů a také některé základní rozhodovací funkce, kterými programovací jazyk VBA disponuje. Jak je to myšleno? Pokud budu nyní chtít zkoumat a analyzovat nějaká akciová data, tak v jednoduchém příkladu vyberu nějakou její pořizovací cenu k nějakému časovému okamžiku a k ní prodejní cenu v nějakém budoucím časovém okamžiku, tyto ceny podrobím nějaké proceduře zkoumání a rozhodnu se, kam svůj výsledek zkoumání zapíšu, po takové proceduře cyklus uzavřu a odstartuji nový cyklus se stejnou procedurou zkoumání a zápisu výsledku pro novou dvojici cen. Nezáživný slovní popis bude nejlépe nahradit praktickou ukázkou. Zůstanu také u akcií GS stejně jako v minulém článku. Pořízení historických cen budu nyní uvažovat striktně ze zdroje Yahoo Finance, kde jsou data volně k dispozici a nečekám nějaká významná omezení na rozdíl od v minulosti propagovaného Quandl.com. Pořizování historických dat od mého brokera Interactive Brokers popsané v tomto článku  ponechám nyní stranou, protože ne každý využívá jeho služeb.

Pořízení dat

   Do svého počítače si stáhnu historická data za nějaké volitelné minulé období prostřednictvím této stránky, kde zadám k vyhledávání požadovaný ticker GS (Goldman Sachs)

 Z voleb možností přehledu o tomto tickeru zvolím záložku „Historical Data“.     

   Kliknutím na Time Period (1) zobrazím předvolby časových období, ze kterých mohu vybrat například posledních pět let (2). Zakliknutou volbu pětiletého období potvrdím stisknutím tlačítka „Apply“ (3). Zadané období se mi zobrazí právě změnou zobrazení u Time Period (1), kde mohu zjistit, že si do počítače stáhnu data od 3.7.2015 – 3.7.2020, takovou akci potvrdím volbou „Download“ (4) Stažená pětiletá data ve formátu .csv se objeví v mém počítači.

Tato data  si poté mohu načíst do svého excelovského sešitu pomocí záložky „Data“ a volby „Z textu/CSV“.

   Natažení dat do listu „Data“ pak provedu pomocí průvodce, tuto proceduru jsem zde již několikrát popisoval. Stažená data do zadaného místa v listu „Data“ pak po mírné grafické úpravě a smazání přebytečných sloupců mohu vidět například v tvaru na obrázku níže. 

  Prvním základním problémem je pak skutečnost, že jsem vygeneroval data ve formátu amerického čísla, tedy s desetinnou tečkou namísto desetinné čárky (v červeném obdélníku). Tuto nepříjemnost odstraním nyní manuálně (mám na to makro, které ukážu později. 

  Pomocí výběru oblasti buněk (1), pro které chci změnit tečku na čárku tyto buňky označím a kliknutím na záložku „Domů“ (2) zvolím nástroj „Najít a vybrat“ (3) a z nabízeného menu vyberu „Nahradit“.  Tímto spustím okno s nabízející nahrazovací operací pro vybranou oblast buněk.

   V okně s nabídkou možností si na záložce „Nahradit“ (1) vložím do prvního pole „Najít“ znak „tečka“ a do druhého pole vložím znak „čárka“, celou tuto operaci spustím kliknutím na „Nahradit vše“. Tato procedura najde v označeném poli buněk všechny desetinné tečky, aby je nahradila za desetinné čárky, výsledek takto zpracovaných dat je pak následující

   Tímto mám data připravené ke zpracování a analýze pomocí české verze Excelu. Již nyní je patrné, že testovat data pro různé obchodované tituly nebude nic složitého, protože stahovaná data z Yahoo mají stejný formát a nahradit jednu datovou řadu nějakou jinou je otázkou několika vteřin, zvláště, pokud si ji opět nějak zautomatizuji.


Cykly ve VBA

   Protože chci každou funkcionalitu VBA ukázat na konkrétním úkolu, zkusím si jej nejdříve nadefinovat. Budu tedy na pětiletém časovém období, reprezentovaném staženými daty akciového titulu GS, nejdříve chtít zjistit, jak by se mi dařilo v kuriózním obchodním přístupu – nakupování určitého počtu akcií každý obchodní den na Open trhů a jejich prodeji na Close stejného dne, k tomuto si do svého výpočtu nechám započítat také poplatky za tyto obchody, aby byly výsledky reálnější. Výsledek takového testu bude vycházet z dat na listu „Data“ mého excelovského sešitu a výsledek takového testu bych si chtěl nechat zapsat na list „Backtest“. K datům, která jsem si stáhl z Yahoo a poté upravil, tak podle tohoto zadání ještě přidám buňky s počtem akcií a poplatky, tyto pak budu moci deklarovat také jako proměnné a měnit jejich výši podle libosti, například jednoduše takto.  

   Mé intradenní akciové obchody podle tohoto zadání pak mohu provádět s proměnnými, které si nadefinuji podle minulého článku pomoci VBA. Mohu si tak tyto nadeklarovat psaním dalších řádků tvořeného makra

   Pokračuji tedy ve skriptu, kde již mám nadefinovány a nastaveny jednotlivé listy sešitu psaním dalších řádků skriptu pro deklaraci proměnných. Pojmenování jsem opět co nejvíce přizpůsobil významu a hodnotám, které si tyto proměnné ponesou, navíc jsem si nadefinoval jakési proměnné (poslední dva řádky skriptu) AktualniRadek a BacktestRadek, které budu využívat jako „počitadla“ nebo „hybatele“ budoucích cyklů (více dále v textu a v dalším článku).

   Postup mého testu intradenního akciového obchodu pak bude spočívat v opakovaném vybírání vstupní ceny akcií v daném dni a výstupní ceny akcií v daném dni a jejich porovnání pro zjištění, jak by si takový obchod vedl, zapsání jeho výsledku a následné posunutí se o jeden den v mém datovém souboru staženém z Yahoo dále s provedením stejné procedury. Tento proces opakování se pak zastaví vyčerpáním všech možností mého staženého datového souboru. VBA takové cyklické pohyby ve staženém souboru historických dat umí zajistit připravenými funkcemi, které k tomu velmi jednoduše využiji.    

Do (While)…Loop

   Procedura, která je takto označena znamená „…Dělej, co máš, do té doby, pokud není splněna nějaká podmínka. Do té doby proceduru pořád opakuj…“. Pokud si ji vepíšu do svého makra, mohu pozorovat následující text skriptu této funkcionality.

   Červené podbarvení mi říká, že zadanému skriptu Do While něco chybí a tím je právě definice podmínky, co musí být splněno, aby se cyklus opakování zastavil. Všechny operace, které budou vepsány mezi řádky Do While a Loop se pak budou opakovat do té doby, než bude splněna podmínka, které doposud ve skriptu chybí. Pokud by žádná podmínka na ukončení nebyla nastavena, cyklus by se opakoval do nekonečna a makro by běželo neustále stále dokola v nastavené smyčce a musel bych jej manuálně ukončovat, a to by bylo velmi nepraktické. Svou podmínku na zastavení takové smyčky (Loop) potom nastavím tak, že budu požadovat, aby se opakování ukončilo ve chvíli, kdy budou zpracována všechna data z mého staženého datového souboru. Tato podmínka by mohla vypadat k zapsání pomocí skriptu následujícím způsobem spolu s dopsáním skriptu, který definuje celý jeden cyklus se zadáním jeho opakování.

   Myslím, že toto je prozatím nejdůležitější obrázek z celého miniseriálu o VBA a pochopení jeho logiky je klíčové pro opakované operace na mém listu se staženými daty. Nyní bude také patrné, že definice buňky pomocí výrazu Cells je daleko vhodnější než způsobem Range. Nadefinovanou hodnotu proměnné AktualniRadek jsem si určil jako = 4 (1). Znamená to, že na tomto řádku začínají první data, která budu chtít zpracovat pro mou analýzu. První datové údaje v excelovském listu „Data“ začínají 6.7.2015 a tyto jsou opravdu na čtvrtém řádku.  Do podmínky Do While jsem si dopsal její zadání (2) = DataSheet.Cells(AktualniRadek, 2) <> „“. Co to znamená? Jednoduché zjišťování, jestli je na listu „Data“ ve sloupci označeném dvojkou (sloupec „B“) prázdná buňka. Momentálně je pozice řádku definována proměnnou AktualniRadek s hodnotou 4 a pozice sloupce je „natvrdo“ hodnota 2, proto je plnění podmínky na zastavení cyklu hledáním prázdné buňky nyní nasměrována do DataSheet.Cells(4, 2), tedy do buňky „B4“. tato však prázdná není, protože je v ní umístěno první datum staženého pětiletého období s hodnotou 6.7.2015, podmínka tak splněna není a cyklus může pokračovat. V místě, které jsem označil (3), budu následně vytvářet nějaké početní úkony s mými akciemi z datového souboru, které zadám následně v článku. Po jejich provedení provedu zvýšení hodnoty proměnné AktualniRadek o hodnotu jedna (4). Toto zvýšení proměnné AkualniRadek o hodnotu jedna má za následek, že tak, jak jsem si ji definoval hodnotou 4 pro tento cyklus, tak nyní si tato proměnná ponese hodnotu 5 pro další cyklus. Tento cyklus se začne opakovat dospěním VBA k instrukci Loop (5), která přikáže, aby se začátek nového cyklu vrátil na řádek (2) s příkazem Do While a procedura se opakuje, nyní však již hodnota AktualniRadek není 4, ale je zvýšená o jedničku na hodnotu 5, proto se dotaz na prázdnou buňku v podmínce zastavení cyklu = DataSheet.Cells(AktualniRadek, 2) <> „“ bude nyní týkat DataSheet.Cells(5, 2), tedy buňky „B5“. tato však opět prázdná není, protože je v ní umístěno druhé datum staženého pětiletého období s hodnotou 7.7.2015, podmínka tak opět splněna není a cyklus může znovu proběhnout. Má stažená pětiletá data z Yahoo jsou umístěna až do řádku 1262, bude proto probíhat 1262 cyklů než přijde okamžik, kdy napsaný VBA skript ve formě cyklické funkce Do WhileLoop zjistí, že dotaz, zda buňka DataSheet.Cells(1263, 2) <> „“ vyhovuje podmínce na prázdnou buňku, je pravdivý a další cyklus již spuštěn nebude, makro doběhne a příkazem End Sub se ukončí.           

  Do takto připraveného opakování cyklů pomocí Do WhileLoop s posouváním se o jeden řádek a zastavením se ve chvíli, kdy narazím na prázdné buňky, mohu začít vyplňovat jednotlivé početní úkony, které budou odpovídat mým požadavkům na analýzu. Protože jsem nyní již pochopil, že má data začínají na AktualnimRadku, který je nastaven pro první cyklus na hodnotě 4 a s každým dalším cyklem se zvedne o hodnotu jedna, což posune opakování výpočtu o jeden řádek níže, využiji tohoto zvyšování hodnoty také pro mé výpočty. Na obrázku níže je popis prvních hodnot proměnných, jak budou naplněny pro první cyklus.

   Protože se v prvním cyklu pohybuji na čtvrtém řádku, budou první proměnné VstupniDatum, VstupniCena a VystupniCena načteny z buněk DataSheet.Cells(AktualniRadek, 2), DataSheet.Cells(AktualniRadek, 3) a DataSheet.Cells(AktualniRadek, 6). Proměnné PocetAkcii, Poplatky a Ticker se nebudou s cykly měnit, proto bude jejich hodnota odpovídat konkrétním buňkám DataSheet.Cells(4,8), DataSheet.Cells(6, 8) a DataSheet.Cells(8, 8). Tento zápis načítání a načtení proměnných pak mohu provést takto:

   Zadání AktualniRadek = 4 jako označení řádku, kde začínají má data na excelovském listu zůstává zachováno (1). Proměnné, které se nebudou prováděním cyklů měnit, tedy počet akcií v analýze, poplatky a ticker testované společnosti, naplním jejich hodnotu zápisem skriptu do řádků před proceduru Do WhileLoop (2). Zůstanou tak pro každé spuštění makra stejné. Do cyklu Do WhileLoop zapíšu jednotlivé načítání proměnných podle hodnot v sešitu se staženými daty řádky skriptu označené (3). Opakování cyklů s posunem řádků o jeden krok ponechám nastaveno (4). Tím mám zajištěno postupné načítání hodnot proměnných z jednotlivých řádků pro 1262x načtení (opakování cyklů). Zbývá tak jednotlivým načtením přiřadit výpočty pro potřeby mé analýzy.

   V každém cyklu, představující jeden obchodní den reprezentovaný posunutím řádku o hodnotu jedna, pak provedu jednotlivé výpočty. Protože mám pro každý jednotlivý den každého cyklu k dispozici načtenou hodnotu proměnné VstupniDatum, VstupniCena, VystupniCena a pevně načtenou hodnotu PocetAkcii a Poplatky, mohu chtít vypočítat pro každý den takto popsané výpočty jednoduchými texty – Datum vstupu, Vstupní Cena, Výstupní cena, Výnos investice bez poplatků, Výnos investice s poplatky a Investice s poplatky celkem a tyto textové hodnoty pak přenést na list „Backtest“ mého excelovského sešitu jako hlavičku jednoduchého formuláře výsledku analýzy vepsáním textových názvů „natvrdo“ do konkrétních buněk sloupců, kde se mi budou načítat výsledky analýzy na staženém pětiletém vzorku dat. Mohu tak učinit takto: 

   Přidáním řádků skriptu s vložením textu do buněk „natvrdo“ jsem již popisoval v minulém článku, za povšimnutí pak stojí pouze směrování do buněk nadefinovaného a nastaveného listu „Backtest“ v úvodu skriptu pomocí předpony BacktestSheet.Cells. Spuštěním makra mohu pozorovat vyplnění textem na listu „Backtest“ tímto požadovaným způsobem podle nově napsaných řádků skriptu.     

   Nezbývá než zaplnit tento připravený přehled daty do jednotlivých nadepsaných sloupců. Je to nyní to samé, jako v minulém článku, kdy jsem si nechával připravený formulář naplnit daty z mého miniportfolia Goldman Sachs, nyní však mám tato data načítána z jednotlivých cyklů, tedy dílčích výpočtů za každý den fiktivního intradenního obchodu a tyto výpočty budou přenášeny na jiný list mého sešitu. Každý dílčí výpočet cyklu pak pro každou proměnnou pro datumy a ceny akcií bude znamenat načtení jiné hodnoty podle řádků mého staženého souboru. Vše probíhá tak rychle, jak rychlý je můj počítač a pokud bych byl fotbalový rozhodčí, tak nejenže nejsem schopen vnímat, jestli jsem Hugo, Pepa, Jarda nebo nevím kdo, ale už vůbec nejsem schopen postřehnout, co jsou tato jména vlastně zač. Jednotlivé početní úkony jsou pak na tomto obrázku

   Nasměrování výpočtu do buněk listu „Backtest“ pomocí BacktestSheet.Cells. způsobí, že se mi jednotlivé hodnoty budou objevovat v tomto listu. Zvolil jsem opět způsob určení pomocí Cells s využitím proměnné AktualniRadek, takže se mi jednotlivé vypočítané a dosazované hodnoty zapisují do stejného řádku jednotlivých sloupců na listu „Backtest“, který je platný pro aktuální cyklus s označením sloupců tak, kam jednotlivý výpočet na tomto listu patří (1). Před ukončením makra jsem použil skript pro vytvoření upozorňovacího okna, že testování skončilo, abych měl jistotu, že všechny procedury proběhly (instrukce MsgBox) (2). Nebudu již nyní popisovat jednotlivé řádky výpočtu, jejich význam by měl být nyní již jasný. Takto sepsané a spuštěné makro pak provede 1262 cyklů, které zapíše do řádků na listu Backtest a oznámí, vyskočeným oknem, že je „Konec Backtestu !!!“   

   Mohu pak na řádku listu „Backtest“ označeném červeným obdélníkem vysledovat, že jsem například dne 16.7.2015 vstoupil do obchodu na Open obchodního dne za cenu akcie GS na úrovni 211.39 USD a vystoupil téhož dne za cenu 211.18 USD. Pro sto akcií, které mám navoleny jako proměnnou PocetAkcii to znamená ztrátu -21 USD a s dvoudolarovými poplatky činí ztráta -23 USD. Předcházející naakumulovanou ztrátu z předchozích řádků ve výši -144 USD bych tak tímto obchodem navýšil na částku -167 USD. Mohu si pak takovou jednoduchou analýzu vyhodnotit, abych zjistil, že takové intradenní nakupování 100 akcií po dobu pěti let by s poplatky vedlo opravdu k 1262 transakcím a jejich výsledkem by byl celkem slušný prodělek ve výši -8.073 USD.

   Vytvořené makro ještě doplním instrukcí pro mazání vytvořeného přehledu na listu „Backtest“, abych případné další opakované testování prováděl se zápisy na čistý list „Backtest“.     

   Proceduru mazání umístím před skriptem spouštějícím proceduru cyklu.    


   Jednoduché využití cyklické funkce mi umožnilo podrobit testování velmi jednoduchého obchodu na pětiletém vzorku dat. Mohl bych si nyní říct, „..no a co?“, vždyť toto svede klasický excel se svými funkcemi také a měl bych samozřejmě pravdu. Co když ale budu mít data za třicet pět let zpět, budu chtít vybírat nejen intradenní obchody, ale například dvoudenní obchody, třídenní, pětidenní obchody…atd., mohu také nakonec sledovat, jak by se mi dařilo, kdybych se rozhodl takto obchodovat jenom v třídenních intervalech a v žádném případě bych nikdy nechtěl vstupovat do obchodu v pondělí…, také testování nějaké strategie na desetiminutových datech za období třeba pět let zpět je již pomocí Excelu mírně nekomfortní …, o dalších vylepšeních v dalším článku :c)   

   Sešit s makrem je pak možné k prozkoumání kódu stáhnou zde. Při otevření musíte potvrdit volbu „Povolit makra“.

  Komentáře a příspěvky k tomuto článku prosím směrujte do Diskuzního fóra do tohoto vlákna k tomuto článku nebo do obecnější diskuze o Excelu :c) 

 

Sleduj facebook, napiš e-mail nebo tweet

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *