Rejoignez-nous
ProBacktest/probacktest · proorder

MINORDER

MINORDER est un réglage DEFPARAM dans ProBacktest et ProOrder qui fixe la plus petite taille d'ordre exécutée. Les ordres inférieurs au seuil sont entièrement ignorés.

Syntaxe

probuilder
DEFPARAM MINORDER = value

Paramètres

NomTypePar défautDescription
valuenumériqueaucunPlus petit nombre d'unités, de contrats ou de lots pouvant être exécuté dans un seul ordre.

Comment ça marche

DEFPARAM instructions configurent l'environnement d'exécution et doivent figurer en haut de la stratégie, avant toute instruction exécutable. MINORDER fixe un plancher sur la taille d'ordre : tout ordre dont la quantité tombe sous la valeur configurée est abandonné au lieu d'être exécuté.

Le réglage existe par souci de réalisme. Beaucoup d'instruments imposent une taille minimale négociable, un lot sur un compte Forex, un contrat sur un future, une mise minimale sur un CFD. Une formule de dimensionnement qui divise le capital par le prix peut produire des quantités fractionnaires ou très petites qu'aucun broker n'accepterait. MINORDER filtre ces ordres pour que la simulation ne contienne que des trades qui pourraient exister en pratique.

Contrairement à MAXORDER, qui ramène les ordres trop grands au plafond, MINORDER n'arrondit pas à la hausse un ordre de taille insuffisante. L'ordre n'est simplement pas envoyé. Une stratégie dont la taille calculée reste sous le seuil n'entre donc jamais sur le marché, ce qui constitue en soi un diagnostic utile : cela révèle que le capital ou la formule de dimensionnement est insuffisant pour l'instrument.

Exemples

Exemple 1, Imposer un minimum d'une unité (ProBacktest)

probuilder
// orders below 1 unit are not executed
DEFPARAM MINORDER = 1

IF NOT OnMarket AND close crosses over Average[50](close) THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

La configuration de base issue de la référence. Tout ordre d'au moins un contrat passe, tout ce qui est plus petit serait rejeté.

Exemple 2, Dimensionnement basé sur le cash pouvant passer sous le plancher (ProBacktest)

probuilder
DEFPARAM MINORDER = 1

// invest a fixed cash slice per trade
capitalPerTrade = 5000
positionsize = FLOOR(capitalPerTrade / close)

IF NOT OnMarket AND RSI[14](close) < 30 THEN
  BUY positionsize SHARES AT MARKET
ENDIF

Lorsque le cours de l'action dépasse 5000, positionsize vaut 0 et l'ordre relève du MINORDER seuil, aucun trade n'a donc lieu. Le filtre empêche les ordres de quantité nulle d'atteindre le moteur.

Exemple 3, Taille de lot minimale sur une stratégie Forex (ProOrder)

probuilder
DEFPARAM MINORDER = 1

long = ExponentialAverage[20](close) crosses over ExponentialAverage[50](close)

IF NOT OnMarket AND long THEN
  BUY 1 LOT AT MARKET
  SET STOP PLOSS 40
ENDIF

IF LongOnMarket AND close < ExponentialAverage[50](close) THEN
  SELL AT MARKET
ENDIF

Le plancher d'ordre minimal reflète le plus petit lot négociable du compte, de sorte que le backtest ne peut pas simuler des positions que le broker refuserait.

Erreurs et pièges courants

  • Les ordres trop petits disparaissent silencieusement. Les ordres en dessous du seuil sont ignorés sans erreur ni entrée de journal. Une stratégie qui ne trade jamais en backtest génère peut-être simplement des quantités inférieures à MINORDER, et non à l'échec de ses conditions d'entrée.
  • Pas d'arrondi au supérieur. MINORDER filtre, il ne relève pas les petits ordres au minimum. Un code qui compte sur le moteur pour faire passer un ordre de 0.4 lot à 1 lot ne se comporte pas comme prévu : l'ordre est abandonné.
  • DEFPARAM placement. Tout DEFPARAM instructions doivent précéder la première ligne exécutable. Un DEFPARAM MINORDER plus loin dans le code, la compilation échoue.
  • Les sorties sont aussi des ordres. Une sortie partielle dont la quantité tombe sous le seuil est elle aussi ignorée, ce qui peut laisser une position ouverte plus longtemps que prévu lors d'une sortie échelonnée avec des quantités calculées.
  • MAXORDER, taille maximale autorisée pour un seul ordre.
  • DEFPARAM, déclare les paramètres d'exécution au niveau de la stratégie.
  • CASH, dimensionnement de la position basé sur un montant en espèces.
  • BUY, ouvre une position long ou la renforce.
  • SELL, clôture tout ou partie d'une position long.
  • LOT, quantité de l'ordre exprimée en lots.
  • CONTRACT, quantité de l'ordre exprimée en contrats.
  • SHARES, quantité de l'ordre exprimée en actions.