Salve ragazzi, è un pò di tempo che provo a scrivere un semplice sistema, ma sono ferma in un punto morto e dopo 1000 tentativi andati a vuoto ho deciso di chieder aiuto qui sperando che qualche anima buona riesca ad aiutarmi.
In sostanza dopo aver verificato che MIO INDICATORE abbia incrociato al rialzo il valore -50
vorrei che venga presa una posizione LONG solo quando avviene la ROTTURA DEL MAX DELLA BARRA CHE HA GENERATO IL SEGNALE
se nel frattempo MIO INDICATORE non abbia vanificato la condizione iniziale e cioè sia ancora sopra il valore -50
Quest’ultima condizione non so proprio come scriverla
Cè qualcuno disposto ad aiutarmi?
Un abbraccio Geronima
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
indicator1 = MIO INDICATORE [10](close)
c1 = (indicator1 CROSSES OVER -50)
c1a = (close > high [ DELLA BARRA CHE HA GENERATO IL SEGNALE, SE C1 ANCORA VALIDO ])
IF c1[1] and c1a THEN
BUY 1 CONTRACT AT MARKET
ENDIF
in pratica quello che non riesco a scrivere è come fare a prender posizione sulla rottura del max della barra che ha generato il sengale c1, sempre che esso sia ancora valido, e cioè mio indicatore sia ancora sopra il -50
ciao
Prova questo (io non l’ho provato perché non ho l’indicatore)
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
ONCE MiaBarra = 0
ONCE PrezzoEntrata = 999999
// Condizioni per entrare su posizioni long
indicator1 = 1//MIO INDICATORE [10](close)
c1 = (indicator1 CROSSES OVER -50)
IF c1 THEN
MiaBarra = BarIndex
PrezzoEntrata = high
ENDIF
// Condizioni per an nullare il segnale precedente
IF (indicator1 CROSSES UNDER -50) THEN
PrezzoEntrata = 999999
ENDIF
// Entrare LONG a mercato (cioè dopo che il prezzo di chiusura ha superato il Massimo della barra del segnale)
c1a = (close > PrezzoEntrata)
IF c1[MiaBarra] and c1a and Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
//ALTERNATIVA:
// entrare LONG al superamento del massimo della barra che ha gerato il segnale, con un ordine pendente
//IF c1[MiaBarra] and Not OnMarket THEN
// BUY 1 CONTRACT AT PrezzoEntrata STOP
//ENDIF
Ho messo in fondo l’alternativa del codice per entrare con ordine pendente.
Grazie Roberto,
l’indicatore è Williams presente in prorealtime, ho usato la crazione semplificata per crearlo, la quale mi ha scritto questo sotto, poi ho cercato invano di modificarlo per fargli fare quello che ho scritto nel primo messaggio.
nota le vendite non le ho messe ancora, per non incasinare il codice….ma una volta che sono riuscita ad ottenere ciò che volgio, le inserirò magari copiando le istruzione della parte long
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
indicator1 = Williams[10](close)
c1 = (indicator1 CROSSES OVER -50)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
indicator2 = Williams[10](close)
c2 = (indicator2 CROSSES UNDER -50)
IF c2 THEN
SELL AT MARKET
ENDIF
ho provato il tuo codice però non mi plotta nulla…non capisco
Il mio codice era solo uno schema, non può fare niente.
Più tardi o domani lo adatterò come hai specificato tu.
Fai delle prove, mi sembra vada bene
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
ONCE MiaBarra = 0
ONCE PrezzoLong = 999999
// Condizioni per entrare su posizioni long
indicator1 = Williams[10](close)
c1 = (indicator1 CROSSES OVER -50)
IF c1 THEN
MiaBarra = BarIndex
PrezzoLong = high
ENDIF
// Condizioni per annullare il segnale precedente
IF (indicator1 CROSSES UNDER -50) THEN
PrezzoLong = 999999
ENDIF
// Entrare LONG a mercato (cioè dopo che il prezzo di chiusura ha superato il Massimo della barra del segnale)
c1a = (close > PrezzoLong)
IF c1[BarIndex - MiaBarra] and c1a and Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
SET STOP pLOSS 10
SET TARGET pPROFIT 20
Può capitare che all’uscita, in profitto o perdita poco importa, se il segnale è sempre valido ED il prezzo è ancora sopra a quello di breakout, il sistema apre nuove operazioni. Non so se è quello che vuoi, fai delle prove e vediamo di aggiustarlo.
Una volta che fa quello che desideri con i LONG passererai (o passseremo, se vuoi) anche agli SHORT.
Roberto innanzi tutto ti ringrazio.
Per capire se è quello che ho in mente e se funzione dovrei inserire anche l’uscita dal LONG. Uscta naturale e cioè quando si verificano le condizioni inverse , tralasciando x un momento stop loss e target che falsano le regole.
Ho provato a inserire le regole x l’uscita adattando il tuo codice, ma non va…..te lo allego, mi correggi per favore gli errori fatti?
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
ONCE MiaBarra = 0
ONCE PrezzoLong = 999999
ONCE PrezzoShort = 0
// Condizioni per entrare su posizioni long
indicator1 = Williams[10](close)
c1 = (indicator1 CROSSES OVER -50)
IF c1 THEN
MiaBarra = BarIndex
PrezzoLong = high
ENDIF
// Condizioni per annullare il segnale precedente
IF (indicator1 CROSSES UNDER -50) THEN
PrezzoLong = 999999
ENDIF
// Entrare LONG a mercato (cioè dopo che il prezzo di chiusura ha superato il Massimo della barra del segnale)
c1a = (close > PrezzoLong)
IF c1[BarIndex – MiaBarra] and c1a and Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
indicator2 = Williams[10](close)
c2 = (indicator2 CROSSES UNDER -50)
IF c2 THEN
MiaBarra = BarIndex
PrezzoShort = low
ENDIF
// Condizioni per annullare il segnale precedente
IF (indicator2 CROSSES OVER -50) THEN
PrezzoShort = 0
ENDIF
//Chiudere LONG a mercato (cioè dopo che il prezzo di chiusura ha superato il Minimo della barra del segnale)
c2a = (close < PrezzoShort)
IF c2[BarIndex – MiaBarra] and c2a and Not OnMarket THEN
SELL 1 CONTRACT AT MARKET
ENDIF
//SET STOP pLOSS 10
//SET TARGET pPROFIT 20
Per scrivere il codice , utilizza il pulsante <> “insert PRT code” in modo da rendere il codice più leggibile. Grazie.
Eccolo, lo commento nel post successivo per potere indicare le linee
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
DEFPARAM PreLoadBars = 0
ONCE MiaBarra = 0
ONCE PrezzoLong = 999999
ONCE PrezzoShort = 0
indicator1 = Williams[10](close)
c1 = (indicator1 CROSSES OVER -50)
c2 = (indicator1 CROSSES UNDER -50)
// Condizioni per entrare su posizioni long
IF c1 THEN
MiaBarra = BarIndex
PrezzoLong = high
PrezzoShort = 0
ENDIF
// Condizioni per annullare il segnale precedente
IF c2 THEN
MiaBarra = BarIndex
PrezzoShort = low
PrezzoLong = 999999
ENDIF
// Entrare LONG a mercato (cioè dopo che il prezzo di chiusura ha superato il Massimo della barra del segnale)
c1a = (close > PrezzoLong)
IF c1[BarIndex - MiaBarra] and c1a and Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
//Chiudere LONG a mercato (cioè dopo che il prezzo di chiusura ha superato il Minimo della barra del segnale)
c2a = (close < PrezzoShort)
IF c2[BarIndex - MiaBarra] and c2a and LongOnMarket THEN
SELL 1 CONTRACT AT MARKET
ENDIF
- Il riferimento all’indicatore WILLIAM’s l’ho messo solo alla linea 8, tanto è sempre lo stesso ed è inutile utilizzare più variabili con nomi diversi per la stessaa cosa
- Entrambe le condizioni C1 e C1, righe 10 e 11, le ho messe all’inizio per chiarezza, quello che conta è QUANDO le utilizzi
- Alla riga 37 ho indicatro che deve chiudere con SELL un posizione LONG già aperta (usando LongOnMarket)
Provalo, io ho fatto solo alcuni test sommari e fammi sapere.
Buon fine settimana!
grazie Roberto, lo provo in giornata max domani.
Buona domenica
Geroniam
Roberto come faccio a dirgli di mettersi SHORT in vece di chiudere la posizione long?
Vuoi metterti SHORT e mantenere aperta anche la posizione LONG?
no!
semplicemente invece di fargli fare la semplice uscita dal long come è ora, vorrei mettermi anche short.
In pratica vorrei che il sistema facesse long e short