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

Čerpací stanice mění značení pohonných hmot. Ceny zůstávají stejné

Ilustrativní obrázek

DAX dnes uzavřel v negativním teritoriu se všemi společnostmi ve ztrátě

Ilustrativní obrázek

SOVA ověřila počet „stáčíren“ nabízejících služby na internetu, je jich několik desítek

Ilustrativní obrázek

Pražská burza byla ve středu „ostrovem klidu“

Ilustrativní obrázek

Blockchainbude do 10 let běžnou součástí bankovnictví, mimo jiné i sníží náklady

Ilustrativní obrázek

Constellation Brands a Canopy Growth oznamují rozšíření strategického partnerství



Čti více
Ilustrativní obrázek

Společnost Fidelity Investments významně zvýšila podíl v GE

Ilustrativní obrázek

Berkshire zvýšila v Q2 podíly v Apple, US Bank, Teva, BNY Mellon a Delta

Ilustrativní obrázek

KB: Avast (Koupit, 12m = 342 GBp) - První polovina roku bude ve znamení poakvizičního růstu

Ilustrativní obrázek

Akciový výhled. Sedm poklesů v řadě by mohl být konečnou

Ilustrativní obrázek

Vybrané body z dnešního konferenčního hovoru s managementem Kofoly

Ilustrativní obrázek

Home Depot reportoval výsledky za 2Q FY18, výsledky překonaly očekávání

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.