Generalmente si usa DEFPARAM CUMULATEORDERS=FALSE per essere sicuri di non aprire posizioni multiple indesiderate.
Ma non è obbligatorio, se si scrive il codice con un pò di attenzione NON è comunque possibile aprire posizioni indesiderate. Diciamo che è sicuramente un grosso aiuto per chi inizia con la programmazione nel linguaggio ProRealTime e deve acquisire pratica con le istruzioni disponibili.
Se si verifica, ogni volta, se siamo già a mercato o meno, ecco che quella riga non serve.
Se si usa quella riga suddetta NON si possono aprire/aggiungere ulteriori posizioni se ce n’è una già aperta, indipendentemente che si provi ad aprirle lo stesso giorno o in giorni diversi.
Basta NON scrivere la riga di cui sopra (oppure scriverla così: DEFPARAM CUMULATEORDERS=TRUE, ma viene assunta per difetto) e si ha la libertà di aggiungere o NON aggiungere altre posizioni a piacimento.
Per essere sicuri di NON aprire più di una posizione occorre scrivere:
IF MieCondizioniLong AND Not OnMarket THEN
BUY 1 Contract at Market
ENDIF
Se, invece, si vuole acquistare o aggiungere un’altra posizione, basta togliere AND NOT ONMARKET.
Quanto a Lunedì o Martedì, non ho capito bene cosa tu intenda, una volta abilitate più posizioni, puoi aggiungerle quando vuoi, che sia lo stesso giorno o in giorni diversi.
Se vuoi, al massimo, entrare con 3 posizioni basta che verifichi di non averle già aperte tutte e tre:
IF MieCondizioniLong AND abs(CountOfPosition) < 3 THEN
BUY 1 Contract at Market
ENDIF
CountOfPosition restituisce il numero di posizioni attualmente aperte, con un numero positivo se sono LONG, oppurte negativo se sono SHORT. Proprio per questo ho usato ABS(), in modo da avere sempre un valore positivo, tanto non possono esserci aperte contemporaneamente posizioni contrarie (se lo fai ottieni lo Stop & Reverse, viene chiusa quella in corso e ne viene aperte una opposta).