impedire al sistema di continuare a comprare sui massimi.
Forums › ProRealTime forum Italiano › Supporto ProOrder › impedire al sistema di continuare a comprare sui massimi.
- This topic has 30 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
-
-
06/17/2021 at 2:44 PM #171944
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ù).06/17/2021 at 3:28 PM #17195506/17/2021 at 3:51 PM #17195606/17/2021 at 4:12 PM #171958Devi scrivere uno di questi due:
123Timeframe(4h,UpdateOnClose)// oppureTimeframe(4h,default) //va bene anche Timeframe(4h), DEFAULT è assunto per difetto06/17/2021 at 4:23 PM #17195906/17/2021 at 4:35 PM #171960No, 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):
12345GRAPH c1GRAPH c2GRAPH c3GRAPH l1GRAPH l2ecc…
06/17/2021 at 4:48 PM #171961non 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.
06/17/2021 at 5:03 PM #171962Usando GRAPH, la condizione delle due candele è vera o falsa?
06/17/2021 at 6:11 PM #17196306/17/2021 at 8:33 PM #17196406/18/2021 at 9:00 AM #171969Questo funziona (l’ho provato sul DAX, timeframe a 30 minuti):
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateTimeframe(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) THENSELL AT MARKETEXITSHORT AT MARKETENDIFONCE TradeON = 1// riprendere l’operatività se è rimasta sospesa per 20 candeleIF Summation[20](TradeON = 0) = 20 THENTradeON = 1ENDIF// Condizioni per entrare su posizioni longL1 = t1 OR t2 OR t3 OR t4 OR t5L2 = Not OnMarketindicator1 = 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 THENBUY 1 CONTRACT AT MARKETENDIF// 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) THENTradeON = 0ENDIFIF close < 13770 THEN //acquista ad un prezzo maggioreBUY 1 CONTRACT AT 13770 STOPELSIF close > 13770 THEN //acquista ad un prezzo miglioreBUY 1 CONTRACT AT 13770 LIMITELSE //acquista a mercatoBUY 1 CONTRACT AT MARKETENDIF// Stop e targetSET STOP PLOSS 141 //529 //398//398SET TARGET PPROFIT 271 //395//graph Condgraph c1graph c2graph c3graph L1graph L2graph TradeONin 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.
06/18/2021 at 3:39 PM #172000Ciao 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.
06/18/2021 at 4:14 PM #172006C’era un errore logico nel raggruppamento delle condizioni alla riga 42, che va cambiata con:
1IF (c1 OR c2 OR c3) AND L1 AND L2 AND Cond AND TradeON AND Not OnMarket THENCi sono poi le righe da 52 a 58 che non sono subordinate alle altre condizioni.
06/19/2021 at 2:41 PM #172034ciao 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 condizionise 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.
06/19/2021 at 3:23 PM #172036Roberto 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
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateTimeframe(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) THENSELL AT MARKETEXITSHORT AT MARKETENDIFONCE TradeON = 1bottom = 34350up = 34880Timeframe(4 hour,UpdateOnClose)Cond2 = (summation[5](close > open) = 5)Timeframe(default)// Condizioni per entrare su posizioni longL1 = t1 OR t2 OR t3 OR t4 OR t5L2 = Not OnMarketindicator1 = 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 THENBUY 1 CONTRACT AT MARKETENDIF// Stop e targetSET STOP PLOSS 580//529 //398//398SET TARGET PPROFIT 434 //395 -
AuthorPosts
Find exclusive trading pro-tools on