Sari la conținut

Date istorice pentru backtesting


Postări Recomandate

helou

 

trading cu metode netestate este sinucidere curata. pentru testare (fie manuala, fie automata) ai nevoie de date. de unde le luam?

 

ca sa dau tonul, eu testez cu Amibroker si iau date de la Gain Capital

 

voi?

 

de asemenea vreau parerea voastra in problema date la tick versus cotatii de 1 minut

Editat de Luca
Link spre comentariu
Distribuie pe alte site-uri

  • Răspunsuri 12
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Buna Luca,

 

trading cu metode netestate este sinucidere curata.

nu e chiar asa, de exemplu un trader discretionar, cum ar putea el sa isi testeze planul de trading cand lui ii lipsesc foarte multi factori pe care in back testing nu ii are ci numai in timp real apar acei factori... ? Factorii pe care nu ii avem in back testing: frica, lacomia, starea generala, probleme personale si cel mai important dupa parerea mea, sentimentul respectivului intrument financiar; ce stiri au mai aparut pe plan fundamental, ETC. Deci, eu zic ca sunt prea multe informatii pe care nu le poti avea in back testing. De asta forward testing e mai bun decat back testing. sry pentru offtopic.

 

O zi buna.

Link spre comentariu
Distribuie pe alte site-uri

eu le iau direct din metatrader si nu ma intereseaza ticksi in testarea unei stategii pt ca nu tranzactionez tf mai mic de 30min, deciziile de intrare le iau pe h4 d1 in general.

 

backtestingul e necesar pt filtrare strategiilor de tranzactionare, adica e primul pas care ar trebui facut in dezvoltarea unei idei noi de tranzactionare. cautati posturile lui tradelover pe tema asta.

Link spre comentariu
Distribuie pe alte site-uri

@ Carboon,

 

ordinea ar fi:

1.backtesting

2.forwardtesting

3.real

 

eu nu fac trader discretionar, ci price driven trading, dupa un algoritm care statistic sa-mi produca profit. acel algoritm il slefuiesc pe masura ce piata isi schimba caracteristicile, pentru a-i mentine rata statistica de cistig.

 

cit priveste factorul psihologic al tradingului, cine nu il stapineste, trebuie sa adauge un minus la strategia lui de trading. daca strategia aduce statistic 60% cistiguri, trebuie sa scazi un procent variabil de trade-uri esuate din cauze psihologice. dar m-am departat de subiect...

Link spre comentariu
Distribuie pe alte site-uri

sa revin,

 

am gasit o sursa de cotatii forex de 1 minut, din 1999-2005, format ascii, 150M (nu se specifica perechile...)

 

http://www.megaupload.com/?d=CSYAD61J

 

dar e al naibii de greu de dat jos, poate il da jos cineva dintre voi si il pune intr-un loc mai accesibil =))

Link spre comentariu
Distribuie pe alte site-uri

@ ener

 

stii cumva cum sa convertesc fisiere cu date pentru metatrader in format ascii?

Link spre comentariu
Distribuie pe alte site-uri

  • Moderators

Factorii pe care nu ii avem in back testing: frica, lacomia, starea generala, probleme personale si cel mai important dupa parerea mea, sentimentul respectivului intrument financiar; ce stiri au mai aparut pe plan fundamental, ETC. Deci, eu zic ca sunt prea multe informatii pe care nu le poti avea in back testing. De asta forward testing e mai bun decat back testing.

forward testingul are marele dezavantaj ca merge cu taraboantza. adica trebuie sa astepti in timp real, daca vrei sa testezi pe un an de zile, atunci iti trebuie un an de zile. acelasi inteval poate fi testat in cateva secunde pe backtest, practic intr-o zi se pot face cateva sute de teste, cu optimizari, imbunatatiri, etc. TOTUSI! odata fixat algoritmul, strategia, nimic nu poate inlocui forward testingul. Backtestingul trebuie folosit doar ca o etapa intermediara, in faza initial a dezvoltarii strategiei. Ideea: daca o strategie pierde pe backtest, atunci ea va pierde in mod cert si pe forward test. Daca o strategie castiga pe backtest, fara a face curve fitting (adica optimizez parametrii pana se potrivesc istoricului, cazul extrem - paranoic - ar fi ca ma uit in history si deschid buy inainte de a creste, sell inainte de a scade, hihi, practic optimizarea e tot un fel de curve fitting, atat timp cat aceiasi parametrii - optimizati - dau rezultate diferite pe alte perioade de timp, pe aceeasi piata), deci revenind, o strategie care castiga pe backtest, si nu face curve fitting, ea poate sa castige si pe forward test, dar tot asa de bine poate sa piarda.

 

