Vyhledávání v článcích

Tip na knihu


Jak na...

Bezplatné ebooky

Finančníkovy vychytávky: automatické stahování dat přes SierraChart


Některé drobnosti dokáží v tradingu ušetřit spoustu práce a peněz. Často jde o velmi jednoduchá řešení, které jen člověka nemusí napadnout. V dnešním článku ukáži své řešení na automatické externí ovládání programu SierraChart (SC) – v mém případě pro stahování dat.

Řada obchodníků na Finančníkovi používá program SierraChart pro intradenní obchodování. Ovšem SC může dobře posloužit i pro další účely – například jako zdroj dat, která jsou s programem dodávána (jde prakticky o všechny futures a akcie, nově i opce a řadu mimo burzovních produktů). Data tak lze stahovat automaticky do databáze nebo pro účely různých analýz. Já takto například zpracovávám na serveru kvalitní ticková data akciových indexů a řešil jsem, jak si zajistit jejich automatické stahování.

Jedno řešení se nabízí okamžitě. Grafy patřičných trhů si lze nadefinovat do „Chartbooks“ a následně je nastavit jako ty, které se budou otevírat automaticky při spuštění programu (General Settings > Files To Open On Startup).

Jenže toto řešení není úplně flexibilní. Například proto, že musíme ručně neustále konfigurovat kontraktní měsíce, které se průběžně mění. Sám jsem celou funkcionalitu nakonec vyřešil přes velmi jednoduchý skript v bezplatném Pythonu:

1) Automatické spouštění a ukončování SierraChart ovládám pomocí standardní knihovny subprocess: Spuštění programu pak vypadá například takto:

P=subprocess.Popen("C:SierraChartSierraChart.exe")

A později mohu konkrétní otevřenou instanci zavřít pomocí:

p.terminate()

Skript mám napojený na plánovač úloh ve Windows, a podle potřeb tak mohu spouštět a zavírat SierraChart.

2) Otevírání grafu v SierraChart lze velmi snadno ovládat přes UDP protokol. A to tak snadno, že jsem to zvládl i já, neprogramátor.

SierraChart má UDP standardně na IP adrese 127.0.0.1 a portu 22903.
Na tento port pak stačí poslat specifikaci konkrétního trhu, který se v SC otevře a stáhnou se příslušná data. Tedy například „YMU17.scid“

V Pythonu je to otázkou dvou řádků s použitím modulu socket:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(“YMU17.scid”.encode(), ("127.0.0.1", 22903))

3. Aby vše běželo úplně automaticky, stačí si vytvořit funkci pro automatické generování kontraktního měsíce podle zvoleného data. V indexech probíhá rolování v měsících březen, červen, září a prosinec. Sám roluji začátkem 3. týdne, a funkce tak může mít následující podobu:

import calendar
import numpy as np
                  
calendar.setfirstweekday(calendar.MONDAY)
                                          
def get_week_of_month(year, month, day):  
    x = np.array(calendar.monthcalendar(year, month))
    week_of_month = np.where(x==day)[0][0] + 1
    return(week_of_month)     
def get_contract(symbol, year, month, day):
    exp={1:"H",2:"H",3:"H",4:"M",5:"M",6:"M",7:"U",8:"U",9:"U",10:"Z",11:"Z",12:"Z"} 
    if month in [1,2,4,5,7,8,10,11]: return symbol+exp[month]+""+str(year)[2:]
    if month in [3,6,9,12]:      
        if get_week_of_month(year, month, day)>=3:   
            if month==12:                                 
                return symbol + exp[1] + "" + str(year + 1)[2:] 
            else:                        
                return symbol + exp[month+1] + "" + str(year)[2:] 
                        
        else:         
            return symbol+exp[month]+""+str(year)[2:]  

To už je trochu komplikovanější kód, ale opět velmi jednoduchý – nejprve zjišťuji pořadí aktuálního týdne v měsíci a podle logiky rolování mi systém vrací expirační měsíc.

Volám například funkcí get_contract(“YM”, 2017, 9, 1) a výsledkem je YMU17. Zkušenější programátoři navíc jistě dokáží kód napsat lépe a efektivněji.

Sám mám výše uvedené spojené se stahováním různých trhů a ukládáním do databáze.

Pokud si již program SierraChart platíte pro jiné využití (intradenní obchodování), pak výše uvedený postup může představovat velmi efektivní způsob, jak jednoduše dostávat data do dalších nástrojů používaných pro trading (databáze, různé analyzátory atd.).


Petr

(publikováno 04.09.2017, editovat ) Vytisknout tento článek

Klíčová slova použitá v článku:
Sierra, obchodní systém, futures

Finančník.cz je místo, kde už od roku 2004:

  • Autoři webu a zkušení tradeři Petr a Tomáš předávají své know-how.
  • Autoři webu Petr a Tomáš přinášejí kompletní vzdělání v tradingu.
  • Naleznete nejkomplexnější informace o tradingu v českém jazyce.
  • Získáte profesionální tipy a rady, plynoucí z reálných zkušeností z trhů.
  • Najdete inspiraci a motivaci k novému životnímu stylu tradera.
  • 2x týdně naleznete nový článek věnovaný úspěšnému tradingu.

Upozornění: Všechny informace poskytované na Financnik.cz jsou určeny výhradně ke studijním účelům témat týkajících se obchodování na burze a neslouží v žádném případě coby konkrétní investiční či obchodní doporučení. Provozovatel serveru ani jednotliví autoři nejsou registrovanými brokery či investičním poradcem ani makléřem. Jsou-li na stránkách zmiňovány konkrétní finanční produkty, komodity, akcie, forex či opce, vždy a pouze za účelem studia obchodování na burze. Vydavatel serveru není zodpovědný za konkrétní rozhodnutí jednotlivých uživatelů.

Burzovní obchodování a investování s finančními instrumenty (a komoditami obzvláště) je vysoce rizikové. Rozhodnutí obchodovat komodity a akcie je odpovědností každého jednotlivce a jedině on sám nese za svá rozhodnutí plnou odpovědnost. Nikdy se nepouštějte do obchodů, jejichž podstatě plně nerozumíte. Pamatujte, že burza má svá pravidla, kterým je třeba porozumět, než začnu riskovat své vlastní peníze!

Tento web používá k poskytování služeb a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte.
Copyright 2016 © Financnik.cz - Developed by BlueCube.cz
Server Financnik.cz vydává a všechny služby provozuje Centrum finančního vzdělávání, s.r.o.
Všechny články zde uveřejněné podléhají autorskému zákonu a jejich kopírování pouze se souhlasem autora.