Nel codice acquista e vende SEMPRE 1, perché quella è la cifra che hai messo con BUY/SELLSHORT.
Tu puoi fare tutti i calcoli che vuoi, ma se al momento di entrare in posizione ci scrivi 1, quello è! Dovresti usare al posto di 1 la variabile contenente il numero dei lotti calcolati.
Quindi se scrivo la formula dei lotti su buy/sell short dovrebbe andare bene?
Questo dovrebbe andare bene:
// Definizione dei parametri del codice
DEFPARAM 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 settimana
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
IF Not OnMarket THEN
SL = 0
TP = 0
ENDIF
//
risk = 50 //max. capitale da rischiare
lotti = 1 //1 lotto per difetto
MyATR = AverageTrueRange[7](close)*10 // 10 volte atr
//
Pips = Risk / PipValue //Ricalcola
SET STOP pLOSS Pips
//
// Condizioni per entrare su posizioni long
indicator1 = 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 THEN
IF SL = 0 OR ShortOnMarket THEN
SL = MyATR
TP = SL * 3
ENDIF
BUY Lotti SHARES AT MARKET
SET TARGET PROFIT TP
SET STOP LOSS SL
ENDIF
// Condizioni per entrare su posizioni short
indicator4 = 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 THEN
IF SL = 0 OR LongOnMarket THEN
SL = MyATR
TP = SL * 3
ENDIF
SELLSHORT Lotti SHARES AT MARKET
SET TARGET PROFIT TP
SET STOP LOSS SL
ENDIF
TIMEFRAME (5minute,upDateOnClose)
//************************************************************************
//trailing stop function
trailingstart = 20 //trailing will start @trailinstart points profit
trailingstep = 5 //trailing step to move the "stoploss"
//reset the stoploss value
IF NOT ONMARKET THEN
newSL=0
ENDIF
//manage long positions
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
newSL = tradeprice(1)+trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
newSL = newSL+trailingstep*pipsize
ENDIF
ENDIF
//manage short positions
IF SHORTONMARKET THEN
//first move (breakeven)
IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
newSL = tradeprice(1)-trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
newSL = newSL-trailingstep*pipsize
ENDIF
ENDIF
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
//
//graph Pips
//Graph TP/pipsize coloured(0,0,255,255) AS "TP"
//Graph SL/pipsize coloured(255,0,0,255) AS "SL"
//Graph TradePrice - close coloured(0,128,0,255) AS "Gain"
Ah ok quindi prende in considerazione sempre 1 lotto qua? e non capisco la riga 21-22 cosa fanno?
Calcolano i Pips, su Mini EURUSD o DAX €1 50 euro saranno 50 pips, su EURUSD normale saranno 5 pips, sul DAX €25 saranno solo 2 pips!
Si agisce sui pips, ma si può agire anche sui lotti.
Ah ok che differenza c’è tra set stop pLOSS “pips” e set stop loss “SL” e quale prende in cosiderazione?
E come posso andare ad agire su i lotti?
Ti posto due foto per come vorrei che le mie posizioni siano aperte e gestite, in questa foto ci sono due posizioni con due differenti stop loss e due differenti take profit, essendo nata come una strategia discrezionale quindi ero io manualmente a decidere la size, lo stop loss e quindi il take profit ,era tutto facile stabilire sempre la stessa perdita (50 euro) pur avendo il valore in pips differenti (10 e 5 ) come posso scrivere tutto questo sotto forma di istruzioni per far si che il programma faccia quello che facevo io manualmente quindi andare a modulare la quantità e di conseguenza il valore dei pips per far si che abbia sempre stop loss 50 e take profit 150?!
Con LOSS devi indicare una differenza di prezzo (es.: 0.0040) che sei disposto a perdere
Con pLOSS devi indicare i pips (es.: 40) che sei disposto a perdere
Con $LOSS devi indicare il valore monetario che sei disposto a perdere (nell’unità della valuta del tuo conto, non dei dollari, anche se il simbolo è sempre $ per chiunque)
Con %LOSS devi indicare quanto sei disposto a perdere in % sul prezzo d’entrata a mercato.
Dalle foto non si capisce che calcolo vuoi fare.
Il mio esempio sopra agisce sui pips. Quello che ti avevo fatto prima agiva sui lotti.
Quello che volevo mostrarti con le foto che, nonostante i pips di stop siano diversi sulle due posizioni ipotizzando che lo stop sia dato dal valore del MyAtr, il valore dello stop è sempre 50$ perché varia il valore della quantità e di conseguenza il valore di un pips come in foto ed è come vorrei che fosse,indipendentemente da quanto siano i pips di stop ho sempre una perdita di 50$
Quindi andava bene il primo, quello dei lotti.
Devi solo fare attenzione che il calcolo non scenda sotto il minimo consentito.
Eh si il calcolo andava bene ma dopo sul back test non dava i valori di perdita e profitto come dovevano essere, cioè in teoria il calcolo andava bene ma dopo in pratica non era cosi, la perdita deve essere sempre di 50€ e il guadagno di 150€ ma come puoi notare anche tu non corrisponde.
Tu stai facendo confronti con i Futures di PRT ed i Cfd di IG. Sono stumenti diversi ed hanno una diversa gestione dei lotti.
Inoltre tu stai parlando di trading manuale, dove sei tu a decidere di volta in volta. Con il trading automatico occorre stabilire una formula di calcolo, o la facciamo sui pips, oppure lo facciamo sui lotti.
Eh si, so che è diverso da manuale a automatico però non sono casuali c’è la formula per determinare Lo stop e profit e di conseguenza anche la quantità di entrata,perché con ig come funziona?io anche in altre piattaforme avevo visto che era in questo modo come in foto e quindi credevo che anche qui fosse così, non c’è un modo per farlo?!
Come ti ho detto, o si fa il calcolo a lotti, oppure a pips.
Se metti 5o euro come limite, possono essere 2 pip di stop o 50 pip di stop, dipende dallo strumento su cui operi.
Come ti ho già detto, (parlo di CFD, tanto il trading automatico per ora si può fare solo con essi) con Dax €1 50 euro di rischio equivalgono a 50 pips, quindi hanno un senso, se la stessa strategia la esegui sul Dax € 25 sono appena 2 pips, quindi non hanno senso e ogni operazione chiuderebbe in stop loss!