Ciao a tutti!
Sapreste indicarmi gentilmente come posso fare in modo che l’autotrading:
1 Mi apra una posizione long quando il prezzo della candela attuale supera il massimo al rialzo della candela precedente (TF 1 minuto)
2 Mi apra una posizione short quando il prezzo della candela attuale supera il minimo al ribasso della candela precedente (TF 1 minuto)
Grazie mille! 🙂
1 Mi apra una posizione long quando il prezzo della candela attuale supera il massimo al rialzo della candela precedente (TF 1 minuto)
2 Mi apra una posizione short quando il prezzo della candela attuale supera il minimo al ribasso della candela precedente (TF 1 minuto)
Risposta 1
IF close > high[1] THEN....
Risposta 2
IF close < low[1] THEN....
Ovviamente le inserirai dove metterai il BUY o SELLSHORT.
Tieni presente che la verifica viene fatta SOLO alla CHUSURA della barra, per cui il prezzo potrebbe avere superato i valori anche di diversi Pips!
Grazie mille Roberto, gentilissimo, ma per quanto riguarda il codice completo, dovrebbe essere una cosa simile?
// Condizioni per entrare su posizioni long
IF close > high[1] THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
IF close < low[1] THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
Ho provato giusto ora ma non funziona, nel senso che non mi apre nessuna posizione.. Il mio codice è questo, c’è qualcosa sicuramente di errato..
Come orario ho messo dalle 15:53 alle 15:53 proprio per vedere ora se apriva qualche posizione ma nulla da fare..
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario “Flat Before” non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 155300
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario “Flat After”
DEFPARAM FLATAFTER = 155300
// Condizioni per entrare su posizioni long
IF close > high[1] THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
IF close < low[1] THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
Per scrivere il codice , utilizza il pulsante <> “insert PRT code” per migliorarne la leggibilità.
La strategia a me funziona, sia su Eur/Usd che sul DAX a 1 minuto, 10 minuti, fino al 4 ore. Non funziona sul giornaliero ovviamente.
Ovviamente da risultati sballati perché le date che hai indicato, inizio e fine, sono identiche.
Io le ho cambiate mettendo una differenza di 1 minuto, dalla 150000 alle 150100 ed il risultato è quello nella foto (TF 1 minuto).
Perfetto si funziona! Ti spiego, io lo userei per entrare sul dax la mattina alle 08:00.. Però non mi sembra corretto in quanto facendo il backtest e andando a vedere i vari ingressi sul grafico, non è per niente preciso.. Io vorrei che entrasse in rialzo se “spacca” il massimo della candela precedente di 2 punti e in ribasso se “spacca” il minimo della candela precedente sempre di 2 punti. Per la chiusura cosa mi consigli? Di farla manualmente o di mettere un TP?
Ora è così il codice, come dovrei modificarlo per far si che faccia questo? Grazie mille Roberto!
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario “Flat Before” non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 080000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario “Flat After”
DEFPARAM FLATAFTER = 080100
// Impedisce al sistema di tradare in giorni specifici della settimana
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Condizioni per entrare su posizioni long
c1 = (close>high[1])
IF c1 AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
c3 = (close<low[1])
IF c3 AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
Per scrivere il codice , utilizza il pulsante <> “insert PRT code” per migliorarne la leggibilità. Grazie.
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario “Flat Before” non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 080000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario “Flat After”
DEFPARAM FLATAFTER = 080100
// Impedisce al sistema di tradare in giorni specifici della settimana
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Condizioni per entrare su posizioni long
c1 = (close>high[1])
IF c1 AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
c3 = (close<low[1])
IF c3 AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
Come dicevo prima vorrei che entrasse long a +2 pips del massimo precedente e in short a -2pips del minimo precedente.
Inoltre la chiusura della posizione, meglio mettere un TP oppure chiuderla manualmente?
Grazie mille!
IG ha orari di negoziazione DAX diversi da altri broker (vedi le due foto per i giorni feriali e per il fine settimana, presi dal sito di IG).
Se vuoi che la barra precedente alle 08:00 sia quella delle 21:59 (sul TF a 1 minuto, ad esempio) devi seguire i 6 passi che ti ho evidenziato in una foto per ottenere l’orario desiderato. Come puoi vedere PRT vuole che l’orario sia indicato in UTC (non nell’ora italiana, che è UTC+1).
Se chiudi manualmente un’operazione aperta da una strategia, automaticamente ProOrder CHIUDE quella strategia e dovrai farla ripartire te.
No no, la barra che precede le 8 dev’essere quella delle 7.59 e come orari ci siamo, la cosa che non capisco è perchè a volte entra quando il prezzo spacca il minimo o il massimo delle 7.59 e a volte no.. Oppure entra “male” e non è preciso.. Non vorrei ci sia qualcosa di errato sul codice..
Per i 2 pip, la riga 12 diventa:
BUY 1 CONTRACT AT high[1] + (2 * pipsize) STOP
e la riga 17:
SELLSHORT 1 CONTRACT AT low[1] - (2 * pipsize) STOP
Tieni presente che gli ordini pendenti (STOP e LIMIT) restano validi per una sola candela, alla chiusura della quale, se non entrati a mercato, sono cancellati. Se lo desideri puoi reinserirli a tuo piacimento quante volte vuoi.
La precisione in entrata non saprei dirti quanto possa essere accurata. Ti allego uno screenshot del TF a 1 secondo di stamani mattina.
Si vede che al secondo 08:00:05 c’è una candela rialzista con apertura in GAP ribasista, che viene subito colmato, magari con un ulteriore GAP (invisibile, forse dovremmo scendere ai singoli tick per verificarlo), per cui può capitare su strumenti voltatili come Dax, EurUsd ecc… che questi gap siano frequenti e quello STOP è un ordine di cui viene garantita l’esecuzione ma non il prezzo.