Backtest bota u Pythonu: Backtrader i VectorBT
Poredi način izvršenja, podatke i troškove u Backtrader i VectorBT alatima. Izolovan primer istih naloga pokazuje kako se usklađuje račun.
Sadržaj članka
U razgovoru o ručnom trgovanju postavio sam pitanje: „Da li se pridržavaš svih pravila kada si u live trejdu? Jer na backtestingu nemaš emocija“.
Kod bota tu proveru prevodim u konkretan posao: da li test zaista izvršava pravila onako kako su zamišljena? Ako signal zahteva zatvaranje sveće, a račun mu dodeli raniju ulaznu cenu, lepa kriva ne opisuje nalog koji bi mogao da se pošalje.
Python daje pristup podacima, obradi i detaljima simulacije. Backtrader i VectorBT pomažu da taj posao organizuješ. Izbor biblioteke počinje od pitanja koje testiraš i modela izvršenja koji ti je potreban.
Šta dobijaš prelaskom u Python#
Podatke, pravila i izveštaje možeš da držiš u istom postupku i sačuvaš verziju svakog ulaza. To olakšava ponavljanje testa i poređenje izmena. U istom projektu možeš pripremiti više instrumenata, drugačije troškove ili više skupova parametara.
MT5 dokumentacija opisuje istorijsko testiranje, odvojeni forward period i simulaciju kašnjenja. Python ima smisla kada ti treba način obrade ili povezivanja koji je praktičnije izvesti van terminala.
Pre poređenja alata napiši koja informacija pokreće odluku, kada postaje dostupna i po kojoj ceni nalog sme da bude izvršen. To je zajednička osnova oba testa.
Backtrader: strategija prati tok podataka#
Backtrader organizuje simulaciju kroz podatke, strategiju i simuliranog brokera. Uobičajen postupak prolazi kroz barove i poziva logiku strategije, dok se ishod naloga prati kroz odgovarajuće obaveštenje.
Prema dokumentaciji izvršenja, standardni market nalog u takvom testu izvršava se na otvaranju sledećeg bara. Limit i drugi tipovi naloga imaju druga pravila. To je važnije od same etikete „simulacija korak po korak“.
Početni vodič pokazuje kako se dodaju podaci, strategija, početni kapital i provizija. Dnevnik slanja i izvršenja omogućava da prvi rezultat pregledaš nalog po nalog. Sam redosled poziva ne sprečava svaku grešku u pripremi podataka ili korišćenju budućih informacija.
VectorBT: nizovi, signali i prilagodljiva obrada#
VectorBT je pogodan kada iste podatke želiš da obradiš kroz više kombinacija parametara. Portfolio.from_signals prihvata ulazne i izlazne signale, dok druge metode omogućavaju eksplicitne naloge ili sopstvenu funkciju obrade.
VectorBT kroz from_order_func podržava i sopstvenu obradu naloga i stanja tokom simulacije.
Prednost rada sa nizovima dolazi do izražaja kada znaš šta predstavlja svaki red i kolona. Signal sa zatvaranja, cena izvršenja i trenutak promene pozicije moraju ostati poravnati. Brže dobijen rezultat samo ubrzava posao koji si definisao; ne odlučuje da li su pretpostavke dobre.
Isti mali primer u oba alata#
Za ovaj vodič urađena je izolovana proba sa pet sintetičkih dnevnih barova, bez mreže i brokerskog naloga. Korišćeni su Python 3.11.15, Backtrader 1.9.78.123 i VectorBT 1.1.1. Početna vrednost je 10.000 novčanih jedinica, obim jedna jedinica sredstva i provizija 0,1% po strani, bez klizanja.
U Backtrader primeru signal za kupovinu nastaje na prvom baru, a prodaja se zadaje na trećem. Market nalozi se izvršavaju na narednim otvaranjima. Za VectorBT signali su postavljeni na te iste redove izvršenja, uz izričito zadate cene otvaranja. Ovde poređenje počinje istim operacijama.
| Operacija | Cena | Količina | Provizija u modelu |
|---|---|---|---|
| Kupovina | 101 | 1 | 0,101 |
| Prodaja | 105 | 1 | 0,105 |
| Zbir | Dobitak pre troškova 4 | Troškovi 0,206 |
Oba alata daju završnu vrednost 10.003,794, odnosno rezultat +3,794. To potvrđuje račun ovog namerno jednostavnog primera. Nije poređenje brzine niti test profitabilnosti strategije, a provizija je pretpostavka modela.
Ovakav mali primer je dobar početak pre dodavanja stotina parametara. Ako se već tu izlazi razlikuju, traži razliku u vremenu signala, izvršnoj ceni, količini ili trošku.
Počni od pisanog trejding plana.
Besplatni Šegrt donosi zadatke za pravila, žurnal i rutinu tokom sedam dana. Unesi ime i mejl za početak.
Podaci i troškovi pripadaju testu#
Sačuvaj izvor i verziju podataka, vremensku zonu i obradu praznina. Kod akcija razdvoji prilagođene i neprilagođene cene; kod drugih instrumenata obrati pažnju na ugovor i način formiranja serije. Isti naziv instrumenta ne znači da dve datoteke sadrže isti niz.
Trošak treba da odgovara modelu proizvoda: procentualna provizija, naknada po ugovoru i finansiranje nisu ista stavka. Obim, dostupne cene i način simulacije klizanja utiču na ishod. Dodaj ih kao jasna podešavanja i zabeleži šta je izostavljeno.
Kada tražiš podatke od drugog izvora, u uslove ulaze i pravo korišćenja i kvalitet pokrivenosti. Besplatno preuzeta datoteka nije sama po sebi potvrđena istorija tržišta.
Odvoji razvoj od procene#
Na jednom delu podataka razvijaš pravila, a drugi ostavljaš za naknadnu procenu. Ako stalno menjaš parametre prema rezultatu tog drugog dela, i on postaje deo razvoja. Sačuvaj broj i sadržaj pokušaja, ne samo pobedničku krivu.
Walk-forward postupak ponavlja podešavanje na jednom prozoru i proveru na narednom. Redosled prozora i način izbora parametara treba odrediti unapred. Rezultati prozora za proveru zatim se posmatraju zajedno, uz stvarne pretpostavke prelaska između njih.
Monte Carlo probe mogu menjati redosled rezultata ili uslove simulacije. Pri mešanju istih fiksnih novčanih rezultata zbir ostaje isti, a putanja i pad se menjaju. Ako menjaš veličinu pozicije prema stanju računa, menjaš i račun. Vodič za backtesting botova detaljnije razdvaja te slučajeve.
Kako biraš alat#
| Posao | Šta gledaš u alatu |
|---|---|
| Praćenje pojedinačnih naloga | Tok događaja i evidenciju izvršenja |
| Mnogo kombinacija parametara | Način zadavanja nizova, memoriju i vreme konkretne probe |
| Posebno pravilo izvršenja | Mogućnost sopstvene logike i njene granice |
| Ponavljanje rezultata | Sačuvane verzije biblioteka, podataka i podešavanja |
| Poređenje dva testa | Isti signal, trenutak, cena, količina i trošak |
Za procenu ishoda tu su metrike bota. Za sledeći korak, praćenje rada u realnom vremenu, koristi vodič o periodu testiranja. Biblioteka za istorijsku simulaciju i servis za stvarno slanje naloga ostaju različiti delovi posla.
Često postavljana pitanja#
Da li moram da napustim MT5 tester da bih ozbiljno testirao bota?#
Ne. Izbor zavisi od potrebnih podataka, izvršenja i načina istraživanja. MT5 ima sopstvene mogućnosti testiranja i optimizacije; Python daje drugi način da organizuješ postupak.
Backtrader ili VectorBT?#
Kreni od malog primera koji razumeš i uporedi tok naloga, podešavanje troškova i mogućnosti koje su ti potrebne. Nije dovoljno birati po obećanju brzine ili opštem nazivu modela simulacije.
Zašto dva alata daju različit rezultat za istu ideju?#
Prvo uporedi vreme signala i izvršenja, cene, količine i troškove. Ista rečenica koja opisuje strategiju može biti prevedena u dva različita postupka.
Odakle uzimam istorijske podatke?#
Iz izvora koji daje potrebnu pokrivenost i pravo korišćenja. Uz datoteku sačuvaj poreklo, period, vremensku zonu i način prilagođavanja cena. Kvalitet se proverava na samim podacima.
Šta je walk-forward optimizacija?#
Postupak u kome se parametri biraju na jednom vremenskom prozoru i ispituju na narednom. Prozor se pomera prema unapred određenom planu, uz odvojeno čuvanje rezultata procene.
Upozorenje o riziku: Trgovanje na finansijskim tržištima nosi visok rizik. Ovaj sadržaj je edukativan, nije investicioni savet. Pun disclaimer.
Iskustva pojedinaca, ne garancija budućih rezultata. Trejding nosi rizik gubitka kapitala.



