MAXORDER
MAXORDER è un'impostazione DEFPARAM in ProBacktest e ProOrder che limita la dimensione di qualsiasi singolo ordine. Gli ordini superiori al limite vengono troncati alla dimensione massima.
Sintassi
DEFPARAM MAXORDER = valueParametri
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
value | numerico | nessuno | Numero massimo di unità, contratti o lotti consentiti in un singolo ordine. |
Come funziona
DEFPARAM sono istruzioni che configurano l'ambiente di esecuzione di una strategia e devono comparire all'inizio del codice, prima di qualsiasi istruzione eseguibile. MAXORDER è una di queste impostazioni: definisce un limite massimo sulla quantità di un singolo ordine.
Il limite si applica a livello di ordine, non di posizione. Ogni volta che un'istruzione di ordine produce una quantità superiore al valore configurato, il motore esegue la dimensione massima consentita invece di rifiutare l'ordine. Un ordine dimensionato dinamicamente di 25 contratti con DEFPARAM MAXORDER = 10 viene eseguito come 10 contratti.
Il caso d'uso principale è il realismo. Il position sizing guidato da formule, per esempio dividendo il capitale disponibile per il prezzo, può produrre dimensioni di ordine che nessun broker o mercato assorbirebbe a un unico prezzo. Limitare la dimensione del singolo ordine mantiene un backtest più vicino a condizioni eseguibili e protegge un sistema in tempo reale da una formula di position sizing fuori controllo.
Poiché il limite è per ordine, una strategia che accumula posizioni con DEFPARAM CumulateOrders = true può comunque costruire una posizione totale maggiore di MAXORDER su più ordini.
Esempi
Esempio 1, Limitare la dimensione dell'ordine a dieci unità (ProBacktest)
// no single order may exceed 10 units
DEFPARAM MAXORDER = 10
IF NOT OnMarket AND close crosses over Average[50](close) THEN
BUY 20 CONTRACTS AT MARKET
ENDIFLa strategia richiede 20 contratti, ma il MAXORDER impostazione riduce l'ordine a 10. Il backtest simula quindi la dimensione vincolata, non quella richiesta.
Esempio 2, Proteggere una formula di position sizing basata sul capitale (ProOrder)
DEFPARAM MAXORDER = 5
// size grows with capital but can never exceed 5 contracts per order
positionsize = MAX(1, ROUND(strategyprofit / 10000))
IF NOT OnMarket AND RSI[14](close) < 30 THEN
BUY positionsize CONTRACTS AT MARKET
ENDIFLa formula di sizing scala con il profitto accumulato. MAXORDER agisce come limite massimo rigido, quindi un valore di equity elevato non può spingere un singolo ordine oltre 5 contratti.
Esempio 3, Limite sull'ordine con accumulo di posizione (ProBacktest)
DEFPARAM CumulateOrders = true
DEFPARAM MAXORDER = 2
// add on each pullback to the 20-bar average, 2 contracts at most per order
IF close crosses over Average[20](close) AND CountOfPosition < 6 THEN
BUY 2 CONTRACTS AT MARKET
ENDIFOgni singolo ordine aggiuntivo rispetta il limite di 2 contratti, mentre la posizione accumulata può raggiungere 6 contratti su tre ordini. Il limite vincola gli ordini, non la posizione totale.
Errori e insidie comuni
- Il troncamento è silenzioso. Gli ordini superiori al limite vengono ridotti, non rifiutati, e non viene prodotto alcun avviso. Un backtest può operare silenziosamente con dimensioni minori di quelle indicate dalla formula di position sizing, cosa che distorce le aspettative di profitto se il troncamento passa inosservato.
- Per ordine, non per posizione. Con
CumulateOrdersattivo, diversi ordini limitati possono sommarsi in una posizione molto più grande diMAXORDER. Limitare l'esposizione totale richiede un controllo esplicito suCountOfPositiono equivalente. DEFPARAMposizionamento. TutteDEFPARAMle istruzioni devono precedere la prima riga eseguibile della strategia. UnaDEFPARAM MAXORDERposizionato dopo altro codice non compila.- Non è un limite del broker. L'impostazione limita ciò che la strategia invia, non modella i massimi di borsa o del broker. Gli ordini reali entro
MAXORDERpuò comunque superare i limiti di dimensione del broker.
Istruzioni correlate
MINORDER, dimensione minima dell'ordine eseguita durante un backtest.DEFPARAM, dichiara i parametri di esecuzione a livello di strategia.CumulateOrders, consente a più ordini di accumularsi in un'unica posizione.BUY, apre o incrementa una posizione long.SELLSHORT, apre o incrementa una posizione short.LOT, quantità dell'ordine espressa in lotti.CONTRACT, quantità dell'ordine espressa in contratti.SHARES, quantità dell'ordine espressa in azioni.