Els paràmetres fixos de les estratègies es defineixen en un fitxer .json que es troba al directori input/strategies. Cada estratègia té un identificador únic i pot tenir configuracions diferents per a cada símbol i timeframe.
A continuació donem els diferents paràmetres i expliquem el seu significat. Comencem amb els paràmetres generals:
- Name: Nom descriptiu de l’estratègia.
- MagicNumber: Identificador numèric de l’estratègia.
- Description: Breu descripció de l’estratègia.
Cada estratègia es pot aplicar a diferents parells i diferents finestres temporals, però com que tenen característiques diferents, en general aplicarem diferents stop loss, take profit, etc. En conseqüència, la resta de paràmetres seran específics del parell i finestra temporal considerat:
- pairs (clau dins de cada nom): Diccionari amb els símbols (parells de divises) als quals s’aplica l’estratègia.
- TimeFrame (clau dins de cada símbol): Finestra temporal (ex: M1, M15, H1, D1) amb configuració específica.
- NBars: Nombre de barres històriques a utilitzar per al càlcul d’indicadors. Aquest paràmetre és útil per saber quantes dades s’han de carregar en aplicar l’estratègia en temps real.
- DynamicLotSize: Si és true, el lot es calcula en funció del risc; si és false, s’utilitza FixedLotSize.
- EquityPercent: Percentatge del capital a arriscar per operació (només si DynamicLotSize és true).
- FixedLotSize: Mida fixa del lot (només si DynamicLotSize és false).
- MaxOpenTrades: Nombre màxim de posicions obertes simultàniament per a aquest símbol i finestra temporal.
- MaxMinutesOpenTrades: Temps màxim (en minuts) que una operació pot estar oberta.
- MinBetweenTrades: Temps mínim (en minuts) entre operacions consecutives.
- TP_short / TP_long: Take Profit per a posicions curtes/llargues (en pips).
- SL_short / SL_long: Stop Loss per a posicions curtes/llargues (en pips).

Figura 18. Diccionari de paràmetres fixos de les estratègies.
A la figura veiem els paràmetres de l’estratègia “Mitjanes” amb l’identificador 1 que obre posicions llarges quan la EMA18 creua per sobre de la EMA30, i posicions curtes quan la creua per sota. Aquest sistema fa servir 30 barres (Nbars = 30) i gestió del risc (DynamicLotSize = true), arriscant un màxim del 2,5% del capital del compte (EquityPercent = 2,5). Pot obrir un màxim de 10 operacions a la vegada (MaxOpenTrades = 10) i el temps mínim entre operació i operació és de 60 minuts (MinBetweenTrades = 60). A més, quan una operació està oberta més de 720 minuts es tanca automàticament (MaxMinutesOpenTrades = 720). Finalment, el take profit tant d’operacions llargues com curtes és de 50 pips (TP_short = 50 i TP_long = 50) i el stop loss és de 150 pips (SL_long = 150 i SL_short = 150). Podem veure més detalls al notebook d’Estratègies.
4.1.1 Funcions creades per les estratègies
En aquesta part hem creat dues funcions auxiliars, una per calcular la mida del lot en funció del capital que volem arriscar i una altra per carregar tots els paràmetres fixos.
Donat el nom de l’estratègia, el parell i la finestra temporal, la funció load_strategy_parameters, ens retorna el diccionari amb els paràmetres fixos comentats abans.
La funció CalcLotSize permet fer una bona gestió del risc calculant la mida del lot en funció de:
- DynamicLotSize, EquityPercent, StopLoss_pips i FixedLotSize: definits als paràmetres fixos.
- AccountEquity: capital disponible en un moment determinat que donarem a l’hora de fer les simulacions, o que s’obtindrà directament del MT5 en cas d’aplicar l’estratègia en temps real.
- minLotSize: mida mínima de lot que es permesa pel broker (per defecte 0,01).
- maxLotSize: mida màxima de lot que es permesa pel broker (per defecte 5).
Quan DynamicLotSize = False, la funció retorna el valor donat per FixedLotSize. En canvi, si DynamicLotSize = True, llavors calcula el capital màxim a arriscar:
AccountEquity x EquityPercent
i a partir d’aquí ajusta la mida del lot de manera que si s’arriba al stop loss la pèrdua màxima sigui aquesta.
