Buongiorno, in un sistema su DAX a 5 min ho inserito un filtro di controllo sulla close delle 22.00. In pratica il sistema apre posizioni se la chiusura delle 22.00 del giorno precedente è inferiore alla chiusura delle 22.00 del giorno prima ancora.
Ho provato a codificare così ma è evidentemente errato perché il sistema non apre nessuna operazione. Qual è il modo corretto? Grazie
If time = 220000 then
ChiusuraGiornata = close
endif
FiltroTrend = ChiusuraGiornata[0] < ChiusuraGiornata[1]
Su un TF a 5 minuti la riga 4 controlla la chiusura delle 22:00 con quella delle 21:55.
Per riferirti alla chiusura daily devi usare DCLOSE(0) e DCLOSE(1), usando le parentesi tonde.
Se metto DCLOSE al posto di close non apre lo stesso nessun operazione. Se confronto le DCLOSE (0) e (1) non ottengo quello mi serve perché la DCLOSE corrisponde al prezzo alle 00.00. Mi occorre confrontare tra loro i prezzi delle ore 22.00 dei diversi giorni.
Per sapere perché non ti apre posizioni occorre il codice completo.
Per avere il prezzo delle 22 del giorno precedente occorre salvarlo in una variabile da confrontare il giorno dopo, appena prima di essere aggiornata:
Once close22 = 0
If time = 220000 Then
If close < close22 Then
Buy 1 contract at market
Endif
close22 = close
Endif
If time >= 110000 and time <= 130000 and CondizioneLong then
buy at market
set stop ploss 200
set target pprofit 120
endif
If time = 214500 then
sell at market
endif
Il codice è questo, se tra le 1100 e le 1300 è verificata una condizione entra in posizione. Vorrei aggiungere quel filtro, cioè se la quotazione delle 22.00 del giorno prima è inferiore alla quotazione delle 22.00 del giorno prima ancora
Mi pare che il tuo codice debba aprire posizioni lunghe, se le condizioni sono verificate.
Non capisco perché non te le apra, hai verificato quelle condizioni sul grafico?
Così come lo vedi il codice funziona, è il sistema di base. Tentavo di aggiungere il controllo delle 22.00 del giorno prima usando il primo codice che ho postato e non apre nulla. Come inserisco il codice che mi ha postato tu?
Non l’ho provato:
Once close22 = 0
If time = 220000 Then
If close < close22 Then
CondizioneLong = true
else
CondizioneLong = false
Endif
close22 = close
Endif
If time >= 110000 and time <= 130000 and CondizioneLong then
buy at market
set stop ploss 200
set target pprofit 120
endif
If time = 214500 then
sell at market
endif
Ovviamente a CondizioneLong potrai aggiungere le ulteriori condizioni che vorrai.
Perdonami, ma non va. In questo caso non ha nessun effetto, con o senza fa le stesse operazioni. Leggendo il codice tra l’altro non capisco come confronti la close alle 22.00 del giorno [0] con la close delle 22.00 del giorno [1]
Alla riga 3 fa il confronto, la prima voltya è 0, quindi falso, poi alla riga 8 setta il nuovo valore da confrontare all’indomani sera.
Assegna alla variabile che ho usato io un altro nome magari, per non creare problemi.
Verifica anche che le tue condizioni vadano bene.
Utilizza GRAPH per verificare tutte le variabili, in tal modo scoprirai dov’è l’errore.
Scusami, non ti dava errore?
Ho visto che non vuole TRUE e FALSE, ove c’è TRUE metti 1 e dove c’è FALSE metti 0.
A me questo apre le operazioni correttamente (in base alla chiusura e alla media che ho indicato) sul DAX a 5 minuti:
Once close22 = 0
If time = 220000 Then
If close < close22 Then
CondizioneLong = 1
else
CondizioneLong = 0
Endif
close22 = close
Endif
If time >= 110000 and time <= 130000 and CondizioneLong AND close > Average[100] then
buy at market
set stop ploss 200
set target pprofit 120
endif
If time = 214500 then
sell at market
endif
graph close22
graph close
graph time
Scusami, non ti dava errore?
Ho visto che non vuole TRUE e FALSE, ove c’è TRUE metti 1 e dove c’è FALSE metti 0.
Sì me ne ero accorto e allora non te l’ho scritto
A me questo apre le operazioni correttamente (in base alla chiusura e alla media che ho indicato) sul DAX a 5 minuti:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Once close22 = 0
If time = 220000 Then
If close < close22 Then
CondizioneLong= 1
else
CondizioneLong= 0
Endif
close22= close
Endif
If time >= 110000 and time <= 130000 and CondizioneLong AND close > Average[100] then
buy at market
set stop ploss 200
set target pprofit 120
endif
If time = 214500 then
sell at market
endif
graph close22
graph close
graph time
|
Sì questo è ok, ho fatto casino nell’aggiungere le condizioni. Grazie, ottimo!