Rejoignez-nous
ProBacktest/probacktest · proorder

BUY

BUY dans ProBacktest et ProOrder ouvre une position long. Couvre les unités de quantité, les types d'ordre AT MARKET, LIMIT et STOP, ainsi que les erreurs courantes de dimensionnement et d'entrée.

Syntaxe

probuilder
BUY x SHARES AT MARKET
probuilder
BUY x CONTRACT AT price LIMIT
probuilder
BUY x CONTRACT AT price STOP

Paramètres

NomTypePar défautDescription
xnombrerequisQuantité de l'ordre, interprétée selon l'unité qui suit.
unitéSHARES, CONTRACT, LOT, CASHrequisUnité de taille. CASH indique un montant en devise du compte au lieu d'un nombre d'unités.
type d'ordreAT MARKET, AT price LIMIT, AT price STOPrequisExécution immédiate au prix actuel, ou ordre en attente à un niveau indiqué.

Comment ça marche

BUY place un ordre d'entrée long. Avec AT MARKET, l'ordre est exécuté au prochain prix disponible. Avec AT price LIMIT, un ordre en attente attend d'acheter au niveau indiqué ou meilleur, en dessous du prix actuel. Avec AT price STOP, un ordre en attente achète dès que le prix franchit à la hausse le niveau indiqué, la forme habituelle pour les entrées en breakout.

L'unité de quantité doit correspondre à l'instrument : SHARES pour les actions, CONTRACT pour les futures et les CFD, LOT pour le forex, et CASH pour dimensionner l'ordre en montant de la devise du compte. L'accumulation de position est régie par CumulateOrders. Lorsqu'il est activé, ce qui est le cas par défaut, les ordres BUY répétés s'empilent en une position plus grande ; avec DEFPARAM CumulateOrders = false, un nouveau BUY alors que la position est déjà long est ignoré.

Les entrées sont normalement encadrées par un garde d'état de position tel que IF NOT LongOnMarket THEN ou IF NOT OnMarket THEN, de sorte que les ordres ne se déclenchent que lorsque la stratégie compte détenir une nouvelle position.

Exemples

Exemple 1, Entrée au marché conditionnelle (ProBacktest)

probuilder
// Enter long at market when flat and the entry conditions hold
IF NOT LongOnMarket AND LongConditions THEN
    BUY 1 SHARES AT MARKET
ENDIF

Une action est achetée au prix du marché actuel, mais uniquement lorsqu'aucune position long n'est déjà ouverte. C'est l'exemple de la référence officielle.

Exemple 2, Entrée en breakout avec un ordre stop en attente (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Buy a break of the 20-bar high
entryLevel = Highest[20](high)

IF NOT onmarket THEN
  BUY 1 CONTRACT AT entryLevel STOP
ENDIF

L'ordre stop en attente se place au-dessus du marché et n'est exécuté que si le prix franchit à la hausse le plus haut des 20 bars précédents.

Exemple 3, Entrée dimensionnée en cash avec un filtre de tendance (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Size the position as 5000 units of account currency
IF NOT onmarket AND close > Average[50](close) THEN
  BUY 5000 CASH AT MARKET
ENDIF

// Exit when price loses the average
IF longonmarket AND close < Average[50](close) THEN
  SELL AT MARKET
ENDIF

CASH dimensionnement maintient l'exposition constante en valeur monétaire sur des instruments de prix différents, au lieu de fixer un nombre d'unités.

Erreurs et pièges courants

  • Pyramidage involontaire. CumulateOrders est activé par défaut, donc une condition d'entrée qui reste vraie pendant plusieurs bars empile un nouveau BUY sur chacune d'elles. Soit définissez DEFPARAM CumulateOrders = false ou protéger l'entrée avec NOT LongOnMarket.
  • Les ordres en attente expirent après un bar. A LIMIT ou STOP ordre qui n'est pas exécuté sur le bar suivant est annulé. Les entrées en attente persistantes doivent être resoumises à chaque bar tant que le setup reste valide.
  • Mauvaise unité pour l'instrument. SHARES sur une paire forex ou LOT sur une action ne dimensionne pas l'ordre comme prévu. Adaptez l'unité au marché, ou utilisez CASH pour une taille exprimée en devise.
  • BUY comme sortie de short. Clôturer une position short est le rôle d'EXITSHORT. Un BUY d'une taille supérieure au short ouvert inverse la position au lieu de simplement la clôturer, ce qui est rarement le comportement souhaité.
  • SELL, clôture une position long.
  • SELLSHORT, ouvre une position short.
  • EXITSHORT, clôture une position short.
  • MARKET, exécution immédiate au prix courant.
  • LIMIT, ordre en attente à un prix indiqué ou meilleur.
  • STOP, ordre en attente déclenché lorsque le prix franchit un niveau.
  • CONTRACT, unité de quantité pour les futures et les CFD.
  • SHARES, unité de quantité pour les actions.
  • LOT, unité de quantité pour le forex.
  • CASH, dimensionne un ordre dans la devise du compte.
  • ONMARKET, vrai tant qu'une position est ouverte.
  • CumulateOrders, contrôle si les entrées répétées se cumulent.