de ce? sunt mai multi factori, cel mai important este ca datele istorice sunt "simplificate". In afara de ceea ce zicea Carboon mai sus, adica chestii subiective, ca frica, lacomie, etc, din datele istorice lipsesc si chestii obiective, cum ar fi spreadul (cel mai important!), viteza de micare a pietei (cat de repede vin ticsii, volatilitate, lichiditate, care se "vad" clar in timp real, o strategie bazata pe volatilitate va castiga tot timpul pe backtest, unde ticksii - interpolati - vin cu aceeasi viteza si expertul nu scapa nici unul, pe cand in timp real, grrrr... se poate ca 20-100 de ticksi sa vina in cateva milisecunde, si expertul sa ii scape, deoarece nu si-a terminat treaba pentru tickul precedent, deci in timp real, aceeasi strategie poate sa piarda cu brio), ratele si directia dobanzii (foarte importanta! testati orice carry sau long term trading pe perechile cu USD pe anii trecuti, cand dobanda la USD era MAREEEEE, si testati-o apoi pe anul acesta, dupa cut-urile disperate ale fezilor, de unde sa stie expertul meu ca anul trecut luam dobanda daca vindeam eurusd, pe cand anul asta DAU dobanda, iar ca sa iau trebuie sa cumpar, nu sa vand), etc.

 

Al doilea motiv ca importantza este faptul ca MT4 interpoleaza. Adica daca nu are date cu variatia ticksilor pe o anumita candela, face el o variatie din mintea lui, care sa coincida cu OHLC-ul candelei, si sa fie in acelasi numar de mutari ca V-ul candelei. Remember, fisierele istorice sunt OHLCV. Asta duce la rezultate complet aiurea la backtestul pe candele lungi, unde miscare pietei poate fi total diferita in timp real, de miscarea interpolata de strategy tester (cea de a doua e mult mai "smooth" de obicei, ca si cum as aplica un EMA(x) direct pe ticksii reali, cu x proportional cu lungimea candelei, pe candelele scurte diferenta nu e foarte importanta, dar pe candelele lungi, grrrr...

 

Al treilea motiv ca importantza se numeste "reverse candles". La toate ST-urile pe care le stiu eu (vreo 6, incluzand MT4) toate candelele pe history sunt directe. Well, in real life, 30-40% dintre candele sunt reversed. Am pus pe undeva un post despre ce inseamna candela directa si inversata. Strategii cu foarte bun money management, care joaca la breakout si reusesc sa castige profituri frumoase pe history vor da chix pe real, unde breakoutul este pe o candela inversata. Asta pentru ca pe tester, candela fiind directa, dupa breakout cursul se duce in aceeasi directie, pe cand pe real, breakoutul se produce inainte de miscarea mare, care este pe intoarcere, iar daca stopul e scurt (ca ziceam de good MM) el va fi lovit de mai multe ori pe realtime decat pe backtesting. Adica sa se inteleaga, ca le-am cam incurcat: daca am o candela crescatoare (close>open) cu umbre foarte scurte, pe tester (unde ST stie doar OHLCV, nu si miscarea intermediara, si trebuie sa interpoleze) cursul se va misca intotdeauna asa: de la open la low, de la low la high, de la high la close. Totul intr-un numar V de ticksi. Well, pe real se poate ca miscarea sa fi fost de la open la high (lunga!), de la high la low (inversata), de la low la close (iar lunga). Un breakout in sus (jucat buy undeva la mijlocul candelei, cu stop sub minim) va iesi cu bine in sus pe tester, unde stopul e sub Low, si nu e lovit, dar pe real, stopul e sub Open (ca Low inca nu s-a produs) si va fi lovit pe intoarcere.

 

Si mai sunt si alte chestii, despre care am mai povestit cu alte ocazii

Link spre comentariu
Distribuie pe alte site-uri

  • Moderators

@ ener

 

stii cumva cum sa convertesc fisiere cu date pentru metatrader in format ascii?

foarte simplu, cu un expert care deschide un fisier .csv in modul append si scrie in el valorile.

 

practic in functia start() scrii o singura linie de tipul:

 

write(open[1], high[1],low[1],close[1],volume[1]);

 

si apoi executi ST pe "open prices only". Atentie, este [1], nu [0], adica scrii valorile candelei anterioare, ca cea curenta nu este inca formata.

 

functia init() deschide fisierul, functia deinit() inchide fisierul

 

asta e tot, trei linii de cod. Poti sa "construiesti" numele fisierului folosind symbol() si period(), ca sa iti faca fisiere diferite pentru perechi si TF diferite

 

numefisier="Cucurigu_"+symbol()+"_"+period();

 

apoi openfile.

 

Exercitiu pentru cei care vor sa invete MT4 =)) (stiu eu vreo doi pe aici care ma seaca pe messenger cu intrebari despre mt4 toata ziua! hihi... toata stima pt cei care vor sa invete! in general vorbind, nu doar mt4)

