Salve, chiedo un aiuto per correggere lo script di seguito, che nel test non applica il Target Profit ma chiude la posizione al primo piccolissimo utile (ha funzionato correttamente solo al primo test con timing 15 secondi, poi non più):
ONCE SL = 50*PipSize
ONCE TP = 200*Pipsize
PrezzoEntrata = 28500
// Condizioni per entrare su posizioni long
C1 = (NOT ONMARKET AND close<PrezzoEntrata)
IF C1 THEN
BUY 1 Contract AT PrezzoEntrata STOP
ENDIF
// Condizioni per uscire da posizione long
C2 = (LONGONMARKET AND Close>PrezzoEntrata)
IF C2 THEN
SELL 1 Contract AT PrezzoEntrata LIMIT
ENDIF
SET STOP PLOSS SL
SET TARGET PPROFIT TP
JSParticipant
Master
Nel codice viene inserito un Sell Limit al prezzo di EntryPrice…
Quando il prezzo di mercato raggiunge o supera questo livello, il Sell Limit può chiudere la posizione long esistente. Di conseguenza, la posizione non ha la possibilità di proseguire fino al Target Profit impostato…
La soluzione è quindi semplice:
- Lasciare che la posizione venga aperta tramite il Buy Stop.
- Successivamente, lasciare che la posizione venga gestita esclusivamente dallo Stop Loss e dal Target Profitimpostati.
- Eliminare completamente la logica del Sell Limit dal codice.
In breve: eliminare completamente il “Sell Limit”. In questo modo saranno lo Stop Loss e il Target Profit impostati a gestire correttamente la chiusura della posizione, evitando che il Target Profit venga aggirato o anticipato dal Sell Limit.
La parte seguente del codice deve quindi essere completamente eliminata:
C2 = (LONGONMARKET AND Close>EntryPrice)
IF C2 THEN
SELL 1 Contract AT EntryPrice LIMIT
ENDIF
JSParticipant
Master
Il motivo per cui i tuoi profitti erano così piccoli è che, quando utilizzi un “Sell Limit”, se il prezzo di mercato si trova al di sopra del prezzo limite, l’ordine può essere eseguito e la posizione viene chiusa immediatamente, generando un piccolo profitto…
Ah capisco, infatti ora funziona.
Ma non c’è un modo per far inserire lo stop loss solo dopo che il valore si è allontanato dal “Sell limit”?
Infatti il motivo di quella condizione era proprio di evitare che la posizione, dopo aver raggiunto quasi persino il target, finisca poi per subire addirittura uno stop a -50.
Grazie infinite per l’assistenza.
Giuseppe
JSParticipant
Master
Capisco la tua frustrazione…
Una possibilità per evitare questo problema è utilizzare un trailing stop, eventualmente in combinazione con una funzione di “break-even”…
Puoi trovare molte informazioni al riguardo nei “Code Snippets”:
Services & Features → Code Snippets → Trailing Stop
Puoi anche chiedere a “ProRealAI” di aggiungere un trailing stop al tuo algo…