Buongiorno,
vorrei che il sistema mi identificasse il gap del lunedì sul Dax, Timeframe 1 ora.Per semplificare faccio solo le istruzioni che riguardano un’apertura in gap up.
Vorrei che identificato il minimo della candela delle 00.00.00 , in giornata , se il prezzo va a fare un breakout del minimo della prima candela , si apra una posizione short.
Qualcosa non funziona perché apre la posizione di martedì!
Oltretutto non chiude le posizioni alle 21.30 come specificato sotto
Dov’è che sbaglio?
Grazie per l’attenzione
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
DEFPARAM Preloadbars = 20000
// Impedisce al sistema di tradare in giorni specifici della settimana
daysForbiddenEntry = OpenDayOfWeek = 2 OR OpenDayOfWeek = 3 OR OpenDayOfWeek = 4 OR OpenDayOfWeek = 5 OR OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
ONCE Tradare = 1
IF IntraDayBarIndex = 0 THEN //alla prima barra del nuovo giorno…
Tradare = 1 //… settarla di nuovo ad 1 per tradare ancora
ENDIF
ONCE Prezzo = 0
if dayofweek=1 and time=010000 then
Prezzo = LOW
ENDIF
c1 = (low – DHigh(1)>10)
iF DAYOFWEEK=1 AND TIME=000000 AND C1 AND NOT DAYSFORBIDDENENTRY AND TRADARE = 1 THEN
SELLSHORT 1 CONTRACT AT Prezzo-7*pipsize Limit
ENDIF
IF OnMarket THEN
Tradare = 0
ENDIF
//
//
IF time = 213000 THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
//
// Stop e target
SET TARGET pPROFIT 40
Per scrivere il codice , utilizza il pulsante <> “insert PRT code”, per rendere il codice più leggibile. Grazie.
Ce ne sono vari di errori.
Non ti chiude le posizioni alle 21:30 perché non usi un TF con una candela che chiuda alle 21:30, se usi un TF ad 1 ora o più, non potrà mai chiudere a quell’ora, usa 30 minuti o 15 o 10 o 1 minuto o 1 secondo e vedrai che funzionerà!
La riga 6 potresti semplificarla con
daysForbiddenEntry = OpenDayOfWeek <> 1
Alla riga 14 è meglio se usi OpenDayOfWeek, anche se dovrebbe funzionare ugualmente.
Alla riga 14 gli dici di prendere nota del minimo ed assegnarlo alla variabile PREZZO alle 010000, mentre alla riga 20 gli dici che vuoi entrare solo se sono le 000000.
Inoltre gli ordini pendenti durano solo un’ora, ad ogni candela, se ti interessano ancora, devi reinserirli, nel tuo caso fino alle 000000 del giorno dopo NON li reinserirà, siccome il giorno dopo è FORBIDDEN, non entrerà mai!
Inoltre, scusami, in quali orari vorresti tradare? Perché il DAX ufficialmente è tradabile dalle 8 alle 22 (UTC+2), mentre IG consente di tradare anche al di fuori di questi orari, ma sai quali sono, perché sennò rischi di mettere riferimenti ad orari, magari con contrattazione IG aperta, ma che hanno poca volatilità se non assente e quindi valgono “poco” in termini di prezzo di riferimento per eventuali breakout o gap.
Ok …fatto le modifiche … per adesso funziona meglio se gli dico “compra” quindi di continuare il trend , ma in qualche modo gli farò capire di entrare short se il prezzo finisce dentro il gap.
Come orari ho messo tutta la giornata , anche la sessione asiatica , è vero che i volumi sono più bassi ma è già capitato che lo chiudesse entro le 8 di mattina.
Adesso analizzo quando e come entra e poi ci risentiamo. Grazie mille
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
DEFPARAM Preloadbars = 20000
// Impedisce al sistema di tradare in giorni specifici della settimana
daysForbiddenEntry = OpenDayOfWeek <> 1
ONCE Tradare = 1
IF IntraDayBarIndex = 0 THEN //alla prima barra del nuovo giorno...
Tradare = 1 //... settarla di nuovo ad 1 per tradare ancora
ENDIF
ONCE Prezzo = 0
if opendayofweek=1 and time=000000 then
Prezzo = LOW
ENDIF
c1 = (low - DHigh(1)>10)
iF OPENDAYOFWEEK=1 AND C1 AND NOT DAYSFORBIDDENENTRY AND TRADARE = 1 THEN
sellshort 1 CONTRACT AT Prezzo-7*pipsize Limit
ENDIF
IF OnMarket THEN
Tradare = 0
ENDIF
//
//
IF time = 220000 THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
//
//TRAILING STOP
TGL =13
TGS= 6
// 30 euro di distanza su contratto dax 5 Euro; il mix 3 ha tgs =24 e fa 120 euro di trailing
if not onmarket then
MAXPRICE = 0
MINPRICE = close
PREZZOUSCITA = 0
ENDIF
if longonmarket then
MAXPRICE = MAX(MAXPRICE,close)
if MAXPRICE-tradeprice(1)>=TGL*pointsize then
PREZZOUSCITA = MAXPRICE-TGL*pointsize
ENDIF
ENDIF
if shortonmarket then
MINPRICE = MIN(MINPRICE,close)
if tradeprice(1)-MINPRICE>=TGS*pointsize then
PREZZOUSCITA = MINPRICE+TGS*pointsize
ENDIF
ENDIF
if onmarket and PREZZOUSCITA>0 then
EXITSHORT AT PREZZOUSCITA STOP
SELL AT PREZZOUSCITA STOP
ENDIF
// Stop e target
//SET TARGET pPROFIT 40
//SET STOP PTRAILING 20
//
Dall’allegato che ho messo si vede che non entra nell’area del gap ; è giusto lo short ma non il momento dell’entrata
È stato migliorato in questo modo: la candela di riferimento è quella dell 010000 . Sono stati introdotti indicatori di prezzo del venerdì ultima candela e lunedì prima candela per vedere meglio cosa fa.
Risultati non soddisfacenti
Non sono sicuro di avere interpretato bene la tua necessità, ad ogni modo ho cambiato la riga 18, ho commentato la 3 (che non ha comunque influenza sul risultato) ed ho spostato la riga 23 all’interno dell’IF..ENDIF, tra la 19 e la 20:
DEFPARAM CumulateOrders = False
//DEFPARAM Preloadbars = 20000
daysForbiddenEntry = OpenDayOfWeek <> 1
ONCE Tradare = 1
IF IntraDayBarIndex = 0 THEN //alla prima barra del nuovo giorno...
Tradare = 1 //... settarla di nuovo ad 1 per tradare ancora
ENDIF
ONCE Prezzo = 0
if opendayofweek=1 and intradaybarindex=0 then//time=000000 then
Prezzo = LOW
c1 = (low - DHigh(1)>10)
ENDIF
IF OPENDAYOFWEEK=1 AND C1 AND NOT DAYSFORBIDDENENTRY AND TRADARE = 1 THEN
sellshort 1 CONTRACT AT Prezzo-7*pipsize Limit
ENDIF
IF OnMarket THEN
Tradare = 0
ENDIF
IF time = 220000 THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
//TRAILING STOP
TGL =13
TGS= 6
// 30 euro di distanza su contratto dax 5 Euro; il mix 3 ha tgs =24 e fa 120 euro di trailing
if not onmarket then
MAXPRICE = 0
MINPRICE = close
PREZZOUSCITA = 0
ENDIF
if longonmarket then
MAXPRICE = MAX(MAXPRICE,close)
if MAXPRICE-tradeprice(1)>=TGL*pointsize then
PREZZOUSCITA = MAXPRICE-TGL*pointsize
ENDIF
ENDIF
if shortonmarket then
MINPRICE = MIN(MINPRICE,close)
if tradeprice(1)-MINPRICE>=TGS*pointsize then
PREZZOUSCITA = MINPRICE+TGS*pointsize
ENDIF
ENDIF
if onmarket and PREZZOUSCITA>0 then
EXITSHORT AT PREZZOUSCITA STOP
SELL AT PREZZOUSCITA STOP
ENDIF
// Stop e target
//SET TARGET pPROFIT 40
//SET STOP PTRAILING 20