přitom tohle by měla být základní funkčnost - dostat se co nejrychleji k aktuální backtestu a mít možnost porovnat chování strategie na DEMO nebo REAL účtu
Zadání:
- nahraju do SQ všechny svoje strategie a chci je přetestovat na aktuální data, která mám stažená v data manageru. Kliknu retest a SQ to za mě udělá a já si jen soubory uložím
- pokud mám strategie s různým nastavením, tak to SQ pozná a klikne za mě automaticky "aplikovat nastavení strategie"
Mám 1000 různých finálních strategií (jiné trhy, jiné TF, jiná nastavení SL/PT, něco s výstupem v pátek, něco s omezením do časového okna, atd.). Potřebuju rychlej backtest, což umíme, ale pokud mám u každé strategie jiné nastavení, tak jsem v koncích a musím to dělat po jedné. Takže potřebuju nástroj, který bude jednoduše umět tohle dělat hromadně:
- chci vidět aktuální backtest za celá data. Tady nám stačí jedno tlačítko SPUSŤ, vše ostatní víme a nastavovat třeba není nic. Vše je v SQ4 souboru. Data se nastaví automaticky z data manageru
- chci vidět backtest za nějaké období. potřebuju toto období nastavit, případně ho rozdělit na IS/OOS
- chci vidět jak na strategie bude působit změna času při exit on friday
- chci vidět jak na strategie bude působit omezení do určitého časového pásma
- chci hromadně udělat nějaký MC test pro všechny strategie
- chci přetestovat všechny strategie na 0.01 lotu
- chci přetestovat strategie na jiný kapitál
nejpodstatnější je první odrážka
tyto testy nejdou dělat hromadně
jednu po jedné, z toho zblázníme
takže potřebujeme nějakou fičuru, která to projede za nás a bude simulovat klikání na nastavení strategie a přetestování za aktuální data
jestli jít cestou tasku v custom projectku, nebo z toho udělat nějaký solo modul nechám na zvážení, ale rád bych abychom s tímto začali hýbat
takže základní zadání zní:
- označ adresář, kde jsou uloženy SQ4 soubory se strategiemi
- vezmi všechny strategie včetně podadresářů a proveď aktuální BT podle nastavení strategie - koukni se do data manageru a zadej data OD DO podle něho, tzn. pokud si stáhnu aktuální data, tak mi provede aktuální BT
- ulož SQ4 a STR soubory na stejné místo, kde byla strategie
- takto to projeď celé
1 založím si projekt v custom projetku
2 do databanky Results si přes LOAD nahraju všechny strategie, které chci přetestovat na nejnovější data
3 do taskflow si vyhodím task třeba s názvem "Auto backtester", který zatím nemusí mít ani žádné nastavení, ale bude automaticky dělat to, co musíme ručně - klikat na nastavení strategie a měnit datum testu na datum, které mám aktuálně staženo a provede tedy aktuální BT za poslední stažená data. Prostě se jen koukne do data manageru co má za poslední datum a to automaticky nastaví do testu. Takto projede všechny různé strategie (trhy, TF, nastavení) a provede aktuální BT
4 jako třešnička na dortu by mohl být i taks "Save results" který po provedení aktuálního BT provede uložení do formátu SQX a STR
Tohle by byl velkej krok a moc by nám to pomohlo...
TODO:
1. do Custom projectu pridat novy typ tasku "Automatic retest". Bue mit jenom jedno nastaveni What to retest - vyber zdrojoveho a ciloveho databanku.
Bude to v Custom projektu, ne primo v hlavnim retesteru, protoze je to specialni vec. Ale neni slozite udelat si Custom project s timto jednim taskem.
2. tento task udela to, ze pro kazdou strategii ve zdrojovem databanku nacte jeji posledni nastaveni, upravi jej, aby obsahovali maximalni aktualne dostupny rozsah dat
a pak s timto nastaveni otestuje tu strategii.
Kazda strategie muze mit uplne jine data, trading options, money management, cross checky, atd. retester musi tedy pro kazdou strategii pouzit jeji vlastni nastaveni - jedine, co se zmeni je rozsah dat - jednak v main testu a pak taky ve vsech cross checks.
Bylo by taky dobry pri te zmene rozsahu dat vyresetovat nastavenou OOOS periodu a jako OOS periody pridat ty nove casti dat, aby bylo po retestu videt, jak to obchodovalo na pridanych castech dat.
Priklad:
Strategie byla otestovana od 1.1.2010 do 31.12.2017
Nova data jsou k dispozici od 1.1.2005 do 31.9.2018
Strategie se tedy otestuje na datech 1.1.2005 do 31.9.2018, a nastavi se tam dve OOS periody;
OOS #1: 1.1.2005 - 31.12.2009 - nova data pred
OOS #2: 1.1.2018 - 31.9.2018 - nova data po
3. pokud strategie pouzivala treba nejaka data, ktera byla mezi tim vymazana, tak ta strategie se preskoci a napise se to do logu
2. s návrhem tohoto bodu mám problém z několika důvodů
- do tohoto tasku budou obchodníci pouštět hotové strategie, takže předpokládám, že budou uloženy tak, jak každý bude potřebovat a jediný úkol, který po tomto tasku chceme je přetestovat je na aktuální data
- takže já bych vůbec nešahal do datumu OD, ale řešil pouze datum testu DO. Proč? například zrovna u indexů, kde data začínají rokem 2011 z downloaderu je tento rok nepoužitelný a strategie tak generujeme až od roku 2012. Máme i futures data od roku 1999, ale taky nechávám BT až od roku 2012.
- za mě tedy platí pouze posunout datum testu DO a neřešit ani žádné rozdělení OOS, protože pokud tohle chci dělat jednou za týden, tak se mi OOS bude vždy posouvat jen o týden
- naopak bych chtěl, aby to případné rozhodnutí o tom, kdy má začínat OOS nechal čistě na obchodníkovi, protože to třeba použiju k tomu, že si tím zobrazím datum, kdy byla strategie prohlášena za finální a tímto testem si tak oddělím další OOS jako demo nebo reálné nasazení....
takže OOS určitě neresetovat nebo nenastavovat nějak podle dat, ale nechat čistě tak, jak je uloženo ve strategii
Pozdeji to muzem udelat konfigurovatelnejsi.
Asi to udelame nejak volitelne - v Retesteru bude moznost specifikovat "Use settings from strategy", a k tomu ktere presne settingy (podle nazvu setting tabu) aplikovat ze strategie, a ktere z nastaveni v UI