salve, ipotizzando di avere 100 condizioni tipo c1,c2,c3 etc fino a c100, ho provato a mettere nella riga if: cx e poi aggiungere la x sulla schermata ottimizzazione variabili per far cercare alla macchina quale condizione delle 100 sia la migliore, cosi facendo il prt mi da errore e non accetta di testare solo la x restando invariata la c, ho anche provato a chiamare le variabili solo con numeri ma sempre errore lo stesso, come potrei fare per automatizzare i test? grazie
Se vuoi ottimizzarne una per volta devi metterne una per volta in IF.
Che ne dici di impostare una “condizione Flag” per ciascuna delle condizioni C1 e ottimizzare Flag?
Se C1 Allora
Flag = 1
Se C2 Allora
Flag = 2
Se C3 …. etc etc
Ti sembra un peccato rinunciare alla tua idea leo di menno soprattutto se hai messo insieme 100/molte condizioni in un’unica Strategia?
ciao, non so usare la funzione flag, potresti farmi un esempio per favore?
È più facile se pubblichi il tuo codice e poi provo la mia idea su un esempio funzionante?
Dico sopra perché per essere sicuro del mio codice, dovrei prima testare il mio codice.
Quindi potrei anche far funzionare la mia idea sul tuo codice?
Ecco un esempio (di utilizzo di Flag) del nostro gentile e cordiale programmatore interno Roberto.
https://www.prorealcode.com/topic/once-function-combined-with-a-stop/#post-163209
usa un flag (una variabile, indipendentemente dal nome, che viene utilizzata per segnalare qualcosa). Questo flag dovrebbe essere impostato su 0 quando non è sul mercato, quindi impostato su 1 ogni volta che c11 è true.
Quindi puoi effettuare l’ordine stop mentre questo flag è vero:
if not OnMarket then
Flag = 0
endif
c1 = OnMarket and (barindex – tradeindex <= 45)
IF Flag = 0 then
c11 = close >= (tradeprice + 14*pipsize) //you may use HIGH instead of CLOSE, PIPSIZES makes your code portable
Flag = 1
endif
If not onmarket then
buy 5 contract at market
endif
if Flag then
sell at Fulllongstop stop
endif
Prova con questo sistema (non so quante variabili accetta l’ottimizzatore, tenendo presente che ognuna ha 2 valori, 0 e 1, quindi saranno 2^N combinazioni):
// ottimizza Var1, Var2,... VarN con i soli valori 0 e 1 (con 0 la condizione è disabilitata, con 1 è abilitata)
//
Cond1 = close > average[100,0](close) AND Var1 //il prezzo deve essere > della Sma100
Cond2 = Rsi[14](close) CROSSES OVER 50 AND Var2 //Rsi incrocia al rialzo la linea mediana
Cond3 = summation[3](close > close[1]) = 3 AND Var3 //nelle ultime 3 candele il prezzo di chiusura è sempre più alto
.
.
CondN = close > open AND VarN //la candela corrente deve essere rialzista
//
Cond = Cond1 OR Cond2 OR Cond3... OR CondN //se basta che una condizione sia vera
Cond = Cond1 AND Cond2 AND Cond3... AND CondN //se tutte le condizioni devono essere vere
Cond = Cond1 OR (Cond2 AND Cond3),.... //puoi usare OR, AND per combinarle a piacere