Salve a tutti. Vorrei un aiuto a codificare questa semplice idea per un time frime intraday supponiamo un 15 minuti.
Se oggi si supera il minimo Daily di ieri il sistema inserisce un ordine long al massimo Daily di ieri. idem per lo short. Chiusura il giorno dopo dell’ entrata inoltre una sola operazione al giorno si farebbe.
Mi piacerebbe una spiegazione bambinesca su come si imposta l’ordine di entrata a mercato.
In pratica sarebbe un Outside.
Stop loss 100 punti
Stop profit 300 punti
Grazie ragazzi
Buongiorno, spero di aver capito bene la richiesta 🙂
Immagina che ogni mattina guardi la candela di ieri sul Daily. Essa ha un suo massimo (yhigh) e un suo minimo (ylow).
La logica Outside Day dice:
- se oggi il prezzo scende sotto il minimo di ieri, il mercato sta mostrando debolezza. Ma tu scommetti su una ripresa: metti un ordine di acquisto (BUY STOP) esattamente al massimo di ieri. Se il prezzo arriva lassù significa che ha fatto un Outside Day rialzista completo e tu sei dentro long.
- se oggi il prezzo sale sopra il massimo di ieri, fai il ragionamento inverso: metti un ordine di vendita allo scoperto (SELLSHORT STOP) al minimo di ieri.
Come funziona l’ordine “AT prezzo STOP” in ProBuilder?
BUY 1 CONTRACT AT yhigh STOP è un ordine pendente. Rimane in attesa e scatta solo se il mercato tocca yhigh. Se la candela corrente (15 minuti) raggiunge quel livello, il sistema compra a quel prezzo. Se non viene toccato nella sessione, l’ordine decade alla chiusura della barra e va ripiazzato (cosa che il codice fa in automatico ad ogni barra, finché non si è dentro).
Cosa fa esattamente il codice barra per barra:
- Legge yhigh e ylow dal Daily di ieri (TIMEFRAME daily, updateonclose garantisce dati della candela chiusa).
- All’inizio di ogni giorno resetta il flag tradedonetdy a 0 (nessun trade ancora fatto oggi).
- Ad ogni barra a 15 minuti: se non è in posizione e non ha ancora tradato oggi, valuta i setup e piazza l’ordine stop al livello giusto.
- SL a 100 punti e TP a 300 punti partono automaticamente al momento dell’entrata con SET STOP PLOSS e SET TARGET PPROFIT.
- Se è ancora in posizione il giorno dopo l’entrata (TradeDate è la data di apertura del trade), chiude a mercato alla prima barra utile.
- Appena entra, il flag tradedonetdy = 1 blocca qualsiasi altro ordine per tutto il giorno.
DEFPARAM CumulateOrders = false
// -------------------------------------------------------
// Dati Daily di ieri (candela chiusa)
// -------------------------------------------------------
TIMEFRAME(daily, updateonclose)
yhigh = high[0]
ylow = low[0]
TIMEFRAME(default)
// -------------------------------------------------------
// Reset flag giornaliero: una sola operazione al giorno
// -------------------------------------------------------
IF Date <> Date[1] THEN
tradedonetdy = 0
ENDIF
// -------------------------------------------------------
// Parametri di rischio
// -------------------------------------------------------
SL = 100 // Stop loss in punti
TP = 300 // Take profit in punti
// -------------------------------------------------------
// Setup Outside Day
// setuplong = oggi il prezzo ha forato il minimo di ieri
// setupshort = oggi il prezzo ha forato il massimo di ieri
// -------------------------------------------------------
setuplong = (low <= ylow)
setupshort = (high >= yhigh)
// -------------------------------------------------------
// Ordini di entrata (pendenti STOP)
// -------------------------------------------------------
IF NOT OnMarket AND tradedonetdy = 0 THEN
// LONG: entrata al massimo di ieri con ordine STOP
IF setuplong THEN
BUY 1 CONTRACT AT yhigh STOP
ENDIF
// SHORT: entrata al minimo di ieri con ordine STOP
IF setupshort THEN
SELLSHORT 1 CONTRACT AT ylow STOP
ENDIF
ENDIF
// -------------------------------------------------------
// Stop Loss e Take Profit automatici
// -------------------------------------------------------
SET STOP PLOSS SL
SET TARGET PPROFIT TP
// -------------------------------------------------------
// Chiusura il giorno dopo l'entrata
// -------------------------------------------------------
IF LongOnMarket AND Date > TradeDate THEN
SELL AT MARKET
ENDIF
IF ShortOnMarket AND Date > TradeDate THEN
EXITSHORT AT MARKET
ENDIF
// -------------------------------------------------------
// Blocco: non più di un trade al giorno
// -------------------------------------------------------
IF OnMarket AND NOT OnMarket[1] THEN
tradedonetdy = 1
ENDIF
Si ha capito bene la ringrazio molto.
Il codice sopra riportato necessita che TradeDate sia definito come segue (a meno che non mi serva altro caffè? 😉 ).
// LONG: entrata al massimo di ieri con ordine STOP
IF setuplong THEN
BUY 1 CONTRACT AT yhigh STOP
TradeDate = Date
ENDIF
// SHORT: entrata al minimo di ieri con ordine STOP
IF setupshort THEN
SELLSHORT 1 CONTRACT AT ylow STOP
TradeDate = Date
ENDIF