Salve, tempo fa con l’aiut di Roberto ho realizzato questo ts che sfruttava come entrata il break della prima ora di contrattazione. Allego il link: https://www.prorealcode.com/topic/ts-break-prima-ora/
Ora vorrei realizzare un ts su time frame 5 minuti che mi calcoli il range delle prime due ore di contrattazioni e cioè dalle ore 09 alle ore 11, pero’ deve calcolare le prime due ora del giorno prima. se il range delle prime due ore del giorno prima sara’ di 100 punti, il ts mettiamo il caso entrare’ in posizione long, dovra avere come stop loss il 50% del range del giorno prima calcolato e cioè 50 punti e come target il 100% del range del giorno prima calcolato e cioè 100 punti.
Ringrazio anticipatamente chi puo’ aiutarmi 🙂
Dovrebbe funzionare, fammi sapere:
DEFPARAM CumulateOrders = false
ONCE OggiMax = 0
ONCE OggiMin = 0
ONCE IeriMax = 0
ONCE IeriMin = 0
IF time = 090000 THEN //alle 090000 i valori correnti...
IeriMax = OggiMax //...diventano di ieri e...
OggiMax = high //...si riparte con i nuovi valori delle ore 9-11
IeriMin = OggiMin
OggiMin = low
ELSIF time <= 110000 THEN
OggiMax = max(OggiMax, high)
OggiMin = min(OggiMin, low)
ENDIF
IF MideCondizioni AND Not OnMarket THEN
BUY/SELLSHORT 1 CONTRACT AT MARKET
MioRange = (IeriMax - IeriMin) / pipsize //Il range di ieri (valido dalle 090000 alle 085959 di domani) è la base per il TP e SL
SET TARGET pPROFIT MioRange
SET STOP pLOSS MioRange / 2
ENDIF
Ovviamente funziona con candele che Aprono/Chiudono almeno alle 090000 ed alle 110000.
Ciao Roberto, provo a far scorrere la strategia, ma c’è un errore nella linea 19 del codice. Inoltre manca la variabile miecondizioni.
Potyresti verificare??’
Grazie tante 🙂
Alla riga 19 come puoi notare c’è BUY/SELLSHORT, in quanto io non so cosa vuoi fare, devi mettere solo una delle due, oppure due ma su righe diverse e, penso, con condizioni diverse.
MieCondizioni è, anch’essa, come indica la parola stessa, un esempio, che dovrai sostituire, appunto, con le tue condizioni che desideri perché l’operazione sia aperta.
Era solo un esempio di come fare per impostare quello che chiedevi, cioè il TP e SL secondo il range di ieri.
Dovrai inserire il tutto in una tua strategia.
Per farla funzionare così com’è basta che metti CLOSE > OPEN al posto di MieCondizioni e togli /SELLSHORT, lasciando solo BUY.
Funziona, ma ovviamente fa operazioni casuali!
Caio Roberto, potresti aiutarmi nuovamente?
Potresti scrivermi una strategia che mi calcoli il range delle prime due ore di contrattazioni e cioè dalle ore 09 alle ore 11, pero’ deve calcolare le prime due ora del giorno prima. se il range delle prime due ore del giorno prima sara’ di 100 punti, il ts mettiamo il caso entrare’ in posizione long, dovra avere come stop loss il 50% del range del giorno prima calcolato e cioè 50 punti e come target il 100% del range del giorno prima calcolato e cioè 100 punti.
Supponiamo ad esempio che il max e minimo di ieri dax dalle 9 alle ore 11 sia stato min 13000 e max 13100. il giorno seguente e cioe’ domani, il ts mi dovra’ entrare long con ordine condizionato a 13001 con target il 100% del range e cioè 13200 e stop il 50% del range e cioè 13050. viceversa per lo short. è possibile fralo? è possibile mettere due ordini condizionati e cioè uno long e uno short che al verificarsi di uno, lì’altro si cancelli?
Ringrazio anticipatamente 🙂
Questa è la strategia nella versione con ordini pendenti, sia per l’entrata che lo stop loss ed il target profit. Ho visto, sul DAX, che funziona un pò meglio sui 5 minuti.
Poi ti preparerò una seonda versione con entrata a mercato quando la CHIUSURA supera il Massimo/Minimo del giorno precedente.
DEFPARAM CumulateOrders = false
ONCE OggiMax = 0
ONCE OggiMin = 0
ONCE IeriMax = 0
ONCE IeriMin = 0
// occorre reinserire gli ordini pendxenti (Stop Loss e Target Profit) ad ogni barra, se a mercato
IF OnMarket THEN
SELL AT LongProfit LIMIT //Target Profit
SELL AT LongStop STOP //Stop Loss
EXITSHORT AT ShortProfit LIMIT //Target Profit
EXITSHORT AT ShortStop STOP //Stop Loss
ENDIF
// salvare il Minimo e Massimo tra le 9 e le 11
IF time = 090000 THEN //alle 090000 i valori correnti...
IeriMax = OggiMax //...diventano di ieri e...
OggiMax = high //...si riparte con i nuovi valori delle ore 9-11
IeriMin = OggiMin
OggiMin = low
ELSIF time <= 110000 THEN
OggiMax = max(OggiMax, high)
OggiMin = min(OggiMin, low)
ENDIF
// Entrare a mercato, se non lo siamo già
IF Not OnMarket THEN
MioRange = IeriMax - IeriMin //Il range di ieri (valido dalle 090000 alle 085959 di domani) è la base per il TP e SL
IF close < IeriMax THEN
LongEntry = IeriMax + (1 * pipsize)
LongStop = IeriMax - (MioRange / 2)
LongProfit = IeriMax + MioRange
BUY 1 CONTRACT AT LongEntry STOP //inizio del trade
SELL AT LongProfit LIMIT //Target Profit
SELL AT LongStop STOP //Stop Loss
ELSIF close > IeriMin THEN
ShortEntry = IeriMin - (1 * pipsize)
ShortStop = IeriMin + (MioRange / 2)
ShortProfit = IeriMin - MioRange
SELLSHORT 1 CONTRACT AT ShortEntry STOP //inizio del trade
EXITSHORT AT ShortProfit LIMIT //Target Profit
EXITSHORT AT ShortStop STOP //Stop Loss
ENDIF
ENDIF
Qusta è la versione con gli ordini a mercato
DEFPARAM CumulateOrders = false
ONCE OggiMax = 0
ONCE OggiMin = 0
ONCE IeriMax = 0
ONCE IeriMin = 0
// salvare il Minimo e Massimo tra le 9 e le 11
IF time = 090000 THEN //alle 090000 i valori correnti...
IeriMax = OggiMax //...diventano di ieri e...
OggiMax = high //...si riparte con i nuovi valori delle ore 9-11
IeriMin = OggiMin
OggiMin = low
ELSIF time <= 110000 THEN
OggiMax = max(OggiMax, high)
OggiMin = min(OggiMin, low)
ENDIF
// Entrare a mercato, se non lo siamo già
IF Not OnMarket THEN
MioRange = IeriMax - IeriMin //Il range di ieri (valido dalle 090000 alle 085959 di domani) è la base per il TP e SL
StopLoss = (MioRange / 2) * pipsize
TargetProfit = MioRange * pipsize
IF close > IeriMax THEN
BUY 1 CONTRACT AT Market
SET TARGET pPROFIT StopLoss
SET STOP pLOSS TargetProfit
ELSIF close < IeriMin THEN
SELLSHORT 1 CONTRACT AT Market
SET TARGET pPROFIT StopLoss
SET STOP pLOSS TargetProfit
ENDIF
ENDIF
Salve >roberto e grazie ancora. non testando questa strategia. Mi sono accorto che il Ts lascia le posizioni aperta over a fine giornata, invece le dovrebbe chiudere se non ha raggiunto il tp in giornata. e con i max e minimi di oggi, domani mi dovrebbe impostare nuovi trade. rimanendo over, non lo fa
Basta mettere come prima riga (in tal caso va bene anche come seconda riga, essenoci un altro DEFPARAM)
DEFPARAM FlatAfter = hhmmss
dove hhmmss sono le ore, minuti e secondi (in 6 cifre) in cui desideri chiudere ogni posizione aperta, indipendentemente dal risultato (profitto o perdita) a quel momento. Ovviamente l’ora indicata deve essere uguale o precedente alla chiusura.
ok, perfetto provo subito. Roberto ho aperto un nuovo post in quanto mi esce un messaggio di errore. potresti verificare? Grazie ancora 🙂