Editat de tradelover
Link spre comentariu
Distribuie pe alte site-uri

@ tradelover

 

thanks!

 

apropo de incepatori, eu sint zero la metatrader. esti dragut sa-mi scrii codul, de la cap la coada? vreau sa convertesc in ascii date pentru MT si sa fac un backtest si pe ele, am gasit o sursa la alpari de date istorice

 

http://www.alpari-idc.com/en/dc/databank.php

 

ca vad ca tot eu dau surse nimeni nu se oboseste =))

 

chiar nu putem sa facem o baza de date in ascii, cu perechile principale, ca sa le foloseasca toata lumea, indiferent ce platforma de backtesting foloseste?!

Link spre comentariu
Distribuie pe alte site-uri

  • Moderators

of of, Luca, Luca... ce ma fac eu cu tine??? =))

 

A mai fost postat cel putin de 2 ori... ma rog... unii nu se obosesc sa isi piarda timpul cu sursele tale (la ce bun? atata vreme cat fiecare are sursa lui si nu vad nici un motiv sa o schimbe, de dragul tau... la ce imi trebe mie sursa ta, cand am destule date in mt4-ul meu? asa ca vrei tu free help??)... dar nici altii de pe aici nu se obosesc sa caute prin posturile vechi...

 

I-am facut cateva mici modificari, vezi comentariile din interiorul sursei, si discutia despre "incredichart" pe un tread mai vechi.

 

Remember: este script, se copiaza in directorul de scripturi. Folosirea unui script are si avantaje si dezavantaje:

 

Avantajul este ca poti converti orice chart imediat, esti doar la un "drag" si un "click" away from your ascii file. Adica tragi cu mousul scriptul din navigator direct pe chart, si dai ok daca nu vrei sa modifici parametrii, si gata, ai fisierul. Daca drag and click e prea mult, atunci mergi in interiorul sursei si pune un comment (doua slashuri) in fatza liniei cu "#properites show_inputs" si da-i recompile, dupa aia poti sa faci doar un drag (ori dubluclick) pe script si BOOM! ai fisierul ascii (ma rog, e csv, daca e sa fim carcotasi....). Dezavantajul scriptului e ca nu poti exporta decat numarul de bare pe care le ai in chart, adica daca vrei sa exporti istoria M1 pe 10 ani (vo 4 milioane de bare), tre sa mergi in tools/options si sa pui "bars in chart" la o valoare foarte mare (niste milioane, ori vo 500 de mii, pt m15 si m30 pe 10 ani). Cu "bars in chart" setat la valori de milioane, MT4 devine foarte lent cand deschizi mai multe charturi in acelasi timp (in special cu TF-uri mici, unde sunt intr-adevar multe bare). Istorie pe zilioane de ani se poate aduce de la MQ, folosind history center, din meniul tools.

 

