PRELOADBARS
PRELOADBARS est un paramètre DEFPARAM qui définit combien de barres historiques ProBacktest et ProOrder chargent avant le démarrage d'une stratégie, afin que les indicateurs soient exacts dès le début.
Syntaxe
DEFPARAM PRELOADBARS = number_of_barsParamètres
| Nom | Type | Par défaut | Description |
|---|---|---|---|
number_of_bars | entier | valeur par défaut de la plateforme | Nombre de barres historiques chargées avant la première barre sur laquelle la stratégie s'exécute. Dimensionnez-le sur la plus longue période de calcul utilisée par un indicateur du code. |
Comment ça marche
PRELOADBARS est l'un des paramètres acceptés par l'instruction DEFPARAM, aux côtés de réglages tels que CUMULATEORDERS, FLATAFTER, FLATBEFORE, et NOCASHUPDATE. Comme toute ligne DEFPARAM, elle doit figurer en tête du code, avant toute autre instruction, et elle est évaluée une seule fois au démarrage plutôt que sur chaque bar.
Son rôle est le préchauffage des indicateurs. Une moyenne mobile à 100 bars a besoin de 100 clôtures passées avant de produire une valeur stable. Sans historique préchargé suffisant, les lectures d'indicateurs sur les premiers bars d'un backtest ou d'une exécution en direct sont calculées sur une série tronquée, ce qui peut différer des valeurs affichées sur le graphique et déclencher de faux signaux. Précharger n bars donne à chaque indicateur jusqu'à n barres de contexte avant la première décision de trading, sans générer d'ordres sur ces barres historiques.
Le dimensionnement de la valeur est un compromis. Elle doit dépasser confortablement la plus longue période de calcul du code, y compris les périodes imbriquées comme une moyenne d'une moyenne, mais des préchargements surdimensionnés augmentent l'utilisation de la mémoire et le temps de démarrage. Une règle courante est la plus longue période plus une marge de 25 à 50 pour cent.
Exemples
Exemple 1, Préchauffage d'une moyenne mobile à 100 barres (ProOrder)
// Preload 150 bars so the 100 bar average is valid from the first decision
DEFPARAM PRELOADBARS = 150
myMA = average[100](close)
IF NOT ShortOnMarket AND close[1] < myMA[1] THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
SET STOP %TRAILING 2La moyenne à 100 barres nécessite 100 clôtures, donc précharger 150 barres garantit des valeurs correctes dès la première barre exécutée par la stratégie. Il s'agit de l'exemple de référence de la documentation source avec des commentaires réécrits.
Exemple 2, Breakout sur un canal de 200 barres (ProBacktest)
// Preload enough history for the 200 bar channel
DEFPARAM PRELOADBARS = 250
upperBand = highest[200](high[1])
IF NOT onmarket AND close > upperBand THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
SET STOP %TRAILING 1.5Sans le préchargement, le plus haut sur 200 barres serait calculé à partir de moins de barres au début du test, faisant se déclencher les premiers signaux de breakout sur un canal artificiellement bas.
Exemple 3, Combinaison de plusieurs réglages DEFPARAM (ProOrder)
// All DEFPARAM lines must precede any other instruction
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM PRELOADBARS = 500
slowMA = average[200](close)
fastMA = average[50](close)
IF NOT onmarket AND fastMA CROSSES OVER slowMA THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
IF longonmarket AND fastMA CROSSES UNDER slowMA THEN
SELL AT MARKET
ENDIFPRELOADBARS se place avec les autres déclarations DEFPARAM en haut du fichier. Le préchargement de 500 barres couvre la moyenne à 200 barres avec une large marge.
Erreurs et pièges courants
- DEFPARAM placement. Toutes les lignes DEFPARAM, y compris PRELOADBARS, doivent précéder toute autre instruction. Un DEFPARAM placé après la première instruction normale ne compile pas.
- Préchargement plus petit que la période de calcul. Si la valeur est inférieure à la plus longue période d'indicateur, les premiers signaux sont calculés sur des données tronquées et peuvent ne pas correspondre aux valeurs du graphique. Les entrées de backtest près du début du test en sont le symptôme habituel.
- Périodes imbriquées cachées. Un
average[50]d'unaverage[100]a en pratique besoin d'environ 150 barres. Dimensionnez le préchargement selon la profondeur cumulée, et non selon la seule période la plus longue. - Limité par l'historique disponible. La plateforme ne peut précharger que les barres qui existent dans le flux de données pour l'unité de temps choisie. Demander plus que ce qui est disponible donne moins de barres préchargées, donc des périodes de calcul très longues sur des unités de temps élevées peuvent tout de même démarrer partiellement préchauffées.
Instructions liées
DEFPARAM, l'instruction dont PRELOADBARS est un paramètre.CumulateOrders, paramètre DEFPARAM contrôlant l'accumulation des ordres.FLATAFTER, paramètre DEFPARAM forçant une position plate après une heure donnée.FLATBEFORE, paramètre DEFPARAM bloquant les positions avant une heure donnée.NOCASHUPDATE, paramètre DEFPARAM gelant le capital entre les trades.Average, moyenne mobile dont la période de calcul détermine la taille du préchargement.BarIndex, compte les barres depuis le début des données chargées.ONCE, initialise une variable une seule fois au démarrage.