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.
Statické proměnné v Amibrokeru
Při vytváření komplexnějších systémů se nevyhneme práci se statickými proměnnými. V dnešním tutoriálu si ukážeme, jak s nimi pracovat. Oblast využití je opravdu široká. Napříkad s jejich pomocí řídím position sizing ve strategii MR3000, což bude i základ dnešního příkladu.
Kód Amibrokeru:
Buy = True;
Sell = C>O;
symbol = Name();
StaticVarSet( symbol + "Sellexit", Sell);
if( Status("action") == actionPortfolio )
{
bo = GetBacktesterObject();
bo.PreProcess();
for( i = 0; i < BarCount; i++ )
{
for( openpos = bo.GetFirstOpenPos(); openpos; openpos = bo.GetNextOpenPos() )
{
symbol = openpos.Symbol ;
Sell1 = StaticVarGet( symbol + "Sellexit" );
exitThisbar=0;
if (openpos.IsLong)
{if (Sell1[i]){exitThisbar=1;}}
if (NOT exitThisbar)
....
}
bo.ProcessTradeSignals( i );
}
bo.PostProcess();
}
Nyní je v logu, oproti verzi 1.4 žádné změny v konverzi nejsou.
Díky
vclose: 22.13
vma: 22.7
Chyba behem testovani vystupni podminky MA5: AAL
not all arguments converted during string formatting
vclose: 134.41
vma: 135.51
Chyba behem testovani vystupni podminky MA5: AMAT
not all arguments converted during string formatting
vclose: 46.82
vma: 48.27
Chyba behem testovani vystupni podminky MA5: DAL
not all arguments converted during string formatting
vclose: 307.82
vma: 308.88
Chyba behem testovani vystupni podminky MA5: FB
not all arguments converted during string formatting
ad 1. Ano, nastavení periody v konfiguraci funguje pouze s uvedeným doplňkem, v opačném případě je třeba zajistit, aby mimo obchodní den byl csv soubor prázdný nebo aby ve složce nebyl vůbec.
ad 2. Ano, tak to má být. Return vrací obsah proměnné details, v původním kódu se details vytvoří pouze pokud dojde k výjimce a tedy v klasickém běhu ta proměnná chybí a skript skončí chybou.
B.
Dakujem za odpoved.
1) generator signalov mate na mysli ten doplnok od Unlimited? Lebo zatial pouzivam len autotrader ako taky a tam si generujem mob.csv v pondelok ale samozrejme ze ostatne dni v tyzdni v /data ten csv je. ked som ho zmazal dnes tak uz je to OK. Dnes si aktualizujem autotrader o doplnok od Unlimited.
2) neviem ci som to spravne pochopil lebo return result, details tam uz je. a details ako take je v except.
Pridal som este details = "" na zaciatok funkcie za length = 5.
takto ste to mali na mysli?
nie je problem ze je tam dva krat details? zobrazi sa mi niekedy aj chybova hlaska z except details?
vdaka
Vlado
def MA5(ticker):
""" vystup pokud trh uzavre nad MA(5)
C>MA(5)
"""
result = False
length = 5
details = ""
try:
# nacteni dat
df = getEOD_IB(ticker)
vclose = df['close'].iloc[-1]
ma = df['close'].rolling(window=length).mean()
vma = round(ma.iloc[-1], 2)
# zjisteni zda je close nad MA
if vclose > vma:
result = True
except:
details = ('%s - chyba behom testovania vystupnej podmienky' % ticker)
return result, details
Zdravím,
podobný problém jsem nezaznamenal a ani by neměl nastat, protože ty příkazy dokud nevstoupíte do pozice nejsou vůbec v trhu. Chápu správně, že zůstanou viset STP příkazy zadané v rámci signálů, tedy pozice nebyla vůbec zobchodovaná?
B.
ahoj, taky vam zustavaji v TWS viset stop-loss prikazy pro nevyplene LMT order MOPULLu? Ten BUY se mi normalne zrusi ale v platforme zustanou "child" SELL STP ordery. Jeste jsem schvalne kontroloval jejich OCA group ID vzdy odpovida rodicovskemu BUY LMT prikazu ... divne ...
Dobrý den,
ad 1. Pokud se nepletu tak generátor signálů by při svém spuštění měl mazat staré csv soubory a následně pokud je splněná perioda vytvoří nový soubor s případnými signály. Tedy správně by složka "data" neměla mimo obchodní den soubor obsahovat. Je potřeba tedy zjistit proč tam ten soubor máte, např. zda se negeneruje ruhý csv např. v rámci dávky Amibrokeru.
ad 2. Výstupní strategie může být použitá libovolná. Strategie MA5 a MA10 jsem neupravil pro použití nové verze Autotraderu. Úprava je jednoduchá a stačí v kódu definovat chybějící proměnnou. Podrobnější popis řešení najdete v tomto příspěvku https://www.financnik.cz/forum/topic/4753-autotrader/?do=findComment&comment=309468
B.
Dobrý den,
asi bude nejrozumnější zjistit jaká přesně chyba nastane, podle vypsaných hodnot k ní dochází až během porovnání cen. Zkuste upravit ve funkci zápis bloku try-except tak, aby se na obrazovku vypsal důvod chyby.
except Exception as e:
print(e)
B.
Dobrý den,
s novým AT se mi objevuje chyba při kontrole výstupu MA5, MA10. Do kódu přidal logování, ale nenašel jsem problém.
Kód i log jsou v příloze.
Díky za pomoc
chyba.txt
Zdravim vsetkych,
chcel by som sa spytat tak "hypoteticky" na temu Amibroker vs. Tradestation.
Osobne Pouzivam Amibroker s autotraderom + TWS ale nemam skusenosti so samotnym Tradestation.
Pamatam si ze Tradestation ma tiez development platformu a pouziva EasyLanguage takisto ako aj Amibroker. Predpokladam ze vyvoj strategii v TSG nemaju len tak odcleneny od samotnej exekucie prikazov naprogramovanej strategie ale je tam aj integracia do platformy,spustanie samotneho AOS a taktiez datafeed.
Takze vsetko pod jednou strechou.
Mate niekto skusenosti s vyvojom strategii a obchodovanim s Tradestation? Ake su tam vyhody a nevyhody v porovnani s modelom AMIBROKER + Python + TWS?
Co som si zatial dohladal na nete bolo ze backtester je v TSG pomaly a taktiez ze to obcase cele spadne. Oproti tomu Amibroker je stabilny a velmi rychly akurat live obchodovanie je komplikovanejsie koli pluginom na live data feed resp. exekuciou prikazov smerom na brokera.
Dakujem
Vlado
Dobry den Bogdane @4fx,
chcel by som sa vratit k bodu c.2 a to obchodovanie MOB. CSV mam nastavene na generovanie kazdy pondelok tzn. ze cely tyzden mam vo foldry /data csv subor s generovanymi signalmi z pondelka. Pri spustani autotradera kazdy den vidim ze sa testuju aj vystupy pre otvorene pozicie MOB. Vsimol som si ze ak sa uzatvori nejaka pozicia napriklad konkretne tento utorok sa uzatvorila jedna tak autotrader automaticky otvori jednu poziciu aby doplnil pocet 8/8.V strategies.py mam nastavene 'Period' : 'W1', takze predpokladam ze MOB sa bude obchodovat len raz za tyzden. Je nutne este nejake nastavenie co som prehliadol resp. vedeli by ste mi poradit co robim zle?
Mam este jednu otazku k exits.py. Pri strategii FinSwing2 som mal prednastavenu 'ExitStrategy' : 5, co znamena Market. Ked si spominam tak exit moze byt aj MA5 co je 'ExitStrategy' : 1. V pripade ze som to zmenil tak autotrader skoncil s chybou 2021-04-13 15:31:17: FS2 - Pocas spustenia skriptu nastala chyba : local variable 'details' referenced before assignment. Co znamena vlastne Exit za Market? Moze byt pri FS2 nastavena Exitstrategy 1 resp. 2?
Prikladam log z autotradera aj nastavenie strategies.py
Dakujem za pomoc
Vlado
strategies.txt
autotrader.txt
Zdravím,
potreboval by som zistiť ako dlho beží skript. Napadlo mi vložiť ako posledný krok skriptu nejakú časovú pečiatku. Následne by som si v logu prečítal kedy bol skript ukončený.
Neporadíte niekto takúto funkciu?
Zdravím. Přesně tak, měl jsem na mysli verzi Pythonu. Nicméně připravuji verzi, kde bude možné použít i starší verzi Pythonu a tím starší verzi SQLite - stejně jako je tomu u třídy Database.
Iba sa chcem uistit predtym ako to nainstalujem zle. Myslite tym predpokladam verziu Pythonu kde uz bude potrebna SQLite ano? T.j. ak odinstalujem python (mam verziu 3.7.9) a nainstalujem python verziu 3.8.3 tak by mi to malo fungovat?
Jo to by mohlo být, kdy yahoo downloader také vytváří instanci Amibrokeru a vkládá data do databáze. Zkuste to tedy teď pozorovat a případně se ozvěte.
P.
Zdravím,
ještě mě napadla jedna věc, nedávno jsem zaznamenal diskuzi o tom jak se navýšil čas pro stahování dat z yahoo. Mezi spuštěním yahoodownloderu a generátoru jsem měl 60 minut, kontroloval jsem si jak dlouho se stahují data a dnes to bylo 62 minut. Takže se mohlo stát že yahoodownloader nedokončil práci a už se spustill generator. Dobu mezi spuštěním skriptu jsem upravil na 120 minut.
JK
Zdravím, většinou to je jak píšete, zasekne se to hned u první strategie což je FAS, ale pravidlo to není, jednou jsem odchytil, kdy FAS proběhl a zeseklo se to na MPL viz. příloha ze dne 7.4.2021.
Vysledek Explore strategii: uspesnych 1, selhalo 1
JK
Zdravím priatelia.
Mám u IB založený individual margin account.
Kde si môžem vytvoriť ďalší účet? Aby som v jednom prihlasovacom mene mohol mať 2 účty ?
No nemôžem to nikde najst, ani na stránke ani vo svojom IB profile.
Ďakujem.
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!