Ho risolto con:
//------Open Trading Conditions + Definizione Target
IF NOT ONMARKET AND ShavenH then
SellShort 1 Contracts at market
MyProfitShort = Open
ELSIF NOT ONMARKET AND ShavenB then
Buy 1 Contracts at market
MYProfitLong = Open
ENDIF
//----- Trade Closing Conditions
SET STOP PLOSS 250
IF LONGONMARKET THEN
SELL AT MyProfitLong Limit
ENDIF
IF SHORTONMARKET THEN
BUY AT MyProfitShort Stop
endif
Il punto è che però con il BackTest ho notato ancora un problema. Se io setto Stop Loss a 250 punti, mi aspetto che tutti gli stop loss a valore abbiano il medesimo risultato. E invece ciò non accade. Come è possibile? Ho stop loss che producono perdite diverse, eppure per adesso il sistema è tarato su uno sl a 250 punti. Dove può essere l’errore?
Alla linea 18 hai messo l’istruzione BUY, in questo caso ti esce da Short ed acquista una posizione Long. Se vuoi solo uscire da Short devi usare il comando EXITSHORT (mentre SELL esce da una posizione Long).
Alle linee 14 e 18, sei sicuro che un ordine pendente sia LIMIT e l’altro STOP? Perché se non rispetti i criteri gli ordini non verranno eseguiti o verranno eseguiti in maniera errata o ai prezzi di mercato.
LIMIT si indica quando il prezzo di uscita è migliorativo rispetto a quello corrente (acquisti ad un prezzo minore o vendi ad un prezzo maggiore), STOP quando è peggiorativo (acquisti ad un prezzo maggiore o vendi ad un prezzo minore).
Quindi devi fare una verifica per sapere se è STOP o LIMIT. Inoltre ricorda che IG, come quasi ogni broker, richiede una distanza minima dal prezzo, che può variare da strumento a strumento (ed anche in base alla volatilità del momento). E’ opportuno consultare il sito di IG per saperlo.
Proprio per questi motivi gli ordini pendenti hanno una difficoltà di codifica, perché devi verificare se sono LIMIT o STOP e se rispettano la distanza minima.
Buonasera Roberto
Sto cercando di risolvere per far si che lo script rispetti le condizioni date. Un ultimo aiuto. Vorrei escludere la identificazione del pattern in alcuni orari (del pattern, non dell’esecuzine di eventuali trade come per esempio operazioni di chiusura per posizioni aperte in pending)
Gli orari sono la fascia che va dalle 15,30 alle 15,40 (inclusi) e dalle 21,00 alle 09,15 (inclusi)
Ho scritto il seguente codice ma qualcosa ancora non quadra (la parte dei mesi/giorni invece si):
If (Time >=153000) AND (Time <=154000) OR (Month = 12 AND Day > 15) OR (Month = 8 AND Day >10) OR (Time <=091500 AND Time >= 210000) THEN
NoPattern = 1
ELSE
NoPattern = 0
ENDIF
Suggerimenti?
(Time <=091500 AND Time >= 210000) non va bene, occorre OR al posto di AND.