MARKET
MARKET dans ProBacktest et ProOrder exécute les ordres BUY et SELL au prix de marché courant. Les ordres sont exécutés à l'ouverture du bar suivant, sans limite de prix.
Syntaxe
BUY quantity SHARES AT MARKET
SELL quantity SHARES AT MARKETComment ça marche
Chaque instruction d'ordre se termine par un type d'ordre. AT MARKET signifie que l'ordre ne porte aucune condition de prix : il s'exécute au prix que le marché offre au moment de l'exécution. Les alternatives, LIMIT et STOP, créez plutôt des ordres en attente qui attendent un niveau de prix précis.
Comme le code de stratégie s'exécute une fois par bar à la clôture, un ordre au marché généré sur un bar est transmis et exécuté à l'ouverture du bar suivant. ProBacktest modélise cela en exécutant au prix d'ouverture du bar suivant. En ProOrder en réel, l'ordre parvient au broker à ce moment et est exécuté au meilleur prix disponible, qui peut différer du prix d'ouverture affiché sur les marchés rapides ou peu liquides.
Un ordre au marché échange la certitude d'exécution contre l'incertitude du prix. Il convient aux signaux où être dans le trade compte plus que le niveau exact, comme les entrées de suivi de tendance ou les sorties forcées. Quand le niveau d'entrée fait lui-même partie de l'edge, un ordre en attente LIMIT ou STOP ordre exprime mieux cette intention.
AT MARKET se combine avec tous les verbes d'ordre : BUY et SELLSHORT pour ouvrir des positions, SELL et EXITSHORT pour les clôturer.
Exemples
Exemple 1, Achat immédiat de dix actions (ProBacktest)
// enter when price closes above the 50-bar average
IF NOT OnMarket AND close > Average[50](close) THEN
BUY 10 SHARES AT MARKET
ENDIFHors position et si la condition est vraie à la clôture du bar, un ordre de dix actions est envoyé et exécuté à l'ouverture du bar suivant au prix en vigueur.
Exemple 2, Sortie forcée d'un short au marché (ProOrder)
// cover the short as soon as momentum turns positive
exitSignal = RSI[14](close) crosses under 30
IF ShortOnMarket AND exitSignal THEN
EXITSHORT AT MARKET
ENDIFL'intégralité de la position short est fermée au marché. Aucune quantité n'est indiquée, la valeur par défaut s'applique donc et toute la position est rachetée.
Exemple 3, Croisement de moyennes mobiles dans les deux sens (ProOrder)
fastMA = Average[20](close)
slowMA = Average[50](close)
IF fastMA crosses over slowMA THEN
IF ShortOnMarket THEN
EXITSHORT AT MARKET
ENDIF
BUY 1 CONTRACT AT MARKET
ENDIF
IF fastMA crosses under slowMA THEN
IF LongOnMarket THEN
SELL AT MARKET
ENDIF
SELLSHORT 1 CONTRACT AT MARKET
ENDIFUn système stop-and-reverse. Chaque croisement ferme toute position opposée et en ouvre une nouvelle, le tout avec des ordres au marché, de sorte que la stratégie est toujours positionnée avec le croisement.
Erreurs et pièges courants
- Les exécutions ont lieu à l'ouverture du bar suivant. La condition est évaluée à la clôture du bar, mais le prix d'exécution est l'ouverture du bar suivant. Un calcul de backtest qui suppose une entrée à la clôture du bar de signal surestime les résultats dès que les bars présentent un gap.
- Aucune garantie de prix. Les ordres au marché garantissent l'exécution, pas le prix. En réel, les exécutions peuvent déraper au-delà du prix d'ouverture du backtest dans des conditions volatiles, de sorte que les résultats en réel se dégradent par rapport à ProBacktest, qui suppose des exécutions parfaites.
SELLetEXITSHORTne sont pas interchangeables.SELL AT MARKETclôture les positions long etEXITSHORT AT MARKETclôture les shorts. Utiliser le mauvais verbe pour le côté ouvert laisse la position inchangée.MARKETn'est pas une instruction autonome. Le mot-clé n'existe que dans une instruction d'ordre, aprèsAT. ÉcrireMARKETseul sur sa ligne ne compile pas.
Instructions liées
BUY, ouvre une position long ou la renforce.SELL, clôture tout ou partie d'une position long.SELLSHORT, ouvre une position short ou la renforce.EXITSHORT, clôture tout ou partie d'une position short.LIMIT, ordre en attente exécuté à un prix défini ou meilleur.STOP, ordre en attente déclenché dès que le prix atteint un niveau.ONMARKET, vrai tant qu'une position est ouverte.LONGONMARKET, vrai tant qu'une position long est ouverte.SHORTONMARKET, vrai tant qu'une position short est ouverte.