Buongiorno,
cortesemente se possibile mi servirebbe un nuovo aiuto a tradurre in codice la parte di ingresso long di seguito descritta:
//INGRESSO LONG
// il 4° lunedì del mese salva il prezzo del titolo ( di apertura o chiusura non importa poi lo gestisco), poi prima di arrivare al 3° venerdì del mese successivo se il titolo scende di x punti % entra long
IF quarto lunedì del mese THEN
MIOPREZZO = azzero il prezzo del precedente 4° lunedì del mese
MIOPREZZO = salvo il prezzo del 4° lunedì del mese in corso
IF MIOPREZZO < x% BUY AT MARKET
//USCITA devo uscire categoricamente il 3° ven del mese ( questo codice è già ok )
IF
OpenMonth <> OpenMonth[1] THEN
Venerdi = 0
ENDIF
IF (DayOfWeek = 5) AND (DayOfWeek <> DayOfWeek[1]) THEN
Venerdi = Venerdi + 1
ENDIF
IF OnMarket AND (Venerdi = 3) AND (DayOfWeek = 5) THEN
SELL AT MARKET //uscita LONG
EXITSHORT AT MARKET //uscita SHORT
ENDIF
grazie
Ciao. Puoi fare lo stesso che hai fatto con il codice di accesso.
once monday=0
x=-8
//----Count every monday
if dayofweek=1 then
monday=1+monday
else
monday=monday
endif
//----Restart counter every month
if month<>month[1] then
monday=0
endif
if monday=4 and dayofweek<dayofweek[1] then
Mondayprice=close
endif
//----enter long
if not onmarket and (close/Mondayprice-1)*100<X then
buy 1 contract at market
endif
graphonprice mondayprice coloured("blue")
Grazie Ivan per la cortesia,
purtroppo implementando il codice non mi entra mai a mercato.. anche variando il valore di X .. non capisco perchè..
ti allego lo screenshot del ts
Prova questa versione modificata:
once monday=0
x=-1
//----Count every monday
if opendayofweek=1 and opendayofweek <> opendayofweek[1] then
monday=1+monday
else
monday=monday
endif
//----Restart counter every month
if openmonth<>openmonth[1] then
monday=0
endif
if monday=4 and opendayofweek<opendayofweek[1] then
Mondayprice=close
endif
//----enter long
if not onmarket and (close/Mondayprice-1)*100<X then
buy 1 contract at market
endif
graphonprice mondayprice coloured("blue")
graph Monday
Grande! questo lavora..
faccio un po di test manuali per capire se fa quel che mi serve
grazie 1000 per ora, molto gentile
Ciao a tutti, se possibile vorrei approfittare ancora della vostra gentilezza per modificare l’uscita del TS:
in questo momento il ts esce sempre il 3° ven del mese, la modifica che vorrei implementare fa un controllo sullo stato della posizione prima di uscire, cioè
if “sono a mercato” and “3° ven mese” and “mio prezzo di carico è > chiusura” then
sell at the market
else “resta a mercato fino a quando il prezzo di carico >= price” // appena il prezzo torna al mio ingresso chiudo la posizione
( ci dovrei ricavare una statistica poi , per avere una sorta di indicatore di recovery, ovvio se il titolo continua a scendere senza mai tornare al pmc resta a mercato)
Il ts non deve aprire altre posizioni finchè il prezzo non torna al mio pmc
spero di essere stato chiaro nell’esposizione
e ringrazio ancora per la cortesia, emiliano
Nel codice sopra non c’è un’uscita? Va aggiunta?
Il valore di price da dove si prende?
l’uscita ora è questa ( da modificare come descritto sopra):
//USCITA esce il 3° ven del mese ( questo codice è già ok )IF OpenMonth <> OpenMonth[1] THEN
Venerdi = 0
ENDIF
IF (DayOfWeek = 5) AND (DayOfWeek <> DayOfWeek[1]) THEN
Venerdi = Venerdi + 1
ENDIF
IF OnMarket AND (Venerdi = 3) AND (DayOfWeek = 5) THEN
SELL AT MARKET //uscita LONG
EXITSHORT AT MARKET //uscita SHORT
ENDIF
il “price” sarebbe la quotazione in tempo reale cioè il prezzo, non so come PROREALTIME la codifica.. altrimenti se uso CLOSE o OPEN , ho provato ma non fa quello che mi serve..
PRICE è il prezzo corrente. Nel momento in cui una candela chiude diventa, per quella candela, il prezzo di chiusura per ritornare ad essere il prezzo corrente immediatamente dopo.
Prova questa versione:
once monday=0
once friday=0
x=-8
//----Count every monday
if openmonth<>openmonth[1] then
Mondayprice=0
monday=0
friday=0
endif
if opendayofweek=1 and opendayofweek <> opendayofweek[1] then
monday=1+monday
endif
if opendayofweek=5 and opendayofweek <> opendayofweek[1] then
friday=1+friday
endif
//----Restart counter every month
if monday=4 and Mondayprice=0 then
Mondayprice=close
friday=0
endif
//----enter long
if not onmarket and (close/Mondayprice-1)*100<X then
buy 1 contract at market
Mondayprice=0
friday=0
endif
if OnMarket AND (Friday = 3) AND (close >= TradePrice) THEN
SELL AT MARKET
ENDIF
//graphonprice mondayprice coloured("blue")
//graph Monday
//graph Friday coloured("Red")
//graph opendayofweek
grazie Roberto,
così esce se vengono rispettate le due condizioni ” 3 ven del mese ” e ” prezzo > mondayprice”, però nel caso in cui sono a mercato e il prezzo è < di mondayprice resta a mercato .. corretto però per uscire aspetta il prossimo
3ven del mese … mentre a quel punto dovrei uscire appena il prezzo è > mondayprice .. cioè passato il primo 3 ven del mese da quando sono a mercato … ogni giorno è buono per uscire ..
sarebbe : se sono a mercato e è passato già un 3 ven da quando sono a mercato allora esci appena tradeprice > mondayprice
grazie ancora
qualcosa non mi torna sull’ingresso così modificato, rispetto al codice di prima mi salta alcune entrate…
allego screenshot con il confronto dei due ts, sul vecchio entra su calo quotazioni, mentre con il nuovo codice non entra a mercato
Questo è il codice aggiornato per le uscite:
once monday=0
once friday=0
IF Not OnMarket THEN
uscita=0
ENDIF
x=-8
//----Count every monday
if openmonth<>openmonth[1] then
Mondayprice=0
monday=0
friday=0
endif
if opendayofweek=1 and opendayofweek <> opendayofweek[1] then
monday=1+monday
endif
if opendayofweek=5 and opendayofweek <> opendayofweek[1] then
friday=1+friday
endif
//----Restart counter every month
if monday=4 and Mondayprice=0 then
Mondayprice=close
friday=0
endif
//----enter long
if not onmarket and (close/Mondayprice-1)*100<X then
buy 1 contract at market
Mondayprice=0
friday=0
endif
if OnMarket AND (Friday = 3) THEN
IF (close >= TradePrice) THEN
SELL AT MARKET
ELSE
Uscita=1
ENDIF
ENDIF
IF OnMarket AND Uscita AND (close >= TradePrice) THEN
SELL AT MARKET
Uscita=0
ENDIF
//graphonprice mondayprice coloured("blue")
//graph Monday
//graph Friday coloured("Red")
//graph opendayofweek
//graphonprice TradePrice
per entrate errate o mancanti, dimmi su quale strumento, timeframe, data ed ora sono avvenute (o sarebbero dovute avvenire).
esempio del 10 mar 2020 su Italgas (ma il problema è su tutti i sottostanti)
come vedi il vecchio entra correttamente come da istruzione (zona sopra),
mentre il nuovo codice (zona sotto) non mi genera quell’entrata.
allego anche i rapporti dove si evince che il nuovo codice non trova ingressi ..
con x-8 dovrebbero invece esserci, come giustamente segnava il vecchio codice
TF : giornaliero
Scusami per il ritardo.
Ho fatto alcune variazioni, adesso sembra funzionare:
once monday=0
once friday=0
x=-8
//----Count every monday and Friday (restart every month)
if openmonth<>openmonth[1] then
Mondayprice=close
monday=0
friday=0
endif
if opendayofweek=1 and opendayofweek <> opendayofweek[1] then
monday=1+monday
endif
if opendayofweek=5 and opendayofweek <> opendayofweek[1] then
friday=1+friday
IF friday > 3 THEN
Flag = 1
ENDIF
endif
IF Not Onmarket THEN
Flag = 0
ENDIF
//----Restart counter every month
//if monday=4 and Mondayprice=0 then
//Mondayprice=close
//friday=0
//endif
//----enter long
if not onmarket and (close/Mondayprice-1)*100<X then
buy 1 contract at market
Mondayprice=0
friday=0
flag = 0
endif
if OnMarket AND (((Friday = 3) and (Flag = 0)) OR Flag) AND (close >= TradePrice) THEN
SELL AT MARKET
ENDIF
//graphonprice mondayprice coloured("blue")
//graphonprice TradePrice coloured("blue")
//graph Monday
//graph Friday coloured("Red")
//graph Flag
//graph opendayofweek