Buongiorno Roberto,
chiedo cortesemente aiuto per scrivere questa strategia:
Timeframe: 1 minuto
Strategia:
- Rileva l’escursione massima delle ultime 2 candele.
- Se l’escursione è superiore allo 0.005%:
- Se l’escursione è negativa, compra 1 contratto con target price al prezzo massimo delle 2 ultime candele.
- Se l’escursione è positiva, vende 1 contratto con target price al prezzo minimo delle 2 ultime candele.
- Il codice deve impedire l’apertura di una posizione inversa quando già sul mercato.
Grazie mille per il tuo aiuto.
Cordiali saluti, Simone
scusa ma cosa intendi per “escursione”.
intendi l’ampiezza della candela tra high e low ?
@ Roberto
così è giusto???
DEFPARAM CUMULATEORDERS =FALSE
TIMEFRAME (2 MINUTE)
CC=close[1]
OO=open[1]
timeframe (default)
if not onmarket and CC>OO and CC/OO>FX then
sellshort 1 contract at market
endif
if not onmarket and CC<OO and OO/CC>FX then
buy 1 contract at market
endif
timeframe (default)
if shortonmarket then
exitshort at CC limit
endif
if longonmarket then
sell at OO limit
endif
SCUSATE L’ERRORE
QUESTO DOVREBBE ESSERE OK.
DEFPARAM CUMULATEORDERS =FALSE
TIMEFRAME (15 MINUTE)
CC=close[1]
OO=open[1]
timeframe (default)
if not onmarket and CC>OO and ((CC-OO)/CC)*100>FX then
sellshort 1 contract at market
endif
if not onmarket and CC<OO and ((OO-CC)/OO)*100>FX then
buy 1 contract at market
endif
timeframe (default)
if shortonmarket then
exitshort at CC limit
endif
if longonmarket then
sell at OO limit
endif
Mi sembra più corretta questa versione (non ho previsto un’uscita perché non richiesta):
DEFPARAM CUMULATEORDERS =FALSE
Massimo = highest[2](high)
Minimo = lowest[2](low)
Rialzo = close > open
Ribasso = close < open
IF Rialzo THEN
Escursione = range
ELSIF Ribasso THEN
Escursione = -range
ENDIF
CondS = (summation[2](Escursione > 0) = 2)
CondL = (summation[2](Escursione < 0) = 2)
if not onmarket then
if CondL THEN
BUY 1 contract at Market
Set Target PROFIT Massimo - close
elsif CondS THEN
SELLSHORT 1 contract at Market
Set Target PROFIT close - Minimo
endif
endif
il timeframe non l’ho specificato in quanto viene usato solo 1 minuto, quindi non serve.
Buongiorno,
desidero ringraziare tutti per l’aiuto.
Scusate ma ho scritto la richiesta in maniera errata e con i vostri suggerimenti non riesco a modificare il codice per ottenere quello che vorrei, quindi riformulo:
Strategia:
- Rileva l’escursione massima delle ultime N(Variabile) candele.
- Se l’escursione è superiore alla Percentuale(variabile), procede così:
- Se l’escursione è negativa, compra 1 contratto con target price al prezzo massimo delle N candele * coeff (variabile).
- Se l’escursione è positiva, vende 1 contratto con target price al prezzo minimo delle N candele * coeff (variabile).
- Il codice deve impedire l’apertura di una posizione inversa quando già sul mercato.
- Dopo un trade, il sistema deve entrare in pausa per PausaNBarre(variabile) e poi riprendere.
Lo scopo è di rilevare movimenti più o meno veloci e acquistare o vendere in controtendenza in corrispondenza dei massimi o dei minimi del movimento.
Grazie mille per il vostro aiuto.
Ecco:
DEFPARAM CUMULATEORDERS = FALSE
ONCE N = 20 //20 candele lookback per escursione
ONCE PC = 2.5 / 100 //2.5% percentuale
ONCE Coeff = 5.0 / 100 //5% coefficiente
ONCE Pausa = 10 //10 candele di pausa dopo la chiusura di un'operazione
ONCE Cont = Pausa + 1
Massimo = highest[N](high)
Minimo = lowest[N](low)
MaxHH = Massimo <> Massimo[1]
MinLL = Minimo <> Minimo[1]
Escursione = Massimo - Minimo
Esc = Escursione > (Massimo * PC)
IF BarsSince(MaxHH) > BarsSince(MinLL) THEN
Escursione = Minimo - Massimo
Esc = abs(Escursione) > (Minimo * PC)
ENDIF
CondL = Esc AND (Escursione < 0)
CondS = Esc AND (Escursione > 0)
if not onmarket THEN
IF (Cont >= Pausa) then
if CondL THEN
BUY 1 contract at Market
Set Target PRICE Massimo * (1 + Coeff)
Cont = 0
elsif CondS THEN
SELLSHORT 1 contract at Market
Set Target PRICE Minimo * (1 - Coeff)
Cont = 0
endif
ENDIF
Cont = Cont + 1
endif
graph Cont
//graph Esc * 100 coloured("Red")
//graph Escursione
//graphonprice Massimo coloured("Fuchsia")
//graphonprice Minimo coloured("Fuchsia")
//graphonprice Massimo * (1 + Coeff) coloured("Blue")
//graphonprice Minimo * (1 - Coeff) coloured("Red")
Grazie Roberto gentilissimo!!
ciao Simon,
l’ho testato e funziona a 1M.
pero’ non capisco a cosa serve la pausa, visto che peggiora i risultati
Ciao MaoRai54, l’ho inserita per decidere se fare solo 1 operazione al giorno, oppure ottimizzandola come variabile in alcuni casi potrebbe essere utile. Tutto comunque da testare. Saluti