BUY
BUY i ProBacktest och ProOrder öppnar en long-position. Täcker kvantitetsenheter, ordertyperna AT MARKET, LIMIT och STOP, samt vanliga misstag kring storlek och entry.
Syntax
BUY x SHARES AT MARKETBUY x CONTRACT AT price LIMITBUY x CONTRACT AT price STOPParametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
x | tal | obligatorisk | Orderkvantitet, tolkad genom enheten som följer. |
| enhet | SHARES, CONTRACT, LOT, CASH | obligatorisk | Storleksenhet. CASH anger ett belopp i kontovaluta i stället för ett antal enheter. |
| ordertyp | AT MARKET, AT price LIMIT, AT price STOP | obligatorisk | Omedelbar exekvering till aktuellt pris, eller en vilande order på en angiven nivå. |
Så fungerar det
BUY lägger en long entryorder. Med AT MARKET, fylls ordern till nästa tillgängliga pris. Med AT price LIMIT, väntar en liggande order på att köpa på den angivna nivån eller bättre, under det aktuella priset. Med AT price STOP, köper en väntande order när priset stiger genom den angivna nivån, den vanliga formen för breakout-entries.
Kvantitetsenheten måste matcha instrumentet: SHARES för aktier, CONTRACT för futures och CFD:er, LOT för forex, och CASH för att storleksbestämma ordern som ett belopp i kontovalutan. Positionsuppbyggnad styrs av CumulateOrders. När den är aktiverad, vilket är standard, staplas upprepade BUY-order till en större position; med DEFPARAM CumulateOrders = false, ett nytt BUY när du redan är long ignoreras.
Entryer omsluts normalt av en positionsstatuskontroll som IF NOT LongOnMarket THEN eller IF NOT OnMarket THEN, så ordrar utlöses bara när strategin avser att hålla en ny position.
Exempel
Exempel 1, Villkorad marknadsentry (ProBacktest)
// Enter long at market when flat and the entry conditions hold
IF NOT LongOnMarket AND LongConditions THEN
BUY 1 SHARES AT MARKET
ENDIFEn aktie köps till aktuellt marknadspris, men bara när ingen long-position redan är öppen. Detta är exemplet från den officiella referensen.
Exempel 2, Breakout-entry med en vilande stoporder (ProOrder)
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
ENDIFDen vilande stopordern ligger ovanför marknaden och fylls bara om priset handlas upp genom föregående 20-barers högsta.
Exempel 3, Entry storleksatt i CASH med ett trendfilter (ProOrder)
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
ENDIFCASH sizing håller exponeringen konstant i valutatermer över instrument med olika priser, istället för att låsa ett antal enheter.
Vanliga fel och fallgropar
- Oavsiktlig pyramidering.
CumulateOrdersär aktiverad som standard, så ett entryvillkor som förblir true under flera barer staplar en ny BUY på var och en av dem. Antingen sättDEFPARAM CumulateOrders = falseeller skydda entryn medNOT LongOnMarket. - Väntande ordrar upphör att gälla efter en bar. A
LIMITellerSTOPorder som inte fylls på nästa bar avbryts. Ihållande väntande entryer måste skickas in på nytt varje bar så länge uppsättningen är giltig. - Fel enhet för instrumentet.
SHARESpå ett forexpar ellerLOTpå en aktie ger inte den avsedda orderstorleken. Matcha enheten mot marknaden, eller användCASHför en storlek angiven i valuta. - BUY som exit ur en short. Att stänga en short-position är EXITSHORT:s uppgift. Ett BUY med större storlek än den öppna shorten vänder positionen i stället för att bara stänga den, vilket sällan är det avsedda beteendet.
Relaterade instruktioner
SELL, stänger en long-position.SELLSHORT, öppnar en short-position.EXITSHORT, stänger en short-position.MARKET, omedelbar exekvering till aktuellt pris.LIMIT, väntande order till angivet pris eller bättre.STOP, väntande order som utlöses när priset korsar en nivå.CONTRACT, kvantitetsenhet för futures och CFD:er.SHARES, kvantitetsenhet för aktier.LOT, kvantitetsenhet för forex.CASH, storleksätter en order i kontovalutan.ONMARKET, sant så länge någon position är öppen.CumulateOrders, styr om upprepade entries staplas.