Mantenere valida una condizione
Forums › ProRealTime forum Italiano › Supporto ProOrder › Mantenere valida una condizione
- This topic has 8 replies, 2 voices, and was last updated 5 years ago by R05.
-
-
09/25/2019 at 9:15 PM #108485
Gent.mi, vi chiedo come poter mantenere valido un massimo/minimo a N periodi per un numero limitato di candele successive, al termine delle quali non si tiene più in considerazione di quel massimo/minimo, finchè non si verifica uno nuovo. Mi spiego meglio: ad esempio alle 10 ho un massimo di giornata o a N periodi, io prenderò in considerazione la possibilità di aprire una posizione short solo se entro le prossime 10 candele si verificano altre condizioni; al termine delle 10 candele si resetta tutto; poi alle 12 ho un nuovo massimo e allora prenderò in considerazione questo massimo solo per le successive 10 candele e cosi via.
Vi allego il sistema che stavo mettendo su, con un codice che dovrebbe fare quello che vorrei, ma purtroppo sbaglio qualcosa. Infatti il problema del sistema seguente è che mi entra ogni qual volta si verifica la condizione z1 a prescindere che siano trascorse o meno 10 candele. Vi premetto che le condizioni di entrata alla voce z1 sono ancora in fase di studio.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647// Definizione dei parametri del codiceDEFPARAM 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 = 090000// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"DEFPARAM FLATAFTER = 173000once miopatternshort = 0If OnMarket or STRATEGYPROFIT <> STRATEGYPROFIT[1] Thenmiopatternshort = 0 //resettare la variabile al valore iniziale, se a mercatoENDIFIF miopatternshort THENIF (BarIndex - miopatternshort) > 10 THENmiopatternshort = 0 //resettare la variabile al valore iniziale dopo n candeleENDIFENDIFONCE TradeOn = 0 //inizializzazione variabileIF OnMarket THENTradeOn = 0 //una volta a mercato azzerare la variabileENDIFTophigh = highest[100](high)z= high<tophighz1 = high > low[1] and high>low[2] and high>low[3] and high>low[4] and high>low[5]if z and z1 thenmiopatternshort=barindexendifIF miopatternshort THEN // se...TradeOn = 1 //...settare la variabile per tradare e...Tophigh = highest[100](high) //...salvare il massimo delle ultime 100 candele.ENDIFIF summation[6](miopatternshort) = 6 THEN //se la condizione è da oltre 5 candele...TradeOn = 0 //...annullare e ripartire da zero.ENDIFIF TradeOn THEN //Se condizioni soddisfatte aprire il tradeSELLSHORT 1 CONTRACT AT low stopENDIF// Stop e targetSET STOP pLOSS 15SET TARGET pPROFIT 1509/25/2019 at 11:49 PM #108488Nel tup esempio qual’è la variabile che vuoi mantenere valida per un massimo di 10 ore?
09/26/2019 at 7:44 AM #10849109/26/2019 at 10:56 AM #108582Intendevo 10 candele, non ore.
Innanzitutto scrivi alla riga 7, o alla 9:
1ONCE NumeroBarra = 0poi sostituisci sia la riga 24 che la riga 34, con queste righe:
1234567891011Tophigh = highest[100](high)IF Tophigh = Tophigh[1] THENIF NumeroBarra <> 0 thenNumeroBarra = NumeroBarra + 1endifIF NumeroBarra >= 10 THENNumeroBarra = 0ENDIFELSENumeroBarra = 1ENDIFSostituisci la riga 41 (che avrà cambiato numero dopo le suddette modifiche) con:
1IF TradeOn AND NumeroBarra > 0 THEN //Se condizioni soddisfatte aprire il trade09/26/2019 at 11:22 AM #108590Grazie Roberto, gentilissimo, quel problema è risolto. Ho notato però che alcune volte la strategia non tiene conto del massimo delle ultime 100 candele, ma entra in posizione lo stesso e poi alle 9:00 appena il sistema parte mi fa fare un’operazione. Ti allego un esempio. Strumento utilizzato dax su time frame 30 secondi.
09/26/2019 at 11:46 AM #108593Utilizza GRAPH per monitorare le variabili che ti interessano per verificare il caso, tipo:
1234GRAPH tophighGRAPH zGRAPH z1GRAPH ....puoi metterne quante ne vuoi, in tal cao vedrai che valore hanno, candela per candele e ti renderai conto quado c’è un valore errato.
1 user thanked author for this post.
10/02/2019 at 10:14 PM #109136Una domanda sul trading sistema su esposto che vale in generale: c’è il modo di riportare l’highest cha va, ad esempio, dalla centesima candela alla quinta precedente alla candela presente; quindi non l’highest delle ultime 100 candele ma l’highest dalla 100 alle ultime 5 senza tenere conto delle ultime 5 candele?
10/02/2019 at 10:41 PM #109137Quindi in pratica 95, dalla 6 alla 100:
1Tophigh = highest[95](high[5]) //il Massimo più alto tra le candele 5-99 precedentisi può scrivere anche:
1Tophigh = highest[100](high)[5] //il Massimo più alto tra le ultime 100 candele, ma prendendo il valore aggiornato alla 5 candela precedenteanzi, dalla 5 alla 99, perché si parte da quella corrente che è la candela 0.
10/02/2019 at 10:44 PM #109138 -
AuthorPosts
Find exclusive trading pro-tools on