Certo, devi mettere al posto dei puntini il timeframe che desideri.
Cerca la parola TIMEFRAME o MTF e troverai un sacco di informazioni al riguardo.
Per la ricerca usa l’apposita casella che si apre quando passi sopra il tuo avatar in alto a destra (sulla barra Blù).
Roberto l’ordine pendente non condiziona tutte le altre condizioni vero? cioè il sistema entra in acquisto in altre operazioni indipendentemente dal fatto che venga toccato o meno l’ordine pendente è cosi?
siccome il sistema opera su timeframe H4 – 1 mese , nella riga 24 Timeframe(…..) dovrei scrivere così tra le parentesi? Timeframe(4h …..)
Devi scrivere uno di questi due:
Timeframe(4h,UpdateOnClose)
// oppure
Timeframe(4h,default) //va bene anche Timeframe(4h), DEFAULT è assunto per difetto
Roberto adesso lo ho testato su Dax30 ma non applica la condizione delle 2 candele H4 verdi prima di entrare….per caso è perchè questa condizione è considerata valida dal sistema solo se il prezzo è maggiore di 15800?
No, non mi sembra che 15800 c’entrasse qualcosa con l’entrata a mercato (salvo tu abbia cambiato qualcosa).
Usa GRAPH per monitorare le variabili dopo il backtest (nella finestra delle variabili di proBackTest). Aggiungi GRAPH con tutte le variabili che t’interessano (mi pare il limite sia 10):
GRAPH c1
GRAPH c2
GRAPH c3
GRAPH l1
GRAPH l2
ecc…
non ho modificato nulla, ma purtroppo testando e ritestando vedo che il sistema non applica la condizione delle 2 candele verdi H4 prima di entrare in acquisto sui massimi, puoi aiutarmi?, davvero non riesco….. tra l’altro tale condizione vorrei farla applicare al sistema solo sui massimi assoluti o di periodo.
Grazie mille Roberto.
Usando GRAPH, la condizione delle due candele è vera o falsa?
non me lo fa fare mi blocca il numero di combinazioni….tra l’altro sono inesperto non ci capisco nulla Roberto abbi pazienza……se mi aiuti davvero non riesco a capirci nulla. Ancora grazie per la tua pazienza. Ciao
ho aperto finestra ottimizzazione variabili prima di effettuare il backtest, quando ho inserito GRAPH c1 , c2, c3, L1 poi mi blocca e la riga diventa rossa…..ma non capisco a cosa ti riferivi su True o False.
Questo funziona (l’ho provato sul DAX, timeframe a 30 minuti):
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
Timeframe(4 hour,UpdateOnClose)
Cond = (summation[2](close > open) = 2)
Timeframe(default)
t1 = (OpenDayOfWeek = 1) AND (Time >= 010000) AND (Time <= 210000)
t2 = (OpenDayOfWeek = 2) AND (Time >= 010000) AND (Time <= 210000)
t3 = (OpenDayOfWeek = 3) AND (Time >= 010000) AND (Time <= 210000)
t4 = (OpenDayOfWeek = 4) AND (Time >= 010000) AND (Time <= 210000)
t5 = (OpenDayOfWeek = 5) AND (Time >= 010000) AND (Time <= 170000)
x1 = (OpenDayOfWeek = 1) AND (Time = 240000)
x2 = (OpenDayOfWeek = 2) AND (Time = 240000)
x3 = (OpenDayOfWeek = 3) AND (Time = 240000)
x4 = (OpenDayOfWeek = 4) AND (Time = 240000)
x5 = (OpenDayOfWeek = 5) AND (Time = 210000)
//
If OnMarket AND (x1 OR x2 OR x3 OR x4 OR x5) THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
ONCE TradeON = 1
// riprendere l’operatività se è rimasta sospesa per 20 candele
IF Summation[20](TradeON = 0) = 20 THEN
TradeON = 1
ENDIF
// Condizioni per entrare su posizioni long
L1 = t1 OR t2 OR t3 OR t4 OR t5
L2 = Not OnMarket
indicator1 = DonchianChannelDown[20]
c1 = (close <= indicator1)
indicator2 = Stochastic[50,1](close)
c2 = (indicator2 <= 78)
c3 = (close <= close[20])
IF c1 OR c2 OR c3 OR (L1 AND L2) AND Cond AND TradeON THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// se a mercato già da 10 candele ed il prezzo raggiunge 15800, chiudere
// le posizioni e sospendere l’operatività
IF LongOnMarket AND ((BarIndex - TradeIndex) >= 10) AND (close >= 15800) THEN
TradeON = 0
ENDIF
IF close < 13770 THEN //acquista ad un prezzo maggiore
BUY 1 CONTRACT AT 13770 STOP
ELSIF close > 13770 THEN //acquista ad un prezzo migliore
BUY 1 CONTRACT AT 13770 LIMIT
ELSE //acquista a mercato
BUY 1 CONTRACT AT MARKET
ENDIF
// Stop e target
SET STOP PLOSS 141 //529 //398//398
SET TARGET PPROFIT 271 //395
//
graph Cond
graph c1
graph c2
graph c3
graph L1
graph L2
graph TradeON
in effetti la riga 5 l’ho variata leggermente affinché verificasse esattamente le 2 candele consecutive rialziste).
Le variabili aggiunte alla fine con l’istruzione GRAPH, devono essere rimosse oppure commentate (mettendoci le doppie barre iniziali).
Per usare più timeframe devi ricercare le parole TIMEFRAME ed MTF e studiarti il materiale (consulta anche il Blog).
Per il discorso TRUE e FALSE, cioè VERO e FALSO, sono valori logici (booleani) a cui viene assegnato 0 (falso) oppure 1 (vero) e servono per sapere quando una condizione è verificata o meno.
IF…ENDIF è un costrutto condizionale che si basa proprio su questi valori ed è il costrutto più utilizzato nei codici ProRealTime, poi ci sono i cicli FOR…NEXT e WHILE…WEND, quest’ultimo opera anch’esso sui valori booleani.
Devi leggerti (studiarti) qualcosa che riguarda questi elementi basilari, altrimenti puoi usare la creazione assistita, ma è difficile poi metterci le mani sopra senza sapere programmare per niente.
L’alternativa è esporre le tue idee e chiedere che siano codificate da qualcuno del forum (come molti fanno), che siano screener, indicatori e strategie (ognuno nel proprio forum di supporto specifico). Secondo cosa chiedi puoi dovere aspettare anche qualche giorno tuttavia.
Ciao Roberto, l’ho testato anche sul DowJones purtroppo non funziona (non aspetta la chiusura delle 2 candele verdi) ti indico le candele in H4 tra le varie , una è dell’11 maggio 2021 delle ore 5:00 (il sistema entra in buy addirittura dopo 3 candele rosse) un’altra è quella del 12 maggio 2021 delle ore 21:00.
C’era un errore logico nel raggruppamento delle condizioni alla riga 42, che va cambiata con:
IF (c1 OR c2 OR c3) AND L1 AND L2 AND Cond AND TradeON AND Not OnMarket THEN
Ci sono poi le righe da 52 a 58 che non sono subordinate alle altre condizioni.
ciao Roberto, finalmente va bene ma ho dovuto scrivere cosi: IF (c1 or c2 or c3 or (L1 and L2)) and Cond and TradeON THEN
Osservando il comportamento del sistema stò cercando di metterlo a “dura prova” per cercare di renderlo più stabile possibile, pertanto ad esempio nell’ultimo forte ribasso degli ultimi 2 giorni del Dow Jones ho pensato di aggiungere una nuova condizione che voglio rendere attiva SOLO in un intervallo di prezzo (esempio : 34850 – 34450) fin tanto che il prezzo si trova in questo range tra questi 2 valori allora voglio attivare questa nuova condizione cioè di autorizzare a comprare dopo 3 candele verdi invece di 2, quindi , quando il prezzo uscirà da tale range voglio che ritorni valida esclusivamente la precedente condizione (quella di 2 candele verdi)……ho pensato di scriver così ma non son sicuro che possa andar bene:
bottom = 15000
up = 15800
Timeframe(4 hour,UpdateOnClose)
Cond = (summation[3](close > open) = 3)
Timeframe(default)
…
IF Close > bottom AND Close < up AND Cond THEN
BUY…
ELSE
Tutte le altre condizioni
se va bene ti chiedo come devo inserirlo per avere tale condizione attiva SOLO quando richiesto e lasciare la precedente condizione valida quando il prezzo al di fuori del Range?
Grazie mille ciao.
Roberto ho rimodulato il sistema cosi eliminando la riattivazione delle 20 candele se sistema è inoperativo e quello delle 10 se il sistema è a mercato dopo che ha raggiunto i massimi, dopo tutte le osservazioni varie e ponendo Cond1 (per le 2 candele verdi) e Cond2 (per le 5 candele verdi quando prezzo si trova nel range) , puoi per cortesia vedere se ci sono errori?
Nella definizione di IF devo porre Cond1 AND Cond2 oppure Cond1 OR Cond2 ? penso sia AND se voglio che la condizione delle 5 candele sia valida ed applicata SOLO se il prezzo si trova all’interno del range.
ti posto il codice
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
Timeframe(4 hour,UpdateOnClose)
Cond1 = (summation[2](close > open) = 2)
Timeframe(default)
t1 = (OpenDayOfWeek = 1) AND (Time >= 010000) AND (Time <= 210000)
t2 = (OpenDayOfWeek = 2) AND (Time >= 010000) AND (Time <= 210000)
t3 = (OpenDayOfWeek = 3) AND (Time >= 010000) AND (Time <= 210000)
t4 = (OpenDayOfWeek = 4) AND (Time >= 010000) AND (Time <= 210000)
t5 = (OpenDayOfWeek = 5) AND (Time >= 090000) AND (Time <= 170000)
x1 = (OpenDayOfWeek = 1) AND (Time = 240000)
x2 = (OpenDayOfWeek = 2) AND (Time = 240000)
x3 = (OpenDayOfWeek = 3) AND (Time = 240000)
x4 = (OpenDayOfWeek = 4) AND (Time = 240000)
x5 = (OpenDayOfWeek = 5) AND (Time = 170000)
//
If OnMarket AND (x1 OR x2 OR x3 OR x4 OR x5) THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
ONCE TradeON = 1
bottom = 34350
up = 34880
Timeframe(4 hour,UpdateOnClose)
Cond2 = (summation[5](close > open) = 5)
Timeframe(default)
// Condizioni per entrare su posizioni long
L1 = t1 OR t2 OR t3 OR t4 OR t5
L2 = Not OnMarket
indicator1 = DonchianChannelDown[20]
c1 = (close <= indicator1)
indicator2 = Stochastic[50,1](close)
c2 = (indicator2 <= 78)
c3 = (close <= close[20])
IF (c1 or c2 or c3 or (L1 and L2)) and Cond1 and Cond2 and TradeON AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Stop e target
SET STOP PLOSS 580//529 //398//398
SET TARGET PPROFIT 434 //395