O versiune mai buna de convertit date pe zilioane de ani ar fi sa transformi scriptul intr-un ea. Trebe doar sa adaugi functiile init() si deinit() si sa ii stergi linia cu properties show inputs, si sa il muti in folderul de experti. Mai trebuie inlocuit for-ul din interior cu ceea ce ziceam in postul precedent, faci un singur save la fiecare tick, nu pe toate barele. Daca chiar vrei la fiecare tick, tre sa pui la linia cu time "seconds" in loc de "minutes". Avantajul ar fi ca ai putea converti orice history file, oricat de vechi, folosind ST pe o perioada de timp definita, si ca ai putea obtine date "la tick" daca rulezi ST cu "every tick". Dezavantajul ar fi ca datele "la tick" ar fi interpolate (deci un pic diferite de ce a fost in realitate). Pentru "open only" nu obtii date la tick, dat exportul este mai accurate. Si desigur, orice varianta ai alege, un alt mare dezavantaj al folosirii unui expert in locul unui script este acela ca trebuie sa "muncesti", adica sa stai langa el pana termina de rulat ST :D

 

Uite ici scriptul.

 

IncrediExporter.mq4

 

precum si un fisier rezultat in urma conversiei, este EURUSD pe 30 de minute.

 

History_EURUSD_M30.zip

 

Bun, acum s-ar impune o discutie asupra afirmatiei "sa facem o baza de date in ascii".... grrrrr.... se merita? tu ai idee cat de mare ar fi?? Intraba-l pe kerosen ct de mari sunt fisierele alea de le-a adus el pt scula lui. Si alea nu erau ascii, ci compresate... De aia datele se stocheaza in fisiere .hst, care sunt binare, si compresate. De aia o fi fost inventata compresia, arhivarea, ziparea, etc. Fisiere ascii cu istoricul pe toate perechile valutare, pe toate tf-urile? pe toata perioada de prin 1980 incoace? Grrrrr.... Zeci de giga de harddisk wasted... =))

 

Fisieru de mai sus are aproape 3 mega si nu contine decat ulrimele 5000 de bare (atat am default la "bars in chart" la mine), adica M30 de prin 2004 incoace. A trebuit sa il zipez sa pot sa il atasez, si chiar rog pe Stefan sa il stearga si sa puna un comment in loc, daca considera ca ocupa prea mult spatiu. Si asa compresat cu compresie maxima, tot mi-au iesit peste 500 de kilo...

 

Ce boala pot sa fac cu fisierele ascii, ceva ce nu pot sa fac direct in MT4 direct cu fisierele hst? Sa ma joc cu excelul si cu statistica? well, ar fi un motiv... excelul poate incarca direct fisiere csv (dublu click pe el daca vrei sa verifici, ori deschide-l cu excel) si excelul e toba de calcule statistice care ar fi foarte greu de implementat in mt4. Dispersii, integrale, etc... Ori Matlab, ori Matematica 3D, ori alt program dedicat pt calcule matematice. Dar in cazul asta nu mai bine folosesc DDE? MT4 are DDE (dynamic data exchange, poate schimba date cu alte aplicatii care ruleaza pe windows in timp real), trebe doar sa te duci in tools si sa ii dai enable.

 

Alte motive?

 

Deci inca odata, ce faci cu fisierele ascii? Lamureste-ne si pe noi, sa nu murim nestiutori... hihi

Editat de tradelover
Link spre comentariu
Distribuie pe alte site-uri

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.

Vizitator
Răspunde la acest subiect...

×   Alipit ca text avansat.   Alipește ca text simplu

  Doar 75 emoji sunt permise.

×   Linkul tău a fost încorporat automat.   Afișează ca link în schimb

×   Conținutul tău precedent a fost resetat.   Curăță editor

×   Nu poți lipi imagini direct. Încarcă sau inserează imagini din URL.

  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.

×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.