Una vegada preparades les dades ja podem fer la simulació de l’estratègia amb tot l’històric disponible a la nostra base de dades. Això ho he fet a la funció backtest_strategy que té aquests arguments:
- strategy_name: nom de l’estratègia.
- symbol: parell al qual s’aplica l’estratègia.
- timeframe: finestra temporal de l’estratègia.
- initial_capital: capital inicial.
- leverage: apalancament del compte. Per exemple, 1:1 vol dir que únicament podem invertir el capital que tenim, mentre que si és 1:10 podem invertir 10 vegades el nostre capital.
- path_root: directori principal del projecte.
La funció té la següent estructura:
- Carrega els paràmetres fixos del sistema.
- Obté informació del parell com el lot màxim i mínim permès pel parell, els dígits, l’spread, i el swap per operacions llargues i curtes.
- Obté els paràmetres dinàmics de l’estratègia i prepara les dades per iniciar la simulació.
- Itera minut a minut des de l’any 2000 fins l’actualitat. Cada minut mira si ha d’obrir o tancar una operació i genera una taula amb totes les operacions realitzades. En aquesta part, hem d’anar amb compte amb el nombre d’operacions obertes degut al paràmetre MaxOpenTrades. Al tancar l’operació calculem el swap amb la funció calculate_swap.
En el cas hipotètic que en el mateix minut es prengui l’stop loss i el take profit, sempre donem preferència al pitjor escenari, és a dir, considerarem que s’executa l’stop loss assumint les pèrdues ocasionades.
La funció té la següent estructura:
- Carrega els paràmetres fixos del sistema.
- Obté informació del parell com el lot màxim i mínim permès pel parell, els dígits, l’spread, i el swap per operacions llargues i curtes.
- Obté els paràmetres dinàmics de l’estratègia i prepara les dades per iniciar la simulació.
- Itera minut a minut des de l’any 2000 fins l’actualitat. Cada minut mira si ha d’obrir o tancar una operació i genera una taula amb totes les operacions realitzades. En aquesta part, hem d’anar amb compte amb el nombre d’operacions obertes i al tancar l’operació calculem el swap amb la funció calculate_swap.
En el cas hipotètic que en el mateix minut es prengui l’stop loss i el take profit, sempre donem preferència al pitjor escenari, és a dir, considerarem que s’executa l’stop loss assumint les pèrdues ocasionades.
Aquesta funció retorna el llibre d’operacions, amb totes les operacions realitzades a la simulació.
