Buonasera,
vorrei aiuto per codificare la seguente strategia e farla girare automaticamente su proorder:
Condizione di ingresso : qualsiasi, basta inserire degli ordini stop o limit a livelli prestabiliti di prezzo (esempio voglio comprare un MIB a 24.500, se il prezzo è inferiore il sistema inserirà un ordine stop, se il prezzo è maggiore inserirà un ordine limit)
Una volta entrato a mercato e raggiunto TP o SL vorrei che si ripetesse la condizione sopra in modo da avere un nuovo ordine pendente a 24.500 subito dopo la chiusura della posizione.
Tutto ciò in maniera perpetua fino a che la strategia e attiva su proorder.
Se possibile riunire diversi livelli di prezzo ed ordini BUY e SELL nella stessa strategia sarebbe meglio, altrimenti posso lanciarne più di una.
Grazie per l’aiuto.
Scusate ho sbagliato lingua del forum, ho ripubblicato in italiano.
Per favore non duplicare i tuoi post, ne ho già cancellati 3!
Grazie 🙂
Eccolo:
$Prezzo[1] = 26000
$Prezzo[2] = 25500
$Prezzo[3] = 25000
$Prezzo[4] = 24500
$Prezzo[5] = 24000
IF Not OnMarket THEN
FOR i = 1 TO 5
IF close > $Prezzo[i] THEN
BUY 1 CONTRACT AT $Prezzo[i] LIMIT
ELSE
BUY 1 CONTRACT AT $Prezzo[i] STOP
ENDIF
NEXT
ENDIF
SET TARGET pPROFIT 750
SET STOP pLOSS 250
Grazie Roberto,
vorrei però che ogni livello sia indipendente dall’altro, cioè rimane in posizione al primo livello che incontra fino a TP o SL e non apre ulteriori posizioni a quel livello fino a quando non è chiusa la prima.
Se però nel suo andamento incontra il livello 2 apre una nuova posizione con i relativi TP e SL e mantiene la posizione del livello 2 fino alla chiusura.
Quindi in teoria usando stop loss larghi posso incrociare altri livelli dove aprire posizioni.
Secondo te è possibile riunire il tutto nella stessa strategia?
Ciao.
Hai scritto “vorrei però che ogni livello sia indipendente dall’altro, cioè rimane in posizione al primo livello che incontra fino a TP o SL e non apre ulteriori posizioni a quel livello fino a quando non è chiusa la prima“, però dopo scrivi “Se però nel suo andamento incontra il livello 2 apre una nuova posizione con i relativi TP e SL e mantiene la posizione del livello 2 fino alla chiusura“.
Se incontra un altro livello cosa deve fare, chiudere il precedente ed aprirne uno nuovo, oppure accumulare le posizioni?
Al massimo una per ogni livello.
Va bene, ma non so se ce la farò prima di Pasqua.
Roberto, nel nuovo codice possiamo prevedere la eventuale possibilità di differenziare target e stop per ogni livello?
L idea è quella di diminuire i pips del traget e dello stop sui livelli più lontani rispetto al prezzo nel momento che lancio il sistema ad inizio settimana.
Grazie.
E’ piuttosto complesso, perché non si può sapere con precisione a quale livello è entrato.
Lo farò nei momenti liberi.
Per TP e SL, non è possibile differenziarlo per i singoli livelli, quando vengono variati lo sono per tutti.
Scusami per il ritardo, ma non è stato facilissimo trovare una soluzione (seppure PARZIALE).
Non è possibile, come ti avevo già accennato, sapere a quale livello si è entrati quando si piazzano vari ordini pendenti, e neppure sapere esattamente quando un ordine è uscito quanto si accumulano più posizioni.
Per cui ti ho scritto questa strategia, ma usando l’entrata a mercato, non con ordini pendenti:
DEFPARAM CumulateOrders = True
ONCE $Prezzo[1] = 34000
ONCE $Prezzo[2] = 33500
ONCE $Prezzo[3] = 33000
ONCE $Prezzo[4] = 32500
ONCE $Prezzo[5] = 32000
ONCE $Entrata[1] = 0
ONCE $Entrata[2] = 0
ONCE $Entrata[3] = 0
ONCE $Entrata[4] = 0
ONCE $Entrata[5] = 0
//
// azzerare i segnali dei livelli d'entrata quando non si è a mercato
//
IF Not OnMarket THEN
FOR i = 1 TO 5
$Entrata[i] = 0
NEXT
ENDIF
//
// verificare se c'è stata un uscita (che sia stato per SL o TP)
//
Pozizioni = abs(CountOfPosition)
FOR i = 1 TO 5
IF ((low <= $Prezzo[i]) OR (high >= $Prezzo[i])) AND ($Entrata[i] = 1) AND (Pozizioni <> Pozizioni[1]) AND OnMarket THEN
$Entrata[i] = 0
ENDIF
NEXT
//
// entrare a mercato
//
FOR i = 1 TO 5
IF (close >= $Prezzo[i]) AND (close[1] <= $Prezzo[i]) AND ($Entrata[i] = 0) THEN
BUY 1 CONTRACT AT Market
$Entrata[i] = 1
ENDIF
NEXT
//
// SL & TP
SET STOP pLOSS 500
SET TARGET pPROFIT 1500