Jak si usnadnit ruční backtest v MT4

Napsal:   Sekce: Backtesting

Dlouho jsem přemýšlel jaké bych si mohl zvolit téma pro můj druhý blog. Nyní se zrovna chystám na nějaké backtesty a tak jsem se rozhodl to skloubit dohromady. A aby toho nebylo málo, tak ten blog bude ještě o tom, jak si backtestovací EA naprogramuji. Co součástí blogu naopak nebude, tak žádná konkrétní strategie.

Na platformě MT4 se mi líbí, že se dá spustit backtest a zároveň můžu sledovat online, jak AOS otevírá jednotlivé pozice. A přesně toto se dá využít i při ručním backtestování. Jen to chce v testeru spustit EA, kterému za běhu sdělím, kdy a jak má otevřít obchod. Zkoušel jsem vykreslit tlačítka do grafu, která by měla tuto funkci, ale během backtestu nefunguje volání metody OnChartEvent. Touto cestou to tedy nevede. Další varianta je vykreslit horizontální linku do grafu, kterou si pak EA už přebere. Výhodou tohoto backtestu bude, že výsledek bude obsahovat všechny ty vychytávky, co backtester v MT4 dělá. Kdo by hledal na internetu, tak jistě takovýto obdobný nástroj najde. Ale kdybych si ho nenapsal sám, tak tady nebudu mít o čem psát Smile.

Tak tedy, než se pustím do samotného backtestování, tak si budu muset naprogramovat onen vytoužený nástroj, který mi backtesty usnadní. Pravděpodobně tento nástroj sám užívat stejně nebudu, protože budu backtesty dělat v cTraderu, ale třeba to někomu tady pomůže.

Jak jsem již psal, EA se bude ovládat pomocí horizontálních linek, které pojmenuju podle toho, co od ní čekám. Pro jednoduchost budu mít otevřený vždy jen jeden pokyn. Ovládání tak bude mnohem jednodušší, než kdybych otevíral více obchodů současně. Otevřít půjdou, ale abych jim nastavil SL a TP, jak bych se musel nějak třídit. A taky by se to špatně ovládalo.

Co do ovládání, tak moje představa je taková, že vložím horizontální linku do grafu. Zobrazím si vlastnosti linky a přejmenuju její název na nějaké klíčové slovo, na které bude EA reagovat a následně linku z grafu vymaže. Klíčová slova si definuji takto:

buy – nákup za market

sell – prodej za market

pbuy – (pendidng buy) čekající pokyn pro nákup (EA si vybere sám, jestli to bude STOP, nebo LIMIT)

psell – (pending sell) čekající pokyn pro prodej (EA si vybere sám, jestli to bude STOP, nebo LIMIT)

tp – na této ceně se nastaví TP

sl – na této ceně se nastaví SL

Vytvořím si tedy v MetaEditoru EA, které příhodně pojmenuji Backtester J. Při otevření pokynu potřebuji zadat velikost pozice – vytvořím si proto globální externí proměnnou s výchozí hodnotou třeba 0.01 lotu:

extern double TradeVolume = 0.01;

Nyní se můžeme vrhnout na metodu OnTick, která se volá – dle svého názvu – při každém novém ticku. Můžu použít detekci horizontální linky pomocí ObjectFind, nebo můžu použít smyčku, kde v každém ticku projdu všechny objekty a ověřím jejich název. Zvolím si tu druhou (složitější) variantu, protože pokud se rozhodu dále EA rozšiřovat pro práci s více obchody, musel bych to předělávat. Nyní si tedy snadním následnou možnou rozšiřitelnost. Začnu tedy smyčkou, která bud detekovat linky s názvem buy, sell, pbuy a psell a následně na ně reagovat.

for( int oindex = 0; oindex <= ObjectsTotal(); oindex++ )

