Errore al cambio dei valori (da sempre lo stesso risultato)
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Errore al cambio dei valori (da sempre lo stesso risultato)
- This topic has 97 replies, 2 voices, and was last updated 4 years ago by robertogozzi.
Tagged: lot size, lotti, money management
-
-
09/08/2020 at 6:02 PM #143644123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103// Definizione dei parametri del codiceDEFPARAM CumulateOrders = false // Posizioni cumulate attivate// 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 = 230100// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario "Flat After"DEFPARAM FLATAFTER = 230000//TIMEFRAME(default)// Impedisce al sistema di tradare in giorni specifici della settimanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0IF Not OnMarket THENSL = 0TP = 0ENDIF// Condizioni per entrare su posizioni longindicator1 = Average[3](Stochastic[5,3](close))c1 = (indicator1 CROSSES OVER 20)//TIMEFRAME(1 hour,default)indicator2 = ExponentialAverage[9](close)indicator3 = ExponentialAverage[21](close)c2 = (indicator2[1] > indicator3[1])//TIMEFRAME(default)IF (c1 AND c2) AND not daysForbiddenEntry THENIF SL = 0 OR ShortOnMarket THENSL = AverageTrueRange[7](close)*100TP = SL * 3ENDIFBUY 1 SHARES AT MARKETSET TARGET PROFIT TPSET STOP LOSS SLENDIF// Condizioni per entrare su posizioni shortindicator4 = Average[3](Stochastic[5,3](close))c3 = (indicator4 CROSSES UNDER 80)//TIMEFRAME(1 hour,default)indicator5 = ExponentialAverage[9](close)indicator6 = ExponentialAverage[21](close)c4 = (indicator5[1] < indicator6[1])//TIMEFRAME(default)IF (c3 AND c4) AND not daysForbiddenEntry THENIF SL = 0 OR LongOnMarket THENSL = AverageTrueRange[7](close)*100TP = SL * 3ENDIFSELLSHORT 1 SHARES AT MARKETSET TARGET PROFIT TPSET STOP LOSS SLENDIFTIMEFRAME (5minute,upDateOnClose)//************************************************************************//trailing stop functiontrailingstart = 20 //trailing will start @trailinstart points profittrailingstep = 5 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize THENnewSL = newSL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIFGraph TP/pipsize coloured(0,0,255,255)Graph SL/pipsize coloured(255,0,0,255)SET TARGET $PROFIT 150 //150 euro di profittoSET STOP $LOSS 50 //50 euro di perdita
Sto testando questa strategia ma noto che pur cambiando il valore del atr che stabiliscono il mio stop e il mio profit , la posizione come in foto non cambia minimamente pur ?avendo aumentato il valore moltiplicato da 10 a 100 come è possibile non è sbagliato?grazie
09/08/2020 at 6:35 PM #143655Perché esegue sempre per ultime le righe 102 e 103, che quindi sovrascrivono quelle precedenti.
Per cui tutti i calcoli fatti prima di quelle due righe sono ignorati!
09/08/2020 at 8:56 PM #14366209/08/2020 at 9:25 PM #143663Devi decidere quale usare, se lasci così usi le righe 102 e 103, altrinenti le togli ed usi l’Atr.
Entrambe le cose non puoi averle.
09/08/2020 at 9:28 PM #143665Quindi non posso avere take profit e stop loss fissi se ho l’atr? perchè io utilizzo l’atr solo per vedere la volatilità in quel momento per impostare uno stop loss più adeguato al momento in cui si trova però vorrei che comunque il valore che perdo e che vinco siano comunque fissi.. non c’è un modo?
09/08/2020 at 11:18 PM #143667No, come fai ad avere due stop diversi, uno variabile ed uno fisso, quale deve usare il broker?
Il codice viene eseguito in sequenza, se metti due identiche istruzioni vengono eseguite tutte, ma ognuna sovrascrive quella precedente, per cui solo l’ultima sarà quella che conta.
09/09/2020 at 9:20 AM #143691Eh infatti io non vorrei due stop diversi io vorrei che qualunque sia il valore del atr*10 (come da istruzione) mi dia sempre lo stesso valore di stop loss e di take profit, indipendentemente de sia di 10 o 100 pips,l atr mi serve solo per definire uno stop adeguato in base alla volatilità ma se per arrivare in stop passano 2 candele o 20 io vorrei avere sempre la stessa perdita. Non c’è un modo per fare questo?non si potrebbe magari inserire un istruzione per modulare la size delle operazioni in base al valore dell’art?!
09/09/2020 at 11:18 AM #143709Ok, quindi ti servono stop diversi, ma non contemporaneamente.
Questo dopo N candele passa a quello fisso (sostituisci le righe 102-103 con queste):
1234IF (BarIndex - TradeIndex) >= 10 THEN //cambia diopo 10 candeleSET TARGET $PROFIT 150 //150 euro di profittoSET STOP $LOSS 50 //50 euro di perditaENDIF09/09/2020 at 12:15 PM #143723Si esatto mi servono stop diversi ma ognuno per ogni posizione, quello delle candele era solo un esempio, non è come vorrei io, cioè dovrei mettere che se ad esempio l’atr segna 0.2 pips che moltiplicato per 10 da 2 pips , il valore di questo stop di 2 pips sia di 50 euro, ma se la posizione dopo l’atr sta 1.0 quindi per 10 fa 10 pips, il valore di questo stop è comunque 50 euro, l’atr serve solo per stabilire stop e profit più giusti ma a qualsiasi valore sia l’atr lo stop deve essere sempre di 50 euro e il profit di 150 euro, forse mi sono spiegato un pochino meglio..
09/09/2020 at 1:46 PM #143746Non è che abbia capito molto, cerca di rispiegarmelo meglio, magari con qualche calcolo.
09/09/2020 at 2:56 PM #143757Ok ci provo,questa era una strategia che usavo manualmente,quindi quando erano rispettate tutte le condizioni aprivo una posizione, per decidere stop e profit utilizzavo un atr e quindi facevo valore dell atr per 10 (es. 0.2*10=2 pips valore dello stop) quando manualmente settavo i parametri di stop e profit vedendo che l atr mi dava valore 2 pips di stop, settavo quindi 2 pips di stop e 6 pips di profit, e la size (in lotti), della posizione la modificavo io in base a quanti erano i pips, e aumentavo il numero di lotti fino a che non mi dava che lo stop di 2 pips corrispondeva a 50 euro e i 6 pips di profit mi davano 150 euro, (faccio un esempio,se lo stop era di 2 pips e il profit di 6 e se la size la facevo da 1 lotto mi dava 50 euro di stop e 150 di profit, se aprivo una posizione successivamente e lo stop di quest’altra posizione era di 1 pip e il profit di 3 pips il lotti che mettevo erano 2 che corrispondevano a 50 e 150 euro,non più 1 lotto sennò mi avrebbe dato 25 e 75 la metà) quello che voglio dirti e che la size deve essere differente per ogni posizione per far in modo che i valori di stop e di profit siano sempre quelli.
09/10/2020 at 1:36 PM #143869Allora ho fatto i calcoli esatti di come dovrebbe essere facciamo un ipotesi su eur/usd sono rispettate le condizioni per un entrata long in cui il valore finale dello stop loss dato dal valore del atr*10 è uguale a 20. Quindi stop loss 20 pips, take profit 60 pips, io vorrei che il mio stop loss e take profit sia sempre lo stesso valore di soldi indipendentemente dai quanti siano i pips, quindi stop loss 50 euro e take profit 150 euro (anche se i pips sono 10, 20,50) la perdita deve essere sempre 50 euro, cosi facendo si dovrebbe dare ogni volta un valore diverso ad un singolo pip, continuando con l’esempio stop di 20 pips, facciamo 50/20=2.5 ho fatto 50 euro che è la quantità di soldi che perdo diviso i pips che mi ha dato l’atr*10, il risultato mi da 2.5 euro che è il valore di ogni sigolo pips, lo trasformo in dollari della mia valuta mi viene 3 dollari ogni pips, a questo punto devo sapere con quanti lotti dovrei aprire la posizione quindi faccio 3$/10$(che è il valore di un pip di 1 lotto)=0.3 lotti. In conclusione in questo caso avendo uno stop di 20 pips che per me in euro deve avere un valore fisso che è 50, aprirò una posizione con 0.3 lotti perchè cosi facendo ogni pip vale 2.5 euro ed il risultato finale dello stop loss è di 50 euro. Questo è il calcolo per definire il mio stop e profit e con quanto si deve aprire una posizione spero di essere stato chiaro.
09/11/2020 at 11:13 AM #143930Ecco il calcolo (righe 2 – 8):
1234567891011121314buy at -close limitrisk = 200 //max. capitale da rischiarelotti = 1 //1 lotto per difettoSL1 = AverageTrueRange[14](close) / pipsizeSL2 = SL1 * 10 //10 volte AtrSL3 = round(SL2)Soldi = SL3 * pointvalue //convertire i pips in valore totaleLotti = risk / Soldi //calcolare la taglie dei lottiLotti = max(0.5,Lotti) //verificare che il lotto non scenda sotto il minimograph SL1graph SL2graph SL3graph Soldigraph LottiLa riga 1 è richiesta da ProBackTest per fare girare una strategia (non fa assolutamente niente perché non si può comprare al prezzo corrente trasformato in negativo).
La riga 9 è facoltativa, se vuoi impedire che il numero di lotti calcolato scenda sotto il minimo richiesto (per DAX €1 il minimo è 0.5).
Le righe 10 – 14 servono per fare il debugging (correzione errori) e ti fanno vedere, candela per candela soffermandotici col mouse, i valori delle variabili nell’apposito riquadro che ho cerchiato in verde nella foto allegata.
09/11/2020 at 12:06 PM #143944Ok siamo sulla buona strada perchè hai capito cosa intendessi io, ma c’è ancora qualche problema perchè chiude ancora alcune posizioni in modo errato, se abbiamo impostato il valore del risk=200 non dovrebbe perdere al massimo 200 euro? poi per quanto riguarda riga 3- dovrebbe essere valore della atr*10 poi fare risk/(atr*10) e trovo il valore di un pip e poi fare questo valore/valore di un pip di 1 lotto(cioè quello di default) cosi facendo troviamo il lotti con cui deve aprire la posizione. Ho provato ad aggiustarla io ma non ho avuto il risultato sperato.
123456789101112131415buy at -close limitrisk = 50 //max. capitale da rischiarelotti = 1 //1 lotto per difettoSL1 = AverageTrueRange[7](close)*10 // 10 volte atrSL2 = risk/SL1 //valore di 1 pipSL3 = round(SL2)Soldi = SL3 * pointvalue //convertire i pips in valore totale//6-7 riga non ho ben capito cosa succedaLotti = Soldi/pipsize //calcolare la taglie dei lotti (il calcolo è cosi se per pipsize si intende il valore di default di un pip)Lotti = max(0.5,Lotti) //verificare che il lotto non scenda sotto il minimograph SL1graph SL2graph SL3graph Soldigraph Lotti09/11/2020 at 5:45 PM #143955Se alla riga 10 metti che prenda almeno 0.5 lotti non è più sicuro che rischi solo la somma che hai stabilito.
Se il risultato della riga 9 viene 0.02 è chiaro che non rispetta il minimo, quindi l’ordine ti verrà respinto.
In sostanza se vuoi rischiare solo € 200, o 50, NON puoi tradare il DAX ma altri strumenti, se vuoi mantenere lo SL fisso, come hai detto.
Se invece fai lo SL variabile, allora non ci sono problemi, lasci il numero di lotti fisso e vari lo stop loss.
O l’una o l’altra. Entrambe le cose sono incompatibili tra loro.
Nota: il valore dei pips NON si può cambiare, per il DAX standard è €25/pip, €5/pip per il mini DAX ed €1/pip per il micro DAX, €10/pip per EurUsd standard, €1/pip per mini EuroUsd, ecc… Puoi cambiare il numero di pips (per SL e TP) oppure il numero di LOTTI, ma il pip in se stesso è costante.
Puoi farti un indicatore come questo:
1RETURN PipSize AS "Taglia di 1 pip",PipValue AS "Valore di 1 pip"per vedere con i vari strumenti il loro valore.
-
AuthorPosts
Find exclusive trading pro-tools on