Tvorba vlastního AOS (6) – Nákupní podmínky a obchodní funkce

11:18 | Mar Ve | Diskuze

V předchozím díle jsme si nadeklarovali a vypočítali několik základních proměnných. Nyní se vrhneme na vlastní specifikaci nákupních podmínek a vložení obchodní funkce.

Ilustrační obrázek
Foto: PIX1861

Zadání tvrdí, že chceme do obchodu vstoupit, jakmile cena poklesne o 1 % a současně se nachází nad úrovní 100denního klouzavého průměru. Obě úrovně jsme si již spočítali, proto je nyní stačí pouze správně zapsat do podmínky za pomoci If-Else, což již umíme. Obecná podoba podmínky je následovná:

 

if(podmínka)

{

      // kód, který se vykoná v případě splnění podmínky

}

else

{

      // kód, který se vykoná v opačném případě

}

 

Nejprve tedy k první části podmínky. Ta bude v našem případě vypadat takto:

 

if(Close[0]<uroven_vstupu && Close[0]>hodnota_MA)

 

V závorce jsou obsaženy 2 podmínky, jež jsou odděleny symboly &&, které slouží jako logická operace and (a).

První podmínka: Close[0] < uroven_vstupu

Porovnává, zdali je uzavírací cena poslední svíčky (Close[0]) menší, než hodnota proměnné uroven_vstupu. Tu již máme spočítanou a nachází se 1 % pod uzavírací cenou předchozí svíčky (dne).

Druhá podmínka: Close[0] > hodnota_MA

Tato podmínka porovnává, jestli je uzavírací cena poslední svíčky nad úrovní proměnné hodnota_MA, která v sobě obsahuje úroveň 100denního klouzavého průměru.

 

V případě platnosti podmínky v závorce (v našem případě dvou podmínek) se vykoná zadaný kód. My chceme, aby v takové situaci proběhl vstup do obchodu, na řadu tak přichází zadání obchodní funkce. Ta se nazývá OrderSend() a její návratová hodnota je identifikátor obchodního pokynu, se kterým lze později dále pracovat. Funkce má opět několik parametrů, tak se na ně pojďme podívat.

Obecná podoba:

int OrderSend(string symbol, int cmd, double volume, double price,

 int slippage, double stoploss, double takeprofit, string comment,

 int magic, datetime expiration, color arrow_color)

 

Parametry:

symbol – identifikuje konkrétní trh/měnový pár. Pokud zadáme Symbol(), bude fungovat na jakémkoliv trhu, kde AOS spustíme.

cmd – typ operace, která bude provedena. Dostupných je 6 typů obchodních příkazů:

OP_BUY = nákup za aktuální tržní cenu

OP_SELL = prodej za aktuální tržní cenu

OP_BUYLIMIT = čekající nákupní pokyn, jež se aktivuje při poklesu ceny k dané hranici

OP_SELLLIMIT = čekající prodejní pokyn, jež se aktivuje při vzestupu ceny k dané hranici

OP_BUYSTOP = čekající nákupní pokyn, jež se aktivuje při vzestupu ceny k dané hranici

OP_SELLSTOP = čekající prodejní pokyn, jež se aktivuje při poklesu ceny k dané hranici

volume – velikost pozice.

price – cena, za kterou chceme provést obchod. Pokud provádíme příkaz za aktuální tržní cenu, zvolíme možnost Ask (pro nákupní příkaz) nebo Bid (pro prodej). U čekajících pokynů lze zadat cenu dle zvolené obchodní strategie.

slippage – maximální povolená odchylka ceny při exekuci pokynu.

stoploss – cenová úroveň pro zastavení ztrát.

takeprofit – cenová úroveň pro realizaci zisku.

comment – komentář k pokynu.

magic – magické číslo. Slouží k identifikaci příkazů, hodí se především při využití více AOS současně.

expiration – datum vypršení platnosti pokynu (pokud se jedná a čekající pokyn).

arrow_color – barva šipky, která se objeví v grafu po otevření pokynu.

 

Náš příkaz tak bude vypadat následovně:

OrderSend(Symbol(),OP_BUY,1,Ask,0,stoploss,takeprofit,NULL,0,0,clrNONE)

 

Tímto příkazem se provede na aplikovaném trhu nákupní pokyn za tržní cenu, o objemu 1 lot. Úrovně stoploss a takeprofit jsem si již spočítali dříve a vložili do proměnných, které zde tedy můžeme použít. Poslední 4 parametry nevyužijeme a necháme je nastavené na defaultních hodnotách.

Jak bylo řečeno výše, funkce vrací hodnotu identifikátoru daného pokynu, kterou si uložíme do proměnné ticket. Nezapomeňte si tak proměnnou ticket (int ticket) nadeklarovat v hlavičce kódu s ostatními proměnnými.

Pokud při exekuci nastane nějaký problém, funkce OrderSend() vrátí hodnotu -1 (která se nám uloží do proměnné ticket). Můžeme si tak ještě další jednoduchou podmínkou pohlídat případné chyby při exekuci. K tomu lze využít funkci GetLastError(), která vrátí hodnotu posledního chyby, která nastala. V podmínce se pouze zeptáme, jestli hodnota uložená v ticketu je rovna -1 a v takovém případě si necháme vypsat chybu. V opačném případě, kdy vše proběhne bez problému, si můžeme nechat vypsat potvrzující komentář, který je v části Else. 

 

Aktuální podoba kódu je tak následovná:

 

Pokud stisknete tlačítko Kompilovat v horní nástrojové liště, tak uvidíte, že editor nehlásí žádné chyby ani varování. Přestože již systém nyní zvládne posoudit vstupní podmínky a provést obchodní pokyn, stále by nefungoval tak, jak potřebujeme. Proč to tak je 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

Intuit vykázala své hospodářské výsledky za třetí čtvrtletí

Ilustrativní obrázek

Technologickou „Nobelovu cenu“ letos získal finský fyzik Tuomo Suntola

Ilustrativní obrázek

Které akcie aktuálně shortují hedge fondy?

Ilustrativní obrázek

Alza po jednodenním výpadku opět vydává objednané zboží

Ilustrativní obrázek

General Electric zvažuje prodej své pojišťovací divize



Čti více
Ilustrativní obrázek

Hewlett Packard Enterprise reportovala své výsledky hospodaření za druhé čtvrtletí

Ilustrativní obrázek

Bulharsko by rádo zavedlo euro, podle Evropské komise však neplní potřebná kritéria

Ilustrativní obrázek

Obchodníci na EUR/CHF by se měli připravit na červnový šok, nabádají forex analytici ING

Ilustrativní obrázek

Česká R2G kupuje First Quality Nonwovens za přibližně 11 miliard korun

Ilustrativní obrázek

Airbus již údajně upravila svou výrobu letadel A350 a A380 podle pravidel Světové obchodní organizace

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.