Jump to content
Co nového? Mé kurzy
Komunita:
Diskuze Sledované příspěvky Žebříčky
  1. Otevřená sekce

    1. 43
      43 příspěvků
  2. Uzavřené diskuze pro absolventy kurzů Finančníka

    1. TechLab

      Pracovní skupina poskytovaná tradery pro tradery. Naleznete v ní odpovědi na své technické otázky týkající se programů Amibroker, Python, InteractiveBrokers TWS a TradeStation Global.

      8k
      8k příspěvků
      • 4fx
    2. Trading Room

      Diskuzní skupina v rámci Trading Roomu.

      1,9k
      1,9k příspěvků
      • petr
    3. 422
      422 příspěvků
      • petr
    4. Základy práce s programem Amibroker

      Uzavřená diskuze pro účastníky online kurzu Základy práce s programem Amibroker.

      189
      189 příspěvků
      • petr
    5. FIMS A–Z: Profesionální daytrading orderflow

      Diskuze o intradenním obchodování v rámci informací prezentovaných v kurzu FIMS A–Z: Profesionální daytrading orderflow.

      29,3k
      29,3k příspěvků
      • Jack
  3. Archiv původních anonymních diskuzích

    1. 201,1k
      201,1k příspěvků
  • Statistiky uživatelů

    31 444
    Celkem uživatelů
    467
    Nejvíce online
    knoflicekjan
    Nejnovější uživatel
    knoflicekjan
    Registrace
  • Všechny poslední příspěvky

    • Ale tímto způsobem byl právě například včera problém se zlatem - MGC. Interactive brokers ho listovala jako hlavní kontrakt, ale už se nedal obchodovat.
    • Zdravím, já si stahuji FUT kontrakt přes reqContractDetails a poté seřadím kontrakty podle expirace a vyberu akutální. Kód jsem si upravil takto: def qualify_cont_futures_contract(self,exchange,secType,symbol,currency): """Vrátí seznam dostupných futures kontraktů pro daný ticker, seřazených podle expirace.""" if secType != 'FUT': raise ValueError(f"Neznámý typ kontraktu: {secType}") contract = Future(symbol=symbol, exchange=exchange, currency=currency) aktualni_kontrakt = self.ib.reqContractDetails(contract ) if not aktualni_kontrakt: print(f"Nenalezeny žádné futures kontrakty pro {symbol} na {exchange}") return None # Seřazení kontraktů podle expirace sorted_contracts = sorted(aktualni_kontrakt, key=lambda x: x.contract.lastTradeDateOrContractMonth) multiplier = float(sorted_contracts[0].contract.multiplier) if sorted_contracts[0].contract.multiplier else None # 1.0 tick_size = float(sorted_contracts[0].minTick) if sorted_contracts[0].minTick else None # 0.01 tick_value = multiplier * tick_size # print(f"multiplier: {multiplier} , tick_size: {tick_size}") return sorted_contracts, tick_size, tick_value  
    • Dobrý den, nastavené to máte správně, připojit PT by měl parametr ProfitTaker s hodnotou True. Otestuji s uvedenou konfigurací co se stalo. B.
    • Dobrý den, to vypadá, že chybí v podsložce functions skript database.py, ten případně stáhnete z vlákna Generátoru z úvodního příspěvku. B.
    • Ano - viz https://www.financnik.cz/forum/topic/5287-interactive-brokers/page/8/#findComment-322633 a zmiňovaný sloupec Key  
    • Je vlastne nejak poznat v platforme, ze zadane prikazy patri k sobe? Tedy, ze BUY a SELL patri k sobe. A sell je az na PT. Ales
    • Dobry den.To jsem udelal. Dole na potrfoliu je videt ze GEV mam nakoupeno 9, RPRX mam -94. Normalne jsem si stahnul Basket z dashboardu, otevrel v platforme a pak jednotlive dal Transfer. Nevim, co se stalo. Je mozne, ze kdyz je posilam jednotlive, ze by se zadaly jako jednotlive prikazy BUY a SELL a ne jako BUY a spojeny PT? Budu to sledovat, jestli se mi to nahodou stane znovu. Diky. Ales
    • Zdravím, potreboval by som poradiť. Snažím sa naimportovať príslušné 5-minute futures data z tradingroomu do TS. Zip súbor som si stiahol a nasladne upravil data tak aby ich TS mohol načítať. Pre príklad dám @ES-5min-UTC. Csv súbor som upravil a nahral od začiatku až po koniec do TS cez 3rd party možnosť a takto mi to vyzeralo: Potom som skúsil nahrať iba prvý mesiac, to už nahralo 5 minutové data tak že sa dali čítať ako normálne sviečky, ale ked som si ich porovnával s online dátami z TS  boli z časti odlišné. Pátral som ďalej a zistil som že dáta do TS nahrávam vo formáte "Date","Time",Open,High,Low,"Close","Volume" tak ako ich petr zdielal. Keď som si skúšal exportovať a hneď importovať tradestation data boli vo formáte "Date","Time","Open","High","Low","Close","Up","Down" vtedy boli imporotvané data a online data z TS identické. Preto by som sa chcel opýtať že či ja nerobím niekde chybu s importom alebo jednoducho to tam musí ísť vo forme druhého formátu ? Robím to preto lebo by som si rád otestoval svoje portfolio v analyzátore do ktorého môžu ísť len backtesty z indexov(SPY, QQQ, IWM atď.) Nakoľko výsledky z futures a ich dvojičiek indexov veľmi nelíšia. 5 minútove data niektoých indexov su k dispozícii na stiahnutie v tradingroome, bolo by odomňa blbé sa to nesnažiť využiť. Fundovaný mam len futures účet v TS čiže data mam len na futures. Aby som platil maximalne 10 dollarov za inactivity. Ďakujem prajem pekný večer. Timi Prikladám provizornú vzorku môjho súboru csv :  "Date","Time","Open","High","Low","Close","Up","Down" 01/03/2006,08:35,1648.75,1650.50,1648.50,1649.50,11385,10836 01/03/2006,08:40,1649.25,1649.75,1648.25,1649.00,8942,7874 01/03/2006,08:45,1649.00,1650.00,1649.00,1649.75,6267,3859 01/03/2006,08:50,1649.50,1649.75,1648.25,1648.50,5472,4712 01/03/2006,08:55,1648.75,1649.50,1647.25,1647.50,6434,10634 01/03/2006,09:00,1647.25,1649.00,1647.00,1648.75,7385,2973 01/03/2006,09:05,1648.50,1650.25,1647.25,1647.25,12417,13452 01/03/2006,09:10,1647.25,1647.75,1645.25,1645.50,9449,16342 01/03/2006,09:15,1645.50,1646.25,1644.50,1645.25,8163,10973 01/03/2006,09:20,1645.25,1646.00,1645.00,1645.75,4627,5939 01/03/2006,09:25,1645.75,1646.25,1644.00,1644.00,7345,10130 01/03/2006,09:30,1644.00,1644.50,1643.00,1643.75,10189,11070 01/03/2006,09:35,1643.75,1644.25,1642.75,1643.00,7523,7872 01/03/2006,09:40,1643.00,1643.00,1641.25,1641.75,10620,15410 01/03/2006,09:45,1641.75,1643.50,1641.75,1643.25,9782,5630 01/03/2006,09:50,1643.00,1643.75,1642.75,1643.75,4326,3452 01/03/2006,09:55,1643.50,1644.00,1643.50,1643.75,3116,2682 01/03/2006,10:00,1643.75,1644.50,1643.50,1644.00,3881,3226 01/03/2006,10:05,1644.25,1644.75,1643.75,1643.75,3846,4313 01/03/2006,10:10,1643.75,1644.50,1643.50,1644.25,2924,2919 01/03/2006,10:15,1644.25,1644.50,1643.25,1644.25,3646,3710 01/03/2006,10:20,1644.00,1646.00,1644.00,1645.00,7987,5734 01/03/2006,10:25,1645.00,1645.50,1644.50,1645.00,4876,3474 01/03/2006,10:30,1645.00,1645.50,1644.50,1645.00,4364,2686 01/03/2006,10:35,1645.25,1645.75,1645.00,1645.50,2810,1597 01/03/2006,10:40,1645.50,1646.75,1645.25,1646.00,8871,3777 01/03/2006,10:45,1646.00,1646.75,1645.75,1646.25,7542,2198 01/03/2006,10:50,1646.50,1646.50,1645.25,1645.75,3399,3350 01/03/2006,10:55,1645.75,1646.00,1645.00,1645.75,2171,2829 01/03/2006,11:00,1645.75,1647.25,1645.50,1647.25,7707,1927 01/03/2006,11:05,1647.25,1647.75,1646.25,1646.25,5148,5977 01/03/2006,11:10,1646.25,1648.25,1646.25,1647.75,9343,3128 01/03/2006,11:15,1648.00,1648.00,1647.00,1647.50,4439,3883 01/03/2006,11:20,1647.50,1648.00,1646.25,1646.50,1769,5502 01/03/2006,11:25,1646.25,1646.75,1646.00,1646.50,1871,1433 01/03/2006,11:30,1646.25,1646.75,1646.00,1646.25,1944,2033
    • Takt o máte v pořádku, ne? Jenom je vidět že příkazy nemáte odeslané - buď musíte kliknout ručně na všechna tlačítka Transmit u jednotlivých příkazů (modrá/červená tlačítka) nebo na Transmit tlačítko v poli Execute Basket (spodní třetina, šedé tlačítko). u IB to funguje tak, že příkazy se nejprve přenesou do platformy a pak je ještě potřeba je odeslat (Transmit) na burzu.
    • V adrese chybělo https a brower  to blokoval. Je to opravné. Zkuste prosím znovu.
    • @vita1 Díky za ukázku. Předěláme tedy skript na práci s FUT (vynecháme CONTFUT).  Čeho bych se chtěl vyvarovat je přesně to, o čem píše @vita1. Tedy že některé aktuální kontraktní měsíce už budou před expirací a bylo by potřeba je vyplňovat ručně. Rád bych, aby logika výběru kontraktních měsíců probíhala kompletně automatizovaně. Co mě napadá - do konfigurace trhů bychom přidali ke každému trhu dva nové parametry: - minimální počet dnů do expirace. Na začátku skriptu by se načetli všechny expirační měsíce a vybral by se ten nejbližší podle expirace, ovšem s alespoň minimálním počtem zadaných dnů do expirace. Například u MGC to vypadá, že musí být alespoň 30 dnů - viz https://ndcdyn.interactivebrokers.com/en/trading/futures-close-out.php (z té by se daly informace parserovat, ale to mi přijde extrémně náchylné na chyby). - ruční expirace. Standardně by pole bylo prázdné. Když se vyplní, tak by se obchodovala zadaná expirace. Bylo by to takové řešení pro situace, kdy by automat trval na zobchodování expirace, která se obchodovat nedá. Napadá k tomu někoho něco dalšího?  
    • Dobry den. Mam uplne to same. Pouzil jsem take Basket prikaz. Vyplneny byly GEV a RPRX. GEV mam nakoupeny s LMT prikazem na SELL, ale RPRX mam v SHORT prodany s LMT prikazem na BUY. Oba byly v BASKETu spolu. Nic jsem v BASKETU nemenil.
    • Dobrý večer. Soubor tsdata.zip mi nejde stáhnout. máte prosí Vás taky někdo problém, nebo je to jen u mne? Děkuji Radim
    • Pokud se vám vyplnil výstupní prodejní příkaz coby vstupní (a jste short), tak jste musel mít příkaz špatně zadaný. Takto to vypadá správně: Jde o příkaz, který čeká v mém živém účtu.  Zobrazuji si i sloupec Key, kde je vidět číslo 497 a 497.1. To je interní číslování příkazů IB. Podstatné je, že hlavní příkaz je bez desetinné tečky a ty s desetinnou tečkou jsou podmíněné - do trhu se dostanou až v momentě, kdy je vyplněn hlavní příkaz. Proto přestože cena byla nad výstupním profit targetem nejsem short - příkaz čeká na to, až trh doklesá k nákupnímu limitu a teprve po je vyplnění by byl poslán do trhu sell příkaz. Pokud příkaz zadáváte přes basket, tak by se toto mělo vyplnit automaticky. Petr
    • Děkuji za vysvětlení.  Dnes jsem zadal Deepdip příkazem basket před otevřením trhu. Hodinu po otevření jsem si šel příkazy zkontrolovat. Všechno probíhá, jak jsem zadal, jen ticker RPRX mne překvapil. Pro RPRX se měla otevřít dlouhá pozice příkazem Buy na ceně 30.18 a obchod se měl ukončit příkazem Sell na ceně 32.11, což je vlastně PT. Místo toho trh otevřel pod 32, ale vystoupal nejprve k příkazu Sell na 32.11 a otevřel krátkou pozici. Jak se má teď dále postupovat? Díky, Roman
    • I já hlásím, že mi reqHistoricalData dnes začalo s CONTFUT zlobit. A to až tak, že jsem musel restartovat TWS, aby začalo znovu fungovat stahování jakýchkoliv dat. Vyřešil jsem to tak, že si zavolám qualifyContracts hned na začátku skriptu, tím zjistím aktuální expirace, a s nimi už si vytvořím ib_insync.Future objekty (ty už jsou typu FUT). Pro ně teprve stahuji data. Malá komplikace je, že minimálně u MGC musím expiraci specifikovat ručně, protože pro aktuální front kontrakt už IB požaduje vyplnit physical delivery intent. Takže obchoduji až následující kontrakt. Sdílím kód pro inspiraci, ale je z mého vlastního systému, ne ze sdíleného bracket helperu: class MarketSpec(TypedDict): symbol: str exchange: str tick_size: float expiry: datetime.date | None def create_future_contracts(ib: ib_insync.IB, markets: list[MarketSpec]) -> dict[str, ib_insync.Future]: incomplete_contracts = [] for market in markets: if market.get("expiry"): # Explicit expiration date is specified incomplete_contracts.append( ib_insync.Future( symbol=market["symbol"], exchange=market["exchange"], lastTradeDateOrContractMonth=market["expiry"].strftime("%Y%m%d"), ) ) else: # Default to the current front contract incomplete_contracts.append( ib_insync.Contract(secType="CONTFUT", exchange=market["exchange"], symbol=market["symbol"]) ) # This adds the expiration date and currency, among other fields qualified_contracts = ib.qualifyContracts(*incomplete_contracts) return { c.symbol: ib_insync.Future( symbol=c.symbol, exchange=c.exchange, currency=c.currency, lastTradeDateOrContractMonth=c.lastTradeDateOrContractMonth, ) for c in qualified_contracts } A použít se to dá např. takto. Reálně se ovšem ten list kontraktů načte z konfigurace: contracts = create_future_contracts(ib, [ {"symbol": "MES", "exchange": "CME"}, {"symbol": "MGC", "exchange": "COMEX", "expiry": datetime.date(2025, 6, 26)}, ])  
    • Zdravím. Při spuštění generator.py mi to vyhodí chybu viz níže. Zkusil jsem nainstalovat knihovnu functions.database, ale píše mi to, že taková knihovna neexistuje. Mám nainstalován python 3.12.9. Jaromír Traceback (most recent call last):   File "C:\AUTO_signaltrader\fills.py", line 24, in <module>     import functions.database as db ModuleNotFoundError: No module named 'functions.database'  
    • Zdravím, hlásím stejnou chybu pro MBT. Když zkouším zadat příkaz ručně, IB píše že nemám trading permissions.   Takže jsem požádal, vyplnit dotazník a čekám na schválení.   Michal
    • Zkoušel jsem zadat Buy příkaz MKT a pak výstup Sell taky MKT a prošlo to v pořádku. Všiml jsem si ale, že se mi tam zobrazuje hláška Cost Impact, což jsem ještě nikde nezaregistroval ... ale asi to s tím nesouvisí.
×
×
  • Vytvořit...