Novou strategii vytvoříme např. pomocí tlačítek EasyLanguage - New EasyLanguage Document - Strategy viz. obrázek níže.
Otevře se okno ve kterém pojmenujete strategii a můžete k němu dát svůj popis. Vzhledem k tomu, že se všechny strategie ukládají do jednoho adresáře je třeba zvolit strukturu názvů, která zjednoduší hledání strategií. Já používám strukturu _Trh_Instrument_Nazev, např."_Forex_EURUSD_Mers". Podtržítko na začátku způsobí, že všechny moje strategie se objeví na začátku seznamu. Popis je bohužel velmi krátký a vejde se do něj pouze asi 58 znaků, takže je třeba v popisu šetřit místem. Navíc prosím pište bez háčků a čárek, protože TradeStation s nimi má problémy a v některých případech je vůbec nezobrazí. V dolní části pak můžete pomocí volby ,,Select Template" zvolit šablonu, která obsahuje některý z obchodních příkazů. V tomto případě zvolíme ,,(none)", ale určitě ze cvičných důvodů doporučuji jednotlivé šablony vyzkoušet.
A můžeme začít psát strategii. Níže napsaný kód používá standartní strukturu, kterou doporučuji dodržovat a to z toho důvodu, abyste se v něm vyznali nejenom vy, ale případně i další lidé, kterým se dostane do ruky.
1. {} Do složených závorek popište základní myšlenku strategie. Text, zapsaný ve složených závorkách kdekoliv v kódu má charakter popisu, a TradeStation s ním nepracuje. Text může jít i přes několik řádků
2. Inputs: v této části deklarujete vstupní proměnné, které budete chtít v průběhu používání strategie měnit, např. perioda klouzavého průměru, nebo v našem případě počet po sobě rostoucích svíček, po kterých dojde ke vstupu. Navíc, přes kteroukoliv z nich můžete strategii dále optimalizovat.
3. Variable: deklarace proměnných, které bude používat při výpočtech. Pokud nebudete potřebovat využívat vlastní název, můžete použít předdefinovaný Value0 až Value99, bez toho, abyste musely deklarovat proměnné. Jednotlivé deklarované hodnoty v Inputs a Variable musejí splňovat následující pravidla:
1. jednotlivé proměnné musejí být odděleny čárkou ,
2. za poslední hodnotou musí být umístěn středník ;
3. za každou z nich musí být kulatých závorkách () vložena výchozí hodnota např.: DelkaMA(12), Pozice(True), Price(Close)
4. Tělo programu: to již obsahuje samotné text. V dnešním jednoduchém příkladu si ukážeme, vstup do dlouhé pozice, pokud bude několik svíček za sebou mít vyšší Low než svíčka předchozí, tedy pokud Low předchozí svíčky bude nižší než Low současné svíčky 3x za sebou, vstoupíme do dlouhé pozice. Aby se vše zobrazilo správně, musel jsem kód vložit jako obrázek.
Několik poznámek k výše zobrazenému textu:
- Vše co je umístěno na řádku za dvěma lomítky // je bráno jako popis a TS s ním nepracuje
- Pro jednodušší orientaci jsou používány následující barvy:
o černá - proměnné a operátory
o zelená - poznámky, a slova se kterými TS nepracuje
o modrá - klíčová slova EasyLanguage, musíte je znát a nesmíte je použít jako proměnné
o tyrkysová - textové řetězce, které se např. budou zobrazovat v grafu
o fialová - EasyLanguage funkce, např. Xaverage - exponenciální klouzavý průměr
- Tick EasyLanguage nezná, ale můžeme jej jednoduše vytvořit pomocí minMove a priceScale
- SetStopLoss je odeslán v okamžiku realizace vstupu a nečeká se, na rozdíl od ostatních výstupních kritérií, až na dokončení svíčky. Pokud chcete StopLoss svázat se vstupní svíčkou, můžete to učinit např. navrženým způsobem
- SetExitOnClose - je používán pouze pro backtest. Pozor, pokud byste jej uvedli jako výstup v běžící strategii, dojde k výstupu až na následujícím Open!
Při použití strategie jako výstup použijte např. standartní strategii ,,ProfitTarget". Po vložení strategie můžete provést v okně format modifikaci tak, že nebude pracovat s Low, ale nap. Open, a ne se 3-mi, ale např. 5-ti svíčkami.
Tak to je pro dnešek vše. Budu rád, pokud mi na můj profil (soukromá zpráva) napíšete, jak se vám tento článek v blogu líbil, co je třeba vysvětlit lépe a jaké téma si mám pro EasyLanguage zvolit příště.