ProRealCode - Trading & Coding with ProRealTime™
Buon giorno, ho provato quest’ultimo sistema da lei costruito ma mi apre le posizioni quando vuole lui e non tutte quelle che dovrebbe aprire.
Grazie comunque.
Se mi dici il nume dell’azione (o anche più di una), e la data incui è stato aperta un’operazione non corretta oppure NON è stata aperta un’operazione che avrebbe dovuto essere aperta posso verificare (solo i dati, non servono immagini).
ROKU 01/09/22: avrebbe dovuto aprire uno short attorno quota 67.5 e non ha aperto,
29/08/22 avrebbe dovuto aprire un long attorno quota 68.84 e non ha aperto,
AMD 24/08/22 avrebbe dovuto aprire uno short attorno quota 91.5 e non ha aperto,
23/08/22 avrebbe dovuto aprire un long attorno quota e non ha aperto,
AAPL non mi apre nessuna posizione,
TSLA non mi apre nessuna posizione,
Poi ho notato che una volta preso il primo take profit all’1% lo stop non si sposta a breakeven.
(come faccio a modificare questo 1%?)
Grazie in anticipo.
C’è qualcosa che va in conflitto col sistema, le spiego nel dettaglio la mia strategia:
Tramite uno screneer molto selettivo scelgo i titoli che sono più promettenti,
Azioni USA larga capitalizzazione,
time frame 3 minuti,
opero dalle 15:30 alle 18:00
esecuzione di un solo trade al giorno (entrata+uscita)
attendere che il titolo rompa i massimi o i minimi formati nella fase di mercato chiuso,
la candela deve formare un nuovo massimo,
a questo punto si aspetta il ritracciamento ( putroppo discrezionale) che può avvenire sulla ema13, sul vwap , sul punto di rottura, o su un supporto/resistenza,
normalmente entro in posizione con ordine limit in uno dei punti elencati qua sopra dove potrebbe andare a ritracciare il titolo (quando c’è un allineamento sullo stesso prezzo della vwap e dell’ ema13),
stop all’1% che vario in base al probacktest,
primo take profit a 0.5% di profitto con scarico di metà posizione,
portare subito lo stop a breakeven,
attendere secondo take profit ad un altro 0.5% per scaricare completamente la posizione,
in caso contrario si esce a breakeven.
purtroppo ho capito che la mia strategia è troppo discrezionale nella fase di apertura posizione perciò si potrebbe ovviare in questo modo:
DOPO lo sfondamento dei min/max di mercato chiuso e dopo che avviene un nuovo max/min entrare in posizione all’incrocio vwap/ema13.
LONG: ema13 sale e incrocia a rialzo vwap,
SHORT: ema13 scende e incrocia a ribasso vwap.
logicamente per uscire si usano le impostazioni qui sopra.
poi se è possibile vorrei imparare ad ottimizzare l’incrocio.
GRAZIE in anticipo.
Buon giorno, il problema della discrezionalità della mia strategia si potrebbe risolvere così:
ENTRATA LONG: deve avvenire una delle 2 condizioni ,
1) ema13 incrocia vwap (dal basso verso l’alto),
2) ema13 incrocia min/max premercato (dal basso verso l’alto)
ENTRATA SHORT: deve avvenire una delle due condizioni,
1) ema13 incrocia vwap (dall’alto verso il basso),
2) ema13 incrocia min/max premercato (dall’alto verso il basso)
Bisognerebbe aggiungere un take profit a 0.5% di profitto con scarico di metà posizione,
appena lo prende si sposta lo stop a breakeven e si lascia “corre” il titolo fino allo spegnimento del sistema che liquida la posizione.
Vi posto il codice incompleto, se potete darmi una mano vi ringrazio.
// 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 = 153600
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
DEFPARAM FLATAFTER = 180000
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
OTD = (Barindex - TradeIndex(1) > IntradayBarIndex)
// Condizioni per entrare su posizioni long
indicator1 = ExponentialAverage[13](close)
indicator2, ignored = CALL "max/min premarket"
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = ExponentialAverage[13](close)
indicator4, ignored, ignored, ignored, ignored, ignored, ignored = CALL "PRC_VWAP intraday"
c2 = (indicator3 CROSSES OVER indicator4)
IF (c1 OR c2) AND not daysForbiddenEntry and OTD THEN
BUY 60 SHARES AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
indicator5 = ExponentialAverage[13](close)
ignored, indicator6 = CALL "max/min premarket"
c3 = (indicator5 CROSSES UNDER indicator6)
indicator7 = ExponentialAverage[13](close)
indicator8, ignored, ignored, ignored, ignored, ignored, ignored = CALL "PRC_VWAP intraday"
c4 = (indicator7 CROSSES UNDER indicator8)
IF (c3 OR c4) AND not daysForbiddenEntry and OTD THEN
SELLSHORT 60 SHARES AT MARKET
ENDIF
// Stop e target
SET STOP %LOSS 1
SET TARGET %PROFIT 0.5
Eccolo (provato Apple, 3 minuti):
// 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 = 153600
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
//DEFPARAM FLATAFTER = 180000
IF Not OnMarket THEN
Entrata = 0
Uscita = 0
ENDIF
IF (OnMarket AND Not OnMarket[1]) OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THEN
Entrata = TradePrice
Uscita = TradePrice + (TradePrice * 0.005) //0.5%
IF ShortOnMarket THEN
Uscita = TradePrice - (TradePrice * 0.005) //0.5%
ENDIF
ENDIF
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
OTD = (Barindex - TradeIndex(1) > IntradayBarIndex)
// Condizioni per entrare su posizioni long
indicator1 = ExponentialAverage[13](close)
indicator2, ignored = CALL "max/min premarket"
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = ExponentialAverage[13](close)
indicator4, ignored, ignored, ignored, ignored, ignored, ignored = CALL "PRC_VWAP intraday"
c2 = (indicator3 CROSSES OVER indicator4)
IF (c1 OR c2) AND not daysForbiddenEntry and OTD AND Not LongOnMarket THEN
BUY 60 SHARES AT MARKET
Entrata = close
Uscita = Entrata + (Entrata * 0.005) //0.5%
ENDIF
// Condizioni per entrare su posizioni short
indicator5 = ExponentialAverage[13](close)
ignored, indicator6 = CALL "max/min premarket"
c3 = (indicator5 CROSSES UNDER indicator6)
indicator7 = ExponentialAverage[13](close)
indicator8, ignored, ignored, ignored, ignored, ignored, ignored = CALL "PRC_VWAP intraday"
c4 = (indicator7 CROSSES UNDER indicator8)
IF (c3 OR c4) AND not daysForbiddenEntry and OTD AND Not ShortOnMarket THEN
SELLSHORT 60 SHARES AT MARKET
Entrata = close
Uscita = Entrata - (Entrata * 0.005) //0.5%
ENDIF
IF (Uscita > 0) THEN
IF LongOnMarket AND close > Uscita THEN
Posizioni = round(abs(CountOfPosition) / 2,1)
SELL Posizioni SHARES AT Market
Uscita = 0
SET STOP BreakEven
ELSIF ShortOnMarket AND close < Uscita THEN
Posizioni = round(abs(CountOfPosition) / 2,1)
EXITSHORT Posizioni SHARES AT Market
Uscita = 0
SET STOP BreakEven
ENDIF
ENDIF
// Stop e target
SET STOP %LOSS 1
SET TARGET %PROFIT 0.05
//
graphonprice Entrata coloured(0,0,255,255)
graphonprice Uscita coloured(255,0,0,255)
graphonprice PositionPrice
però con i valori che hai impostato non riuscirai a vedere la vendita di metà posizione, perché sono troppo stretti. Io ho dovuto mettere:
SET STOP %LOSS 10
SET TARGET %PROFIT 15
il sistema funziona con stop a 1% e take profit a 0.5% no 0.05 come ha inserito lei.
il problema è che al take profit di 0.5 mi chiude tutta la posizione e no metà come dovrebbe. riusciamo a sistemare?
grazie mille.
Per fare i test ho bisogno di conoscere data ed ora della candela dove è stato aperta l’operazione di cui hai partlato e su quale azione era.
per esempio sul titolo AMD 08/09/2022 ore 16:12 entra long a 81,24$ e mi esce completamente al profit dello 0.5% a 81,66$.
il sistema giustamente prende profitto, ma dovrebbe scaricare metà della posizione (non tutta) per poi lasciarla “correre” fino allo spegnimento del sistema che liquiderà tutto.
Comunque a parte questa modifica questa strategia non è nelle “mie corde”.
Un pò per colpa mia che mi sono lasciato prendere la mano a testare strategie, un pò perchè lei è veramente bravo e celere nell’eseguire le richieste.
Le chiedo gentilmente di riprendere in mano la mia strategia iniziale che è quella per cui sono in questo forum.
Ora le posto quanto più nel dettaglio la mia strategia facendo un esempio concreto:
Per esempio:
Entrata long:
Riferimento: AMD 08/09/2022
non trado sabato e domenica
il sistema si accende alle 15:30
il sistema si spegne alle 18:00
ore 15:45 candela di fondamento min/max/premarket,
ore 15:48 candela che fa un nuovo massimo,
ore 16:03 entrata long (di un numero x di azioni) con ordine limit quando il prezzo è minore o uguale al min/max premarket oppure prezzo è minore o uguale ema13 (il prezzo limit di entrata è il punto di incontro tra prezzo e min/max pre market oppure prezzo e ema13),
prendere profitto a +0.5% scaricando metà delle azioni e spostando lo stop a breakeven (con il numero di azioni ricalcolate dopo il profit).
Esempio short:
Riferimento AMD 06/09/2022
il sistema si accende alle 15:30
il sistema si spegne alle 18:00
ore 15:30 candela di sfondamento min/max premarket
ore 15:33 candela che fa un nuovo minimo
ore 15:42 entrata short (di un numero x di azioni) con ordine limit quando il prezzo è maggiore o uguale al min/max premarket oppure prezzo è maggiore o uguale ema13 (il prezzo limit di entrata è il punto di incontro tra prezzo e min/max pre market oppure prezzo e ema13),
prendere profitto a +0.5% scaricando metà delle azioni e spostando lo stop a breakeven (con il numero di azioni ricalcolate dopo il profit).
stop loss 1%
Grazie mille.
Prova a fare una prova con altre azioni (ad esempio ROKU, o APPLE), altrimenti non posso fare verifiche.
Ho un’azione AMD che parte dal 9/9 alle 15:30, non prima.
Ho altre 4 diverse azioni AMD che però NON HANNO DATI.
Oltre all’esempio di AMD qui sopra, ci posto queste sempre con time frame 3 min.:
Titolo BYND 09/09/2022 entrata long alle 15:54 col prezzo che rimbalza sulla ema13, take profit a +0,5% e portare subito lo stop a breakeven.
Titolo SPCE 09/09/2022 entrata short alle 16:06 col prezzo che rimbalza sulla ema13, uscita allo stesso modo.
Titolo TSLA 01/09/2022 entrata short alle 17:09 col prezzo che ribalza sulla ema 13, uscita allo stesso modo.
Titolo DIS 09/09/2022 entrata long alle 16:12 col prezzo che rimbalza sulla ema13, uscita allo stesso modo.
Titolo AAPL 02/09/2022 entrata short alle 19:18 col prezzo che rimbalza sulla ema13 , uscita allo stesso modo.
Come può vedere il pattern di ingresso della mia strategia si ripete più volte sui titoli a larga capitalizzazione.
Desidererei codificare quanto scritto nel dettaglio sul post del 09/09/2022.
Grazie in anticipo.
Prima di passare ad un nuovo codice occorre essere certi che il vecchio funziona, altrimenti si ripetono gli stessi errori (mi riferisco all’ultimo codice postato, non al primo).
Ho provato su AAPL e non ho nessuna entrata alle 19:18, ma solo una alle 15:33.
Probabilmente hai cambiato qualche parametro rispetto a quello postato, sarebbe bene che tu allegassi il file ITF che hai usato.
Ad ogni modo voglio precisare alcune cose:
Se vuoi che la posizione venga lasciata correre dopo averne chiusa metà, metti come TP un valore elevato, “quasi” irraggiungibile (tipo 10% o più), oppure 0. Però nell’ultimo codice postato non ha molto senso in quanto non c’è un’uscita programmata su qualche indicatore, ma solo il TP o il BREAKEVEN o lo STOP & REVERSE, quindi ti consiglio di usare 1% o 2% al massimo come Take Profit.
Buongiorno, le posto il codice leggermente aggiustato che andrebbe bene su molti titoli. il problema è che una volta preso il primo t.p. non sposta lo stop a breakeven.
il problema lo può vedere su NVDA: entrata long ore 16:00, primo tp 16:09 e sarebbe dovuto uscire a breakeven, invece esce alle 18:00 quando il sistema si spegne.
Su AAPL il giorno 06/09/2022 entrata short ore 15:51, primo tp ore 16:03 e poi sarebbe dovuto uscire a breakeven, invece esce alla chiusura del sistema.
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 = 153600
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
//DEFPARAM FLATAFTER = 180000
DEFPARAM FLATBEFORE = 153300
DEFPARAM FLATAFTER = 180000
IF Not OnMarket THEN
Entrata = 0
Uscita = 0
ENDIF
IF (OnMarket AND Not OnMarket[1]) OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THEN
Entrata = TradePrice
Uscita = TradePrice + (TradePrice * 0.0025) //0.25%
IF ShortOnMarket THEN
Uscita = TradePrice - (TradePrice * 0.0025) //0.25%
ENDIF
ENDIF
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
OTD = (Barindex - TradeIndex(1) > IntradayBarIndex)
// Condizioni per entrare su posizioni long
indicator1 = ExponentialAverage[3](close)
indicator2, ignored = CALL "max/min premarket"
c1 = (indicator1 CROSSES OVER indicator2)
indicator3, ignored, ignored, ignored, ignored, ignored, ignored = CALL "PRC_VWAP intraday"
indicator4, ignored = CALL "max/min premarket"
c2 = (indicator3 CROSSES OVER indicator4)
IF (c1 OR c2) AND not daysForbiddenEntry and OTD AND Not LongOnMarket THEN
BUY 30 SHARES AT MARKET
Entrata = close
Uscita = Entrata + (Entrata * 0.0025) //0.25%
ENDIF
// Condizioni per entrare su posizioni short
indicator5 = ExponentialAverage[3](close)
ignored, indicator6 = CALL "max/min premarket"
c3 = (indicator5 CROSSES UNDER indicator6)
indicator7, ignored, ignored, ignored, ignored, ignored, ignored = CALL "PRC_VWAP intraday"
ignored, indicator8 = CALL "max/min premarket"
c4 = (indicator7 CROSSES UNDER indicator8)
IF (c3 OR c4) AND not daysForbiddenEntry and OTD AND Not ShortOnMarket THEN
SELLSHORT 30 SHARES AT MARKET
Entrata = close
Uscita = Entrata - (Entrata * 0.0025) //0.25%
ENDIF
IF (Uscita > 0) THEN
IF LongOnMarket AND close > Uscita THEN
Posizioni = round(abs(CountOfPosition) / 2,1)
SELL Posizioni SHARES AT Market
Uscita = 0
SET STOP BreakEven
ELSIF ShortOnMarket AND close < Uscita THEN
Posizioni = round(abs(CountOfPosition) / 2,1)
EXITSHORT Posizioni SHARES AT Market
Uscita = 0
SET STOP BreakEven
ENDIF
ENDIF
// Stop e target
SET STOP %LOSS 1
SET TARGET %PROFIT 1.5
//
graphonprice Entrata coloured(0,0,255,255)
graphonprice Uscita coloured(255,0,0,255)
graphonprice PositionPrice
Su NVDA non hai indicato la data e non sono riuscito a trovare nessuna entrata alle ore 160000 da 3 mesi a questa parte.
Su AAPL il 6/9 alle 155100 non ho nessuna entrata; ne ho una LONG alle ore 153300.
Mi sa che hai postato un codice diverso da quello che hai usato.
Per cercare di arrivare ad una conclusione è meglio se tu fai i test ed alleghi il file ITF che hai usato, dandomi le date di 2-3 operazioni non corrette. Spero in questo modo di riuscire a duplicare la tua operatività e poter capire il problema.
Operi con IG o con PRT?
Entrata long o short su sfondamento MIn/Max premercato su ritracciamento
This topic contains 38 replies,
has 2 voices, and was last updated by Enrico
3 years, 4 months ago.
| Forum: | ProOrder: Trading Automatico & Backtesting |
| Language: | Italian |
| Started: | 08/29/2022 |
| Status: | Active |
| Attachments: | 1 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.