{

string oname = ObjectName( oindex );

if( ObjectType( oname ) != OBJ_HLINE )

continue;

if( oname == "buy" )

{

if( OrderSend( Symbol(), OP_BUY, TradeVolume, Ask, 0, 0, 0 ) == -1 )

Alert( "Nepodařilo se zadat příkaz. Error: " + IntegerToString( GetLastError() ) );

ObjectDelete( oname );

}

if( oname == "sell" )

{

if( OrderSend( Symbol(), OP_SELL, TradeVolume, Bid, 0, 0, 0 ) == -1 )

Alert( "Nepodařilo se zadat příkaz. Error: " + IntegerToString( GetLastError() ) );

ObjectDelete( oname );

}

if( oname == "pbuy" )

{

double price = NormalizeDouble( ObjectGet( oname, OBJPROP_PRICE1 ), Digits() );

if( price > Ask )

{

if( OrderSend( Symbol(), OP_BUYSTOP, TradeVolume, price, 0, 0, 0 ) == -1 )

Alert( "Nepodařilo se zadat příkaz. Error: " + IntegerToString( GetLastError() ) );

}

else

{

if( OrderSend( Symbol(), OP_BUYLIMIT, TradeVolume, price, 0, 0, 0 ) == -1 )

Alert( "Nepodařilo se zadat příkaz. Error: " + IntegerToString( GetLastError() ) );

}

ObjectDelete( oname );

}

if( oname == "psell" )

{

double price = NormalizeDouble( ObjectGet( oname, OBJPROP_PRICE1 ), Digits() );

if( price < Bid )

{

if( OrderSend( Symbol(), OP_SELLSTOP, TradeVolume, NormalizeDouble( ObjectGet( oname, OBJPROP_PRICE1 ), Digits() ), 0, 0, 0 ) == -1 )

Alert( "Nepodařilo se zadat příkaz. Error: " + IntegerToString( GetLastError() ) );

}

else

{

if( OrderSend( Symbol(), OP_SELLLIMIT, TradeVolume, NormalizeDouble( ObjectGet( oname, OBJPROP_PRICE1 ), Digits() ), 0, 0, 0 ) == -1 )

Alert( "Nepodařilo se zadat příkaz. Error: " + IntegerToString( GetLastError() ) );

}

ObjectDelete( oname );

}

}

 

Dále potřebuji zjistit, jestli již je zadaný nějaký příkaz. Pokud ano, tak musím zjistit jeho ticket. Až budu vědět, že je otevřený obchod a budu znát jeho ticket, tak můžu ověřit jestli existuje linka, která nastaví jeho TP, nebo SL. Pro zjištění existence obchodu a jeho ticketu použiji metodu GetTicket(), kterou si vytvořím nakonec. Tato metoda mi po zavolání vrátí číslo ticketu otevřené pozice (int).

int ticket = GetTicket();

if( !OrderSelect( ticket, SELECT_BY_TICKET ) )

return;

if( ticket > 0 )

{

for( int oindex = 0; oindex <= ObjectsTotal(); oindex++ )

{

string oname = ObjectName( oindex );

if(ObjectType( oname ) != OBJ_HLINE )

continue;

if( oname == "tp" )

{

if( !OrderModify( OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble( ObjectGet( oname, OBJPROP_PRICE1 ), Digits() ), OrderExpiration() ) )

Alert( "Nepodařilo se upravit. Error: " + IntegerToString( GetLastError() ) );

ObjectDelete( oname );

}

if( oname == "sl" )

{

if( !OrderModify( OrderTicket(), OrderOpenPrice(), NormalizeDouble( ObjectGet( oname, OBJPROP_PRICE1 ), Digits() ), OrderTakeProfit(), OrderExpiration() ) )

Alert( "Nepodařilo se upravit. Error: " + IntegerToString( GetLastError() ) );

ObjectDelete( oname );

}

}

}

