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.
Ahoj,
snažím se připravit vstupní data pro autotrader. Používám k tomu Amibroker. Spuštěním afl skriptu, by mi měla tato část vygenerovat tabulku s daty pro vstup do obchodu.
if (Status("action") == actionExplore)
{
// SetOption("NoDefaultColumns", True);
Filter = MRZ_BuyCond; // Built-in variable, not user input
MRZ_CapitalPerTrade = MRZ_Capital * MRZ_PositionPct / 100;
MRZ_EntryPrice = Ref(BuyLimitPriceRaw, -1);
MRZ_ProfitTarget = Ref(ExitLimitPriceRaw, -1);
MRZ_StopLoss = Null; // this system uses time stop (no price SL)
MRZ_Shares = IIf(MRZ_EntryPrice > 0, Int(MRZ_CapitalPerTrade / MRZ_EntryPrice), 0);
// AddTextColumn(Name(), "Ticker");
AddColumn(MRZ_EntryPrice, "Price", 1.2);
AddColumn(MRZ_ProfitTarget, "ProfitTarget", 1.2);
AddColumn(MRZ_CapitalPerTrade, "Capital", 1.2);
AddColumn(MRZ_Shares, "Shares", 1.0);
}
Výsledkem je ale tabulka s položkou Date/Time zobrazujícím datum signálu.
Vstupovat chci na LIMIT další obchodní den. Tedy datum pro vstup bych potřeboval 4/3/2026.
Tak mám naprogramovaný i backtest.
Jakým způsobem toto ošetřit v části:
if (Status("action") == actionExplore){}
Děkuji
Dobrý den řešil jsem v minulosti podobný přerod z CFD na klasické ETF. V investorských skupinách se toto téma v roce dva tisíce dvacet šest řeší často protože pravidla pro paušální režim jsou v tomto neúprosná. Bohužel vás musím zklamat protože příjem z prodeje derivátů se nepovažuje za příležitostný příjem a limit padesát tisíc korun se na něj v tomto smyslu nevztahuje. Máte pravdu v tom že na CFD se žádný časový test nevztahuje protože jde o derivát a nikoliv o držení podkladového aktiva takže daň ze zisku tři tisíce dolarů vás při prodeji nemine bez ohledu na délku držení pozice. Největším úskalím je že pokud v roce dva tisíce dvacet šest vyděláte na ostatních příjmech více než padesát tisíc korun tak z paušálního režimu vypadáváte. Zisk tři tisíce dolarů je aktuálně kolem sedmdesáti tisíc korun takže prodej naráz by vás z paušálu vyřadil k začátku dalšího roku. Rozdělení prodeje do dvou let je v tomto případě nejlepší strategie protože pokud letos prodáte jen část tak aby čistý zisk nepřesáhl padesát tisíc korun tak vám paušální režim zůstane zachován. Zbytek pak doprodáte v příštím roce a při nákupu čisté akcie si dejte pozor na měnovou konverzi u brokera.
Dobrý deň. Som sa pred časom ocitol v identickej situácii a tiež som nad tým strávil hodiny. Riešenie som nakoniec objavil v jednej diskusii na Reddite a v skutočnosti je to celkom bežná vec pri nových účtoch.
To číslo začínajúce na DU, ktoré vidíte, je skutočne váš Paper Trading účet, teda demo verzia. Problém nie je v tom, že by ste niečo zle nastavili, ale v tom, že aplikácia vás po prvom prihlásení automaticky hodila do demo režimu, kým sa dokončuje plná aktivácia vášho ostrého účtu U2xxxxxx7.
Mne osobne pomohlo toto:
Priamo v mobilnej aplikácii IBKR Mobile sa musíte úplne odhlásiť. Na prihlasovacej obrazovke, kde zadávate meno a heslo, sa nachádza nenápadný prepínač alebo možnosť voľby medzi Live Trading a Paper Trading. Uistite sa, že máte zvolené Live Trading. Ak tento prepínač nevidíte, skúste v nastaveniach aplikácie v telefóne vymazať vyrovnávaciu pamäť alebo aplikáciu preinštalovať, čo niekedy vynúti opätovnú voľbu režimu.
Čo sa týka Trader Workstation v PC, tam je to ešte jasnejšie. Pri štarte programu máte na výber dve veľké tlačidlá: jedno červené pre Live Trading a jedno modré pre Paper Trading. Musíte kliknúť na to červené a prihlásiť sa tam. Ak je Váš účet už schválený a peniaze pripísané, po prepnutí na Live by ste mali vidieť svoje skutočné číslo účtu U2xxxxxx7 a zostatok.
Tak se mi dnes bohužel nespárovali obchody. Budu tam mít něco špatně.
Jelikož testuji spouštění skriptů fills a diary přes dávky, tak zasílám výpis z logu.
Viz. níže.
T.
Ano můžu potvrdit. Včera jsem upravil fills dle vás a až po té úpravě mi přijde, že to funguje správně. Dneska se mi budou párovat první obchody, tak dám vědět jak to dopadlo.
T.
Zdravím Tomáši, Trading Room je postaven především na signálech dashboardu, podpoře nasdílených autotraderů + zpětné vazbě ve které sdílím vše co jsem v rámci systematického tradingu sám naučil.
Tj. nemám v plánu žádné zásadní změny.
Je pravděpodobné, že coby bonus sem opět v budoucnu nasdílím nějakou výuku, ale žádný konkrétní plán nemám a ani nechci slibovat. To se týká i shortů. S ohledem na to, jak hodně postupují možnosti vývoje systematického tradingu s LLM reálně priorituzuji tuto oblast a věnuji ji prakticky celý den. Vytvořit kompletní kurzu přitom zabere opravdu hodně času (hlavně s nahráváním, střihem atd), takže preferuji v tuto chvíli raději odpovídat na cílené otázky.
Dobrý den Petře,
rád bych se znovu po čase zeptal, jestli budete vydávat/kompletovat kurz ke strategii pro short, o kterém jste mluvil na konci minulého roku? Rád bych se při té příležitosti také zeptal, jaké jsou plány v Trading Room na další měsíce.
Brzy se blíží další termín platby za členství a zvažuji, zda zůstat. Velmi rád bych zůstal, kdyby to tu více žilo.
Předem mockrát děkuji za info,
Tomáš
Děkuji.
Řeším už jenom 1)
Error:
DEBUG: Loading benchmark ^GSPC...
[*********************100%***********************] 1 of 1 completed
1 Failed download:
- ^GSPC: No data found for this date range, symbol may be delisted
DEBUG: Benchmark returns shape: (40,)
Takže mi Benchmark pořád nefunguje.
2) INFO: 127.0.0.1:60371 - "GET /favicon.ico HTTP/1.1" 404 Not Found v Dashboardu.
Předem děkuji za radu.
Dobrý den,
je to tak, multiplikátor je omezen na celé číslo kódem na řádku č.165 ve fills.py.
Pro ukládání desetinných hodnot by se musel skript upravit do tvaru
for exec_detail in executions:
exec_id = exec_detail.execution.execId
cr = exec_detail.commissionReport
val = exec_detail.contract.multiplier
if val:
num = float(val)
multiplier = int(num) if num.is_integer() else num
else:
multiplier = 1
fills.append((
exec_detail.execution.time,
exec_detail.execution.acctNumber,
exec_detail.execution.clientId,
exec_detail.contract.symbol,
exec_detail.contract.secType,
exec_detail.contract.localSymbol,
exec_detail.contract.currency,
exec_detail.execution.permId,
exec_detail.execution.side,
exec_detail.execution.shares,
exec_detail.execution.avgPrice,
exec_detail.execution.price,
cr.commission if cr else 0,
exec_detail.execution.orderRef,
exec_detail.execution.execId,
exec_detail.contract.exchange,
cr.realizedPNL if cr else None,
multiplier
))
B.
Zdravím,
uvedené sloupce přidával do tabulky skript upgrade_20240219.py, který je také ke stažení mezi soubory deníku. Ten můžete spustit i na databázi s daty, jen si pro jistotu předem proveďte zálohu.
B.
Ne, to jsou chyby z databáze která obsahuje obchody za x měsíců a nezobrazí se Benchmark a Dashboard SELECTuje z Diary tabulky sloupce localSymbol, secType, ktere tam nejsou, alspon já je tam nemám.
Error:
DEBUG: Loading benchmark ^GSPC...
[*********************100%***********************] 1 of 1 completed
1 Failed download:
- ^GSPC: No data found for this date range, symbol may be delisted
DEBUG: Benchmark returns shape: (40,)
Takže mi Benchmark pořád nefunguje. Děkuji za radu.
Zdravím,
povedlo se mi rozchodit nový update a vypadá celkem ok. Musel jsem doinstalovat nějaké ty moduly, ale zevrubně jsem kontroloval výsledky z mého deníku a z dashboardu a zatím to vypadá nadějně 🙂
Dneska se mi teda nepárovali obchody, jelikož jsem v pátek neměl nic uzavřeného, tak ještě uvidím jak to funguje.
Měl jsem trochu strach, že se mi skript bude snažit uzavřít ty obchody, kde mi ještě u Procesed zbyla 0, jelikož jsem něco upravoval ručně, ale do toho nová verze asi nezasahuje. Nebo k tomu nenašla adekvátní protistranu.
Snad jen při prvním spuštění nového fills.py upozorňuje na multiplikátor. Jelikož u MBT je 0.1 a možná tam máte někde podmínku, že to musí být celé číslo ale to jen odhaduji.
U diary něco s časovými zónami, ale to nejspíš nemá vliv.
Zasílám screeny.
T.
Pokud se stále bavíme o spuštění prázdného deníku, tak přiložená databáze by měla obsahovat všechny potřebné sloupce. Zkuste si soubor tradebook.zip stáhnout ještě jednou.
Uvedená chyba benchmarku může souviset s tím, že databáze prozatím neobsahuje žádná data.
B.
Děkuji. Ještě dva dotazy: 1) Dashboard SELECTuje z Diary tabulky sloupce localSymbol, secType, ktere tam nejsou, alspon já je tam nemám.
2) Zavolani funkce:
portfolio = diary.getPortfolio(equities, inPercentage=True, benchmark=benchmark_ticker)
Error:
DEBUG: Loading benchmark ^GSPC...
[*********************100%***********************] 1 of 1 completed
1 Failed download:
- ^GSPC: No data found for this date range, symbol may be delisted
DEBUG: Benchmark returns shape: (40,)
Takže mi Benchmark pořád nefunguje. Děkuji za radu.
Zdravím,
prázdná databáze tradebook.zip je připojená mezi soubory ke stažení, jedná se o aktuální stav, tzn. obsahuje všechny používané sloupce a není třeba spouštět žádný upgrade.
Takže v podstatě stačí vytvořit podsložky config, data a functions. Stáhnout a uložit jednotlivé skripty do příslušných složek, a nakonec nastavit váhy a strategie v konfiguračních souborech.
B.
Server od roku 2003 vydává
Centrum finančního vzdělávání, s.r.o. info@financnik.cz
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!