ProRealCode - Trading & Coding with ProRealTime™
Si ovviamente fare con i pips avrebbe poco senso, stavo pensando se invece facessimo che in un range di pips si entra con determinati lotti ad esempio quando MyAtr è tra 2-5 si entra con 1 lotto se tra 6-9 1 lotto emmezzo e cosi via,sarebbe una cosa lunga anche un po meno precisa però si avvicinerebbe molto alla mia idea si potrebbe fare?
Prova questo:
// 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
//
ONCE risk = 50 //max. capitale da rischiare
ONCE lotti = 1 //1 lotto per difetto
MyATR = AverageTrueRange[7](close)*10 // 10 volte atr
//
IF MyATR >= 2 AND MyATR <= 5 THEN
Lotti = 1
ELSIF MyATR >= 6 AND MyATR <= 9 THEN
Lotti = 1.5
ENDIF
//
Pips = Risk / PipValue //Ricalcola
SET STOP pLOSS Pips
SET TARGET pPROFIT Pips * 3
//
// 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
BUY Lotti SHARES AT MARKET
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
SELLSHORT Lotti SHARES AT MARKET
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
Ovviamente puoi aumentare le line 16-20, aggiungendo altri ELSIF o ELSE:
IF MyATR >= 2 AND MyATR <= 5 THEN
Lotti = 1
ELSIF MyATR >= 6 AND MyATR <= 9 THEN
Lotti = 1.5
ELSIF MyATR >= 10 AND MyATR <= 11 THEN
Lotti = 2
ELSE
Lotti = 0.5
ENDIF
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
//
ONCE risk = 50
ONCE lotti = 10 //max. capitale da rischiare
//1 lotto per difetto
MyATR = AverageTrueRange[7](close)*10 // 10 volte atr
//
IF MyATR >= 2 AND MyATR <= 3 THEN
Lotti = 5
ELSIF MyATR >= 3 AND MyATR <= 4 THEN
Lotti = 3.3
ELSIF MyATR >= 4 AND MyATR <= 5 THEN
Lotti = 2.5
ELSIF MyATR >= 5 AND MyATR <= 6 THEN
Lotti = 2
ELSIF MyATR >= 6 AND MyATR <= 7 THEN
Lotti = 1.66
ELSIF MyATR >=7 AND MyATR <= 8 THEN
Lotti = 1.42
ELSIF MyATR >= 8 AND MyATR <= 9 THEN
Lotti = 1.25
ELSIF MyATR >= 9 AND MyATR <= 10 THEN
Lotti = 1.11
ELSIF MyATR >= 10 AND MyATR <= 11 THEN
Lotti = 1
ELSIF MyATR >= 11 AND MyATR <= 12 THEN
Lotti = 0.91
ELSIF MyATR >= 12 AND MyATR <= 13THEN
Lotti = 0.83
ELSIF MyATR >= 13 AND MyATR <= 14 THEN
Lotti = 0.77
ELSIF MyATR >= 14 AND MyATR <= 15THEN
Lotti = 0.71
ELSIF MyATR >= 15 AND MyATR <= 16THEN
Lotti = 0.66
ELSIF MyATR >= 16 AND MyATR <= 17 THEN
Lotti = 0.625
ELSIF MyATR >= 17 AND MyATR <= 18THEN
Lotti = 0.58
ELSIF MyATR >= 18 AND MyATR <= 19 THEN
Lotti = 0.55
ELSIF MyATR >= 19 AND MyATR <= 20THEN
Lotti = 0.53
ENDIF
//
//Ricalcola
SET STOP pLOSS MyAtr
SET TARGET pPROFIT MyAtr* 3
//
// 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
BUY Lotti SHARES AT MARKET
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
SELLSHORT Lotti SHARES AT MARKET
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 MyAtr
graph Lotti
Allora ci siamo più o meno, ho alcune domande, sulla foto myatr è 0,00899 che non riesco a capire quanti pips sono? sono 8.9 o 0.89? poi riguardante il programma ne ho aggiunti altri ed ho ristretto il range, ti volevo dire ho tolto questo:
// 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
//
ONCE risk = 500
ONCE lotti = 1000 //max. capitale da rischiare
//1 lotto per difetto
MyATR = AverageTrueRange[7](close)*100 // 10 volte atr
VR=risk/MyATR
VR1=VR/5
IF MyATR >= 0 AND MyATR <= 1 THEN
Lotti = VR1
elsIF MyATR >= 1.01 AND MyATR <= 2 THEN
Lotti = VR1
elsIF MyATR >= 2.01 AND MyATR <= 3 THEN
Lotti = VR1
ELSIF MyATR >= 3.01 AND MyATR <= 4 THEN
Lotti = VR1
ELSIF MyATR >= 4.01 AND MyATR <= 5 THEN
Lotti = VR1
ELSIF MyATR >= 5.01 AND MyATR <= 6 THEN
Lotti = VR1
ELSIF MyATR >= 6.01 AND MyATR <= 7 THEN
Lotti = VR1
ELSIF MyATR >=7.01 AND MyATR <= 8 THEN
Lotti = VR1
ELSIF MyATR >= 8.01AND MyATR <= 9 THEN
Lotti = VR1
ELSIF MyATR >= 9.01 AND MyATR <= 10 THEN
Lotti = VR1
ELSIF MyATR >= 10.01 AND MyATR <= 11 THEN
Lotti = VR1
ELSIF MyATR >= 11.01 AND MyATR <= 12 THEN
Lotti = VR1
ELSIF MyATR >= 12.01 AND MyATR <= 13THEN
Lotti = VR1
ELSIF MyATR >= 13.01 AND MyATR <= 14 THEN
Lotti = VR1
ELSIF MyATR >= 14.01 AND MyATR <= 15THEN
Lotti = VR1
ELSIF MyATR >= 15.01 AND MyATR <= 16THEN
Lotti = VR1
ELSIF MyATR >= 16.01 AND MyATR <= 17 THEN
Lotti = VR1
ELSIF MyATR >= 17.01 AND MyATR <= 18THEN
Lotti = VR1
ELSIF MyATR >= 18.01 AND MyATR <= 19 THEN
Lotti = VR1
ELSIF MyATR >= 19.01 AND MyATR <= 20THEN
Lotti = VR1
elsIF MyATR >= 20.01 AND MyATR <= 21 THEN
Lotti = VR1
ELSIF MyATR >= 21.01 AND MyATR <= 22 THEN
Lotti = VR1
ELSIF MyATR >= 22.01 AND MyATR <= 23 THEN
Lotti = VR1
ELSIF MyATR >= 23.01 AND MyATR <= 24 THEN
Lotti = VR1
ELSIF MyATR >= 24.01 AND MyATR <= 25 THEN
Lotti = VR1
ELSIF MyATR >=25.01 AND MyATR <= 26 THEN
Lotti = VR1
ELSIF MyATR >=26.01 AND MyATR <= 27 THEN
Lotti = VR1
ELSIF MyATR >= 27.01 AND MyATR <= 28 THEN
Lotti = VR1
ELSIF MyATR >= 28.01 AND MyATR <= 29 THEN
Lotti = VR1
ELSIF MyATR >= 29.01 AND MyATR <= 30 THEN
Lotti = VR1
ELSIF MyATR >= 30.01 AND MyATR <= 31THEN
Lotti = VR1
ELSIF MyATR >= 31.01 AND MyATR <= 32THEN
Lotti = VR1
ELSIF MyATR >= 32.01AND MyATR <= 33 THEN
Lotti = VR1
ELSIF MyATR >= 33.01 AND MyATR <= 34THEN
Lotti = VR1
ELSIF MyATR >= 34.01 AND MyATR <= 35THEN
Lotti = VR1
ELSIF MyATR >= 35.01 AND MyATR <= 36 THEN
Lotti = VR1
ELSIF MyATR >= 36.01 AND MyATR <= 37THEN
Lotti = VR1
ELSIF MyATR >= 37.01 AND MyATR <= 38 THEN
Lotti = VR1
ELSIF MyATR >= 38.01 AND MyATR <= 39THEN
Lotti = VR1
ENDIF
//
//Ricalcola
SET STOP pLOSS MyAtr
SET TARGET pPROFIT MyAtr*3
//
// 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
BUY Lotti SHARES AT MARKET
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
SELLSHORT Lotti SHARES AT MARKET
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 MyAtr
graph Lotti
graph VR1
graph MyAtr*3
ok credo di aver capito adesso più o meno torna, ma non capisco perchè sulle posizioni mi da, numero barre zero?Cioè apre e chiude la posizione nella stessa candela?!
Per favore non duplicare i post!
Tu l’hai addiruttura triplicato inserendone uno nel forum sbagliato!
Può solo frammentare le informazioni in quanto qualcuno può risponderti ad un post, qualcun altro ad altri post, col risultato di rendere più difficile trovare le informazioni.
Hai postato qui Venerdì sera, adesso è Lunedì mattina e c’è stato un fine settimana nel mezzo in cui non sempre c’è qualcuno disponibile. Le risposte vengono date da trader appassionati e volontari, quando hanno dei momenti liberi. A volte ne hanno di più, altre di meno.
Ti prego di avere pazienza e di rispettare le regole basilari ben evidenziate in giallo quoi sotto.
Grazie 🙂
E’ impossibile capire cosa vuoi fare, vedo che hai impostato 1000 lotti, cerca di acquistarne oltre 50000!
Sul mini EurGbp non sono sufficientoi 10 milioni di capitale! Hai SL di 2 dollari, il che comporta sempre una chiusura in perdita.
Lasciamo perdere quanto detto e fatto finora, ripartiamo da zero, con la tua strategia di base.
Devi ripartire a spiegarmi:
Un suggerimento, quando fai il backtest e le prove, fallo con un numero minimo di lotti e capitale, per vedere se funziona basta 1 lotto, non ne servono 1000, tanto quando l’hai provato con 1 lotto basta che moltiplichi tutto per 1000 ed è fatta, però con i numeri grandi come hai messo le cifre sono più difficili da interpretare.
Si forse si è creata un po di confusione, io vorrei un atr di 7 periodi che mi definisca il mio stop loss che si a di 50 euro quindi atr=Sl=50 euro e il take profit 3 volte l’atr e quindi 150 euro, l’atr non deve seguire la posizione lo uso solo perchè mi serve solo il suo valore e basta, e vorrei andare ad agire sui lotti quindi per ogni posizione in cui viene definito lo stop loss ci sia un entrata di n.lotti per cui la perdita si aggiri a 50 euro e di conseguenza il guadagno di 150. Rispiego anche la strategia di ingresso, entrata in long quando la media esponenziale a 9 periodi incrocia verso l’alto la media esponenziale a 21 periodi nel time frame h1 e allo stesso tempo lo stocastico (settato 5,3,3) incrocia verso l’alto il valore 20, entrata short quando la media esponenziale a 9 periodi incrocia verso il basso la media esponenziale a 21 periodi nel time frame h1 e allo stesso tempo lo stocastico incrocia verso il basso il valore 80 in time frame 5minuti, spero di essere stato chiaro
Finalmente sono riuscito a finirlo. Mi sembra vada bene, dalle prove fatte su GBPUSD, 5 minuti. La pardita massima non eccede mai i $50, salvo in rare occasioni in cui c’è un gap d’apertura contrario (questo è inevitabile).
Alle righe da 12 a 27 c’è la gestione dei lotti e, successivamente, dei pips per adeguarli al numero dei lotti nel caso eccedessero il capitale di rischio:
// 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
//
//////////////////////////////////////////////////////////////////////////////////
ONCE risk = 50 //max. capitale da rischiare
ONCE PipNum = risk / pipvalue //Numero di Pips in base al rischio
ONCE lotti = 1 //1 lotto per difetto
ONCE MinLotti = 0.5 //Numero minimo di lotti
MyATR = (AverageTrueRange[7](close) / pipsize) * 2
Perc = (100 * MyATR) / PipNum //Percentuale tra numero Pips ed ATR
Lot1 = (risk / MyATR) * (Perc / 100) //Calcolo del numero dei lotti (1)
Lot2 = round((Lot1 * 100) - 0.5) //Calcolo del numero dei lotti (2)
Lot3 = Lot2 / 100 //Calcolo del numero dei lotti (3)
Lotti = max(MinLotti,Lot3) //Verificare che ci sia il minimo di
// lotti richiesto
Pips = PipNum / Lotti //Adeguare il numero dei Pips al
// numero di Lotti per non eccedere
// il rischio
//////////////////////////////////////////////////////////////////////////////////
//
// 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 AND Not OnMarket THEN
BUY Lotti SHARES AT MARKET
SET STOP pLOSS Pips
SET TARGET pPROFIT Pips * 3
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 AND Not OnMarket THEN
SELLSHORT Lotti SHARES AT MARKET
SET STOP pLOSS Pips
SET TARGET pPROFIT Pips * 3
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 MyATR
//graph Lotti
//graph Pips
//graph PerC
ATTENZIONE: alle righe 39 e 54 ho aggiunto la condizione AND Not OnMarket, altrimenti viene variato, ad ogni candela, il valore dei Pips di stop loss.
Scusi ancora per il disturbo, ma mi da errore cioè non mi fa vedere alcun dato, mi da come se non ha fatto nessuna operazione, sto usando ancora la versione demo forse è per quello?( ho messo una foto)
Vedo stai usando la v11. La v11 consente solo il backtest, non il trading automatico.
Ha un modo diverso di gestire i lotti perché opera sui Futures, non sui CFD.
Io l’ho fatta sulla v10.3 di IG e funziona.
ok va bene allora finisco di attivare il conto di ig
Allora ho visto le istruzioni che avevi scritto e che la massima perdita sia 50 va bene, quello che però non capisco se il profit è 3 volte lo stop perchè non ho operazioni vinte di 150 euro ma cambia ogni volta? ho postato anche una foto dove non capisco perchè lo stop sia di 50 pips (credo che siano 5 correggimi se sbaglio) nonostante sotto l atr a 7 periodi segni 3.7 pips perchè l’atr deve darmi il mio stop
Intanto noto che hai un orario diverso, un’ora in meno rispetto a quella italiana, forse usi quella inglese.
Bene, dovremmo esserci, ho trovato degli errori logici nel calcolo, che è più semplice di quanto pensassi prima.
Vedrai che ci sono molte operazioni che finiscono con 150 di guadagno, mentre quelle in perdita sono di 50, tranne alcune perché hanno chiuso l’operazione in occasione di gap contrari, quindi hanno chiuso al primo prezzo disponibile, anche se distante molti pip!
// 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
//
//////////////////////////////////////////////////////////////////////////////////
ONCE risk = 50 //max. capitale da rischiare
ONCE PipNum = risk / pipvalue //Numero di Pips in base al rischio
ONCE lotti = 1 //1 lotto per difetto
//ONCE MinLotti = 0.5 //Numero minimo di lotti
MyATR = (AverageTrueRange[7](close) / pipsize) * 2
Pips = max(0,min(PipNum,MyATR))
Lotti = PipNum / 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 AND Not OnMarket THEN
BUY Lotti SHARES AT MARKET
SET STOP pLOSS Pips
SET TARGET pPROFIT Pips * 3
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 AND Not OnMarket THEN
SELLSHORT Lotti SHARES AT MARKET
SET STOP pLOSS Pips
SET TARGET pPROFIT Pips * 3
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 MyATR
//graph Lotti
//graph Pips
//graph NewSL
Ok ci siamo quasi alcune corrispondono a 150 cioè come volevo ma perchè ancora altre chiudono ad un valore errato, che intendi per gap contrari, il gap non c’è alle 23?e poi perchè solo le posizioni che chiudono in positivo hanno il valore errato? posto due foto di un esempio della posizione
Ah e se poi mi potevi dire come si aggiusta l orario che non lo trovo grazie
Errore al cambio dei valori (da sempre lo stesso risultato)
This topic contains 97 replies,
has 2 voices, and was last updated by
robertogozzi
5 years, 4 months ago.
| Forum: | ProBuilder: Indicatori & Strumenti Personalizzati |
| Language: | Italian |
| Started: | 09/08/2020 |
| Status: | Active |
| Attachments: | 20 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.