Tímto bych metodu OnTick() ukončil. Nakonec ještě musím doprogramovat GetTicket(), která mi vrátí číslo ticketu a zapíše do té proměnné ticket. Mám na to svou oblíbenou smyčku, kterou vždy jen dle potřeby trochu upravím. Například aby mi hledala pouze BUY a SELL obchody a nehledala čekačky atd… Základem je podmínka, která filtruje symbol. Zde – u EA které poběží jen v backtestech to není nutné, ale pokud bych tuto smyčku použil u AOSu, tak je nutné filtrovat, aby ignoroval obchody na ostatních instrumentech, než na kterém běží AOS. Další věc, kterou je dobré u AOSů filtrovat (v této smyčce ale není) je magic number. Hodí se to například, pokud mi na instrumentu EURUSD pojedou 2 AOSy, tak aby si rozpoznaly svoje obchody. Takže metoda GetTicket() bude vypadat nějak takto:

int GetTicket()

{

for( int pos = 0; pos < OrdersTotal(); pos++ )

{

if( OrderSelect( pos, SELECT_BY_POS ) == false )

continue;

if( Symbol() != OrderSymbol() )

continue;

return( OrderTicket() );

}

return(0);

}

Tak a teď kompilovat a máme hotovo! Hurá do backtestu!

Pokud budu již mít zadaný pokyn a u něj nastavený SL a budu jej chtít třeba jen posunout, tak prostě vložím novou linku, kterou pojmenuju „sl“ a pozice se upraví.

Celý soubor je ke stažení zde.

Hodnocení článku:
Sdílení článku:
Facebook

