Iscriviti ora
ProBacktest/probacktest · proorder

SHORTONMARKET

SHORTONMARKET in ProBacktest e ProOrder è vero mentre una posizione short è aperta. Usalo per proteggere ingressi e uscite short, con esempi svolti.

Sintassi

probuilder
ShortOnMarket

Come funziona

SHORTONMARKET restituisce true mentre la strategia ha una posizione short aperta e false quando non ce l'ha. Viene letto come un semplice booleano, quindi si inserisce direttamente in un IF condizione, solitamente negata con NOT per consentire un nuovo short solo quando non ne è aperto nessuno.

Riporta solo le posizioni short. Per le posizioni long usa LONGONMARKET, e per verificare se è aperta una posizione di qualunque lato usa ONMARKET. Combinare SHORTONMARKET con una condizione di segnale è il modo standard per controllare quando è consentito un ingresso short o un'uscita short.

Esempi

Esempio 1, Proteggere un ingresso short (ProBacktest)

probuilder
// Sell short when MACD crosses below zero, but only if no short is open
myMACD = MACD[12,26,9](close)
short = myMACD CROSSES UNDER 0
IF NOT ShortOnMarket AND short THEN
    SELLSHORT 1 CONTRACT AT MARKET
ENDIF

Questo è il pattern della documentazione ufficiale. NOT ShortOnMarket impedisce alla strategia di accumulare un secondo short mentre uno è già in corso.

Esempio 2, Gestire uno short aperto (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Close the short when price reclaims the 20-period average
IF ShortOnMarket AND close CROSSES OVER Average[20](close) THEN
    EXITSHORT AT MARKET
ENDIF

Il blocco di uscita viene eseguito solo mentre uno short è aperto, quindi il CROSSES OVER la condizione viene verificata solo quando è pertinente.

Esempio 3, Un lato alla volta (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Allow a long only when neither side is open
IF NOT ShortOnMarket AND NOT LongOnMarket AND close CROSSES OVER Average[50](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

Testare entrambi SHORTONMARKET e LONGONMARKET mantiene la strategia flat prima di un nuovo ingresso. NOT OnMarket esprime lo stesso controllo in modo più compatto.

Errori e insidie comuni

  • Solo short. SHORTONMARKET ignora le posizioni long. Una strategia che opera su entrambi i lati necessita di LONGONMARKET anche, oppure ONMARKET per lo stato combinato.
  • Stato, non un conteggio. Indica solo se è aperto uno short, non la sua dimensione. Per le quantità di azioni o contratti usa COUNTOFSHORTSHARES o COUNTOFPOSITION.
  • Timing sullo stesso bar. Uno short aperto e chiuso all'interno di un singolo bar potrebbe non lasciare SHORTONMARKET true come farebbe una posizione su più bar. Per rilevare un'esecuzione sul bar corrente, usa ShortTriggered.
  • Dimenticare il controllo. Omettere NOT ShortOnMarket su un ingresso permette a un segnale persistente di aggiungere short ripetuti, specialmente con CumulateOrders attivato.