MINORDER
MINORDER è un'impostazione DEFPARAM in ProBacktest e ProOrder che stabilisce la dimensione minima dell'ordine eseguita. Gli ordini sotto la soglia vengono ignorati completamente.
Sintassi
DEFPARAM MINORDER = valueParametri
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
value | numerico | nessuno | Numero minimo di unità, contratti o lotti che può essere eseguito in un singolo ordine. |
Come funziona
DEFPARAM le istruzioni configurano l'ambiente di esecuzione e devono comparire all'inizio della strategia, prima di qualsiasi istruzione eseguibile. MINORDER imposta un limite minimo alla dimensione dell'ordine: ogni ordine la cui quantità scende sotto il valore configurato viene scartato invece di essere eseguito.
L'impostazione esiste per realismo. Molti strumenti impongono una dimensione minima negoziabile: un lotto su un conto Forex, un contratto su un future, una puntata minima su un CFD. Una formula di dimensionamento che divide il capitale per il prezzo può produrre quantità frazionarie o molto piccole che nessun broker accetterebbe. MINORDER filtra quegli ordini, così la simulazione contiene solo operazioni che potrebbero esistere nella pratica.
A differenza di MAXORDER, che riduce gli ordini sovradimensionati al limite massimo, MINORDER non arrotonda per eccesso un ordine di dimensione insufficiente. L'ordine semplicemente non viene inviato. Una strategia la cui dimensione calcolata resta sotto la soglia non entra quindi mai sul mercato, il che è di per sé una diagnostica utile: rivela che il capitale o la formula di dimensionamento è insufficiente per lo strumento.
Esempi
Esempio 1, Imporre un minimo di una unità (ProBacktest)
// 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
ENDIFLa configurazione di base presa dal riferimento. Ogni ordine di almeno un contratto passa, qualsiasi cosa più piccola verrebbe scartata.
Esempio 2, Sizing basato sulla liquidità che può scendere sotto il limite minimo (ProBacktest)
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
ENDIFQuando il prezzo dell'azione sale sopra 5000, positionsize vale 0 e l'ordine ricade sotto il MINORDER soglia, quindi non viene aperta nessuna operazione. Il filtro impedisce che ordini di quantità zero raggiungano il motore.
Esempio 3, Dimensione minima del lotto su una strategia Forex (ProOrder)
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
ENDIFIl limite minimo di ordine rispecchia il lotto negoziabile più piccolo del conto, così il backtest non può simulare posizioni che il broker rifiuterebbe.
Errori e insidie comuni
- Gli ordini sottodimensionati svaniscono silenziosamente. Gli ordini sotto la soglia vengono ignorati senza errore né voce di log. Una strategia che non opera mai in un backtest può semplicemente generare quantità inferiori a
MINORDER, non il mancato rispetto delle sue condizioni di ingresso. - Nessun arrotondamento per eccesso.
MINORDERfiltra, non porta gli ordini piccoli al minimo. Il codice che si affida al motore per portare un ordine di 0.4 lotti a 1 lotto si comporta in modo diverso dall'atteso, l'ordine viene scartato. DEFPARAMposizionamento. TutteDEFPARAMistruzioni devono precedere la prima riga eseguibile. UnDEFPARAM MINORDERpiù in basso il codice non compila.- Anche le uscite sono ordini. Anche un'uscita parziale la cui quantità scende sotto la soglia viene ignorata, cosa che può lasciare una posizione aperta più a lungo del previsto quando si riduce gradualmente con quantità calcolate.
Istruzioni correlate
MAXORDER, dimensione massima consentita per un singolo ordine.DEFPARAM, dichiara i parametri di esecuzione a livello di strategia.CASH, dimensionamento della posizione basato su un importo in contanti.BUY, apre o incrementa una posizione long.SELL, chiude parzialmente o totalmente una posizione long.LOT, quantità dell'ordine espressa in lotti.CONTRACT, quantità dell'ordine espressa in contratti.SHARES, quantità dell'ordine espressa in azioni.