Čtěte více

  • Jak se projeví vyšší sazby Fedu na ceně aktiv?
    16. prosinec 2015 se zapíše do ekonomické historie jako den, kdy americká centrální banka (Fed) ukončila po 9 letech politiku ultra nízkých úrokových sazeb, se kterou bojovala proti recesi způsobenou finanční krizí, a posunula základní úrokovou sazbu z rozmezí 0 - 0,25 procenta do zóny 0,25 – 0,50 procenta.
  • Jak se přizpůsobit volatilitě?
    Nejspíš jste se jako forexový obchodník již setkali se stovkami či tisíci různými obchodními systémy, strategiemi, všemožnými obchodními přístupy a technikami. Forexoví tradeři často zkouší do trhu vstupovat a následně z něj vystupovat bez detailního ověření, že jejich strategie ve zvoleném trhu skutečně funguje. Hlavně pak za současné volatility a struktury celého trhu.
  • Jak se společnost XTB staví k nové regulaci finančních trhů ESMA?
    Necelé dva měsíce zbývají do implementace většiny pravidel nové celoevropské regulace CFD kontraktů. V Česku je ale zatím ticho po pěšině, jakoby nervozita některých hráčů dokázala přehlušit blížící se realitu. Protože se jedná o jedno z nejzásadnějších omezení finančních trhů, které kdy bylo v Evropě schváleno, tak bychom rádi na toto téma rozproudili diskuzi.
  • Jak se stát obchodníkem by REDY
    Jak sem se dostal k obchodováni,co od toho čekám a co pro to dělám.
  • Jak se stát profesionálním obchodníkem, na kterého regulace ESMA nedosáhne?
    Už v létě začne naplno platit nová regulace finančních trhů ESMA, která výrazně omezuje finanční páku, snižuje maximální přípustné ztráty a například také nařizuje ochranu proti negativnímu zůstatku na obchodním účtu (u XTB dávno splněno).
  • Jak se stát (výdělečným) traderem..??
    Článek ,,jak se stát traderem" je sice poučný a jistě je v něm spousta pravdy ne-li všechno,ale já zamířím kousek do reality.
  • Jak sestavit obchodní strategii
    Obchodování na forexovém trhu je náročnou disciplínou, která se neobejde bez precizní přípravy. Před samotným vstupem na trh musíte věnovat dostatečné množství času přípravám a v předem stanovených časových intervalech pak periodicky provádět vyhodnocení úspěšnosti obchodování.
  • Jak se zbavit střetu zájmů se svým brokerem?
    Více než 95 % intradenních traderů prodělává. Být jejich protistranou musí být extrémně vydělečný byznys. Traderská logika vám zajisté napoví, že protistrana vašich obchodů nechce prodělávat. Jak nastavit vztah mezi vámi a vašim brokerem, aby se odstranil tento střet zájmů?
  • Jak se změní hlasovací struktura Fedu v roce 2017?
    Hlasující bankovní rada americké centrální banky (FOMC) se skládá z 12 členů.
  • Jak se zorientovat v německých volbách?
    Již 24. září se vydají němečtí voliči k volebním urnám. Budou se rozhodovat, zda zvolí do čela státu po čtvrté v řadě stávající kancléřku Angelu Merkelovou a umožní jí jít ve stopách svých předchůdců Helmuta Kohla a Konráda Adenauera, z nichž každý sloužil jako kancléř pět volebních období. Alternativu ztělesňuje opoziční kandidát Martin Schulz, vůdce Sociálnědemokratické strany a bývalý prezident Evropského parlamentu.
  • 9. MQL4 - Moje první strategie (1/2)
    V tomto díle si společně napíšeme vlastní strategii. Začneme nejprve vytvořením knihovny s pomocnými funkcemi pro obchodování.
  • 8 pips
    Dnes mi dorazila zpráva od mého dobrého přítele. Napsal mi v ní: "Tak dneska jsem vydělal jen 8 pips". Trh EUR/USD se dnes do této chvíle pohyboval v rozmezí High a Low asi 80 pips. Nabízí se zde otázka: Je 8 pips profitu za jeden den skutečně tak málo?
  • 8. MQL4 - Tester strategií
    V tomto díle se v rychlosti seznámíme s testerem strategií, který nám pak poslouží k testování a ladění naší strategie.
  • 7. MQL4 - Funkce pro obchodování
    V tomto díle si představíme poslední oblast jazyka MQL4 tak, abychom byli schopni napsat svoji vlastni strategii pro automatizované obchodování a tím jsou funkce pro práci s pokyny.
  • 6. MQL4 - Technické indikátory
    V tomto díle se podíváme funkce, které vracejí data jednotlivých indikátorů.
  • 5 velkých mýtů o obchodování forexu
    Pokud jste ve světě obchodování forexu nováček a hledáte informace, jak vůbec začít, vězte, že v tomto odvětví platí, že je propleteno spoustou balastu a zkreslených informací. Po čas celé své tradingové kariéry se budete neustále zdokonalovat a nejspíš vyhledávat nové informace a rady na internetu.
  • 5 rozdielov v tradingu kryptomien a forexu
    Dnes vám opíšem 5 zásadných rozdielov pri tradingu krypto trhu a forexových mien. Každá je v niečom lepšia a v niečom horšia a idem na tie rozdiely poukázať. Aj keď je tu kryptosvet iba necelých 10 rokov a forex niekoľkonásobne viac, tak popularita týchto trhov je celkom podobná.
  • 5 rozdielov v tradingu kryptomien a akcii
    V dnešnom blogu Vám vysvetlím zásadných 5 rozdielov pri tradingu a akciach. Každé má svoje pro a proti, no jeden trh je regulovaný a druhý nie je a tam začínajú všetky problémy aj príležitosti. Veľa začiatočníkov verí, že kupovanie kryptomeny cez krypto burzu je ako kupovať akcie cez brokera, no pravda je inde.
  • 5 nejsilnějších emocí tradera
    Psychologie obchodování je nedílnou součástí každého z nás. Trhy jsou jakýmsi živým organismem, u kterého se snažíme racionálním přístupem zanalyzovat jeho vývoj, což vytváří rozpor mezi očekáváním a konečným výsledkem.
  • 5. MQL4 - Předdefinované proměnné
    V této kapitole se trochu ponoříme do jazyka MQL4 a představíme si základní proměnné, pomocí kterých můžeme zjišťovat informace o cenách.
  •  


    Diskuse ke článku

    Diskuse je přístupná pouze pro registrované uživatele.
    Přihlásit se | Nová registrace

avatar

Autor:

Vykuk

Hodnocení autora:
| Broker: IC Markets (live) | FX od 2012 |
Bližší informace o autorovi >>
reklama
WS Academy

Kurzy obchodování

říj
20

Profesionálem na forexu - kurz pro pokročilé tradery (Praha)

Seminář Profesionálem na forexu je určený pro absolventy kurzu Juniorská škola tradingu a pro pokročilé forexové tradery. Naučíme vás naše ziskové intradenní a swingové obchodní strategie a posuneme vás k vyšším ziskům. Jedná se o jeden z nejlépe hodnocených seminářů FXstreet.cz a věnujeme se na něm hlavně korelačním strategiím a intermarket analýze. Sleva: Absolventi semináře Juniorská škola tradingu mají tento seminář za 4 400,-Kč.


Lis
10

Juniorská škola tradingu - Forex I-II (Brno)

Juniorská škola tradingu - Forex I-II je určena pro začínající tradery. Pokud chcete vyzkoušet něco nového, vymanit se z davu a být úspěšný v obchodování na finančních trzích, tak je tento seminář určen právě vám.

Lis
24

Nový seminář: Psychologie tradingu a profesionální Money-Management

Zcela nový seminář z dílny FXstreet.cz a tentokrát se zaměřením na psychologii obchodování a money-management. A právě toto téma je naprosto nejdůležitější a současně bohužel nejvíce podceňované a opomíjené téma většiny obchodníků. Tento seminář tak doplňuje naše ostatní kurzy, které se zaměřují spíše na technickou stránku tradingu. Úspěch tradera záleží hlavně na jeho psychice a přístupu k obchodování. Přijďte se naučit ty nejsilnější nástroje, tipy a rady, které vám k úspěchu pomohou. Tento unikátní seminář zcela jistě změní váš přístup k tradingu a tím také vaše celkové výsledky. Seminářem vás budou provázet úspěšní tradeři Ondřej Hartman a Jakub Hodan.

Pro
1

Praktický workshop technické analýzy + profi obchodní systémy na FOREXu

FXstreet.cz představuje unikátní seminář s hostem - Patrikem Urbanem, který působil jako profesionální trader na Wall Streetu. Praktické použití technické analýzy, Price Action a obchodní systémy ziskových traderů. Kromě Patrika Urbana na semináři jako host vystoupí také full-time trader Jakub Hodan.

Literatura

titulka_smallsize.jpg

Novinka! Kniha "Jak se stát forexovým obchodníkem" Ondřeje Hartmana vychází ve druhém a výrazně rozšířeném vydání!

Kniha vychází již ve druhém, ale tentokrát výrazně upraveném a rozšířeném vydání. Kniha je koncipována tak, aby byla užitečným průvodcem jak začínajícím obchodníkům bez zkušeností, tak i těm, kdo na forexu již obchodují a potřebují si prohloubit své znalosti.

Day_Trading_obalka_78x110.jpg

Kniha "FOREX – Ziskové intradenní a swingové obchodní strategie" od Kathy Lien vychází v češtině!

Je nám velikou ctí, že můžeme obohatit český a slovenský forexový trh světově uznávanou knihou číslo 1 pro každého, kdo chce do hloubky pochopit fungování největšího světového finančního trhu.

C:\fakepath\kathy-lien-08112017.jpg

Světový bestseller o tradingu v češtině! Úspěšní obchodníci: Jak běžní lidé porážejí Wall Street v jeho vlastní hře

Jedna z nejprodávanějších knih od Kathy Lien právě vychází v českém překladu! Obsahuje sérii rozhovorů Kathy Lien s nejúspěšnějšími tradery. Tato kniha se stala inspirací pro tisíce čtenářů po celém světě. Setkáte se v ní s příběhy obyčejných lidí, kteří dokázali zbohatnout díky systematickému dodržování konkrétních pravidel v tradingu. Bez ohledu na jejich povolání jsou dnes úspěšnými obchodníky a investory. V této knize vám budou představeny jejich obchodní přístupy a strategie, které vám pomohou pochopit, jak lze pomocí vlastní píle dosáhnout úspěchu ve zdánlivě složitém světě tradingu.

Forex - doporučené články:

Co je FOREX?
Základní informace o finančním trhu FOREX. Forex je obchodování s cizími měnami (forex trading) a je zároveň největším a také nejlikvidnějším finančním trhem na světě.
Forex pro začátečníky
Forex je celosvětová burzovní síť, v jejímž rámci se obchoduje se všemi světovými měnami, včetně české koruny. Na forexu obchodují banky, fondy, pojišťovny, brokeři a podobné instituce, ale také jednotlivci, je otevřený všem.
1. část - Co to vlastně forex je?
FOREX = International Interbank FOReign EXchange. Mezinárodní devizový trh - jednoduše obchodování s cizími měnami - obchodování se směnnými kurzy.
VIP zóna - Forex Asistent
Nabízíme vám jedinečnou příležitost stát se součástí týmu elitních obchodníků FXstreet.cz. Ve spolupráci s předními úspěšnými obchodníky jsme pro vás připravili unikátní VIP skupinu, až doposud využívanou pouze několika profesionálními tradery, a k tomu i exkluzivní Price Action VIP indikátor, doposud úspěšně používaný pouze k soukromým účelům. Nyní se vám otevírá možnost stát se součástí této VIP skupiny, díky které získáte jedinečné know-how pro obchodování na forexu, výjimečný Price Action VIP indikátor, a tím také náskok před drtivou většinou ostatních účastníků trhu.
Forex brokeři - jak správně vybrat
V podstatě každého, kdo by chtěl obchodovat forex, čeká jednou rozhodování o tom, s jakým brokerem (přeloženo jako makléř/broker nebo zprostředkovatel) by chtěl mít co do činění a svěřil mu své finance určené k obchodování. Velmi rád bych vám přiblížil problematiku výběru brokera, rozdíl mezi jednotlivými typy brokerů a v neposlední řadě uvedu několik příkladů nejznámějších z nich.
Forex robot (AOS): Automatický obchodní systém
Snem některých obchodníků je obchodovat bez nutnosti jakéhokoliv zásahu do obchodu. Je to pouhá fikce nebo reálná záležitost? Kolik z nás věří, že "roboti" mohou profitabilně obchodovat? Na jakých principech fungují?
Forex volatilita
Forex volatilita, co je volatilita? Velmi užitečným nástrojem je ukazatel volatility na forexu. Grafy v této sekci ukazují volatilitu vybraného měnových párů v průběhu aktuální obchodní seance.
Forex zůstává největším trhem na světě
V dnešním článku se podíváme na nejnovější statistiky globálního obchodování na forexu. Banka pro mezinárodní vyrovnání plateb (BIS) totiž před pár týdny zveřejnila svůj pravidelný tříletý přehled, ve kterém detailně analyzuje vývoj na měnovém trhu. BIS je označována jako "centrální banka centrálních bank". Je nejstarší mezinárodní finanční organizací a hraje klíčovou roli při spolupráci centrálních bank a dalších institucí z finančního sektoru. Dnešní vzdělávací článek sice nebude zcela zaměřen na praktické informace z pohledu běžného tradera, ale i přesto přinese zajímavé a důležité poznatky.

Nejnovější články:


Naposledy čtené:


FXstreet.cz - forex, komodity, kryptoměny, trading, zpravodajství

Nezávislý investiční server zaměřený na forex, komodity, kryptoměny, trading a zpravodajství. Vzdělávací články, cenové grafy, cizí měny, semináře, ekonomické a forex zprávy.
reklama
Swissquote Bank
reklama
ETX Capital
reklama
ETX Capital
reklama
BOSSA ebook