buongiorno,
vorrei costruire tre money management:
- Il sistema entra in posizione di 0.5 e ad ogni gain incrementa di +0.5 e ad ogni loss -0.5 ma dopo un ciclo di N trade (a prescindere se loss o gain) riporta la size a 0.5;
- Il sistema entra in posizione di 0.5 e ad ogni gain incremente di +0.5 e al primo loss ritorna a 0.5 o nel caso di N trade (quindi saranno tutti positivi) riporta la size a 0.5;
- Il sistema entra in posizione di 0.5 e ad ogni gain incrementa di +0.5 e al primo loss ritorna a 0.5;
Grazie
emanuele
Inizio dal più semplice, l’ultimo punto (n. 3):
Once LottiBase = 0.5
Once Lotti = 0
If Lotti = 0 Then
Lotti = LottiBase
Endif
If not OnMarket Then
If STRATEGYPROFIT > Profitto Then
Lotti = Lotti + LottiBase
Elsif STRATEGYPROFIT < Profitto Then
Lotti = LottiBase
Endif
Profitto = STRATEGYPROFIT
Endif
usa la variabile LOTTI per entrare a mercato.
Con un po’ di tempo ti preparo anche gli altri.
Questo è il n. 2, usa sempre LOTTI per entrare a mercato ed assegna ad NBARRE il numero che preferisci:
Once LottiBase = 0.5
Once Lotti = 0
Once NumeroBarre = 0
Once Nbarre = 5
NumeroBarre = NumeroBarre + 1
If Lotti = 0 Then
Lotti = LottiBase
Endif
If not OnMarket Then
If STRATEGYPROFIT > Profitto Then
Lotti = Lotti + LottiBase
Elsif STRATEGYPROFIT < Profitto Then
Lotti = LottiBase
Endif
Profitto = STRATEGYPROFIT
Endif
If NumeroBarre >= Nbarre then
Lotti = LottiBase
Endif
edit: ERRATO, vedere il successivo post https://www.prorealcode.com/topic/new-money-managment/#post-97066
Grazie…attendo il primo e faccio tutte le verifiche inserendoli nelle mie varie strategie e ti dico. Leggendo il codice mi torna tutto.
Once LottiBase = 0.5
Once Lotti = 0
Once NumeroTrade = 0
Once Ntrade = 5
Once Profitto = 0
If OnMarket AND Not OnMarket[1] Then
NumeroTrade = NumeroTrade + 1
Endif
If Lotti = 0 Then
Lotti = LottiBase
Endif
If not OnMarket Then
If STRATEGYPROFIT > Profitto Then
Lotti = Lotti + LottiBase
Elsif STRATEGYPROFIT < Profitto Then
Lotti = LottiBase
Endif
Profitto = STRATEGYPROFIT
Endif
If NumeroTrade >= Ntrade then
NumeroTrade = 0
Lotti = LottiBase
Endif
Ed ecco anche il codice relativo al punto 1:
Once LottiBase = 0.5
Once Lotti = 0
Once NumeroTrade = 0
Once Ntrade = 5
Once Profitto = 0
If (OnMarket AND Not OnMarket[1]) OR (Not OnMarket AND Not OnMarket[1] AND STRATEGYPROFIT <> Profitto) Then
NumeroTrade = NumeroTrade + 1
Endif
If Lotti = 0 Then
Lotti = LottiBase
Endif
If Not OnMarket AND STRATEGYPROFIT <> Profitto Then
If STRATEGYPROFIT > Profitto Then
Lotti = Lotti + LottiBase
Elsif STRATEGYPROFIT < Profitto Then
Lotti = min(LottiBase,Lotti - LottiBase)
Endif
Profitto = STRATEGYPROFIT
Endif
If NumeroTrade >= Ntrade then
NumeroTrade = 0
Lotti = LottiBase
Endif
Provali tutti e fammi sapere.
Grazie infinite Roberto. Provo tutto in questi giorni appena ho tempo e ti faccio sapere. Grazie
Ciao, ho provato tutte e tre le versioni ma c’e’ qualcosa che non funziona bene. In pratica in tutti e tre i casi in caso di loss non diminuisce la quantità e quando raggiunge il massimo del ciclo ne fa ancora uno per poi riportare alla size minima il trade. Per semplicità ho inserito tutte e tre tipologie dentro una strategia…se fai back test selezionando il tipo fai andare la strategia e controllando i primi ordini di puoi accorgere del problema. Ho provato a fare delle modifiche ma non sono riuscito a risolvere. Allego la strategia con un semplice back test puoi constatare quanto sopra riportato. Strategia su EURUSD H1.
CONSECNOCYCLE = 0
CONSECSICYCLE = 1
CUMULASICYCLE = 0
Aggiungo…in pratica aggiorna lo strategyprofit al successivo trade dopo la perdita per cui fa quanto descritto al trade dopo….non so se mi sono spiegato….se verifichi facendo il back è più semplice che spiegarlo….grazie infinite….
Con CONSECNOCYCLE = 1 (punto 3 del tuo quesito) funziona correttamente, ho visto fin dall’inizio, arriva a 4 lotti poui scende ad 1 dopo la perdita.
Con CONSECSICYCLE = 1 (punto 2 del tuo quesito) ho modificato il codice come segue:
Once LottiBase = 1
Once Lotti = 0
Once NumeroTrade = 0
Once Ntrade = 5
Once Profitto = 0
If Lotti = 0 Then
Lotti = LottiBase
Endif
If (STRATEGYPROFIT <> Profitto) OR (Not OnMarket AND OnMarket[1]) Then
NumeroTrade = NumeroTrade + 1
If STRATEGYPROFIT > Profitto Then
Lotti = Lotti + LottiBase
Elsif STRATEGYPROFIT < Profitto Then
Lotti = LottiBase
Endif
Profitto = STRATEGYPROFIT
Endif
If NumeroTrade >= Ntrade then
NumeroTrade = 0
Lotti = LottiBase
Endif
Con CUMULASICYCLE = 1 (punto 1 del tuo quesito) ho modificato il codice come segue:
Once LottiBase = 1
Once Lotti = 0
Once NumeroTrade = 0
Once Ntrade = 5
Once Profitto = 0
If Lotti = 0 Then
Lotti = LottiBase
Endif
If (STRATEGYPROFIT <> Profitto) OR (Not OnMarket AND OnMarket[1]) Then
NumeroTrade = NumeroTrade + 1
If STRATEGYPROFIT > Profitto Then
Lotti = Lotti + LottiBase
Elsif STRATEGYPROFIT < Profitto Then
Lotti = min(LottiBase,Lotti - LottiBase)
Endif
Profitto = STRATEGYPROFIT
Endif
If NumeroTrade >= Ntrade then
NumeroTrade = 0
Lotti = LottiBase
Endif
ciao Roberto e di nuovo grazie. Ho fatto le verifiche di nuovo e secondo me per tutti e 3 i metodi c’e’ qualcosa che non va. Ti allego file Excel dove (in base ai trade della strategia che ti ho inviato) ho ricostruito i lotti con i quali avrebbe dovuto entrare a mercato e ti ho allegato estratto di quanto effettivamente ha effettuato. Come vedi c’e’ qualcosa che non torna. Grazie di nuovo e speriamo di risolvere. Io ho provato a fare qualche modifica ma non ho risolto il problema. Ci provo ma senza esito !!
E’ per me molto impegnativo mettersi a cercare le operazioni effettuate con il file di eXcel e fare confronti.
Dimmi te 2-3 date ed orari di entrata (usando solo il codice di cui al punto 1, che è quello leggermente più complicato) che risultati dovrebbero avere ed io li confronto.
Allegami anche l’ultima versione completa del codice che hai provato.
Questo mi serve per facilitarmi il lavoro, altrimenti posso perderci un sacco di tempo ed ho difficoltà a risponderti. Grazie.
Ciao,
nel file Excel se lo apri ti ho già messo 3/4 operazioni con una colonna scritta da me che cosa sarebbe dovuto accadere e l’estratto del back per lo stesso periodo che mostra le quantità. L’ho fatto per le tre tipologie. Quindi quanto tu mi chiedi l’ho già fatto nell’ottica di ottimizzare i tempi per la soluzione. Se ti serve qualcosa di ancora più specifico fammi sapere. Grazie
Ho visto il 19/2/2015 alle 06:00, apre con 2 lotti ed all’operazione successiva poi riparte da 1 perché c’è una perdita.
Non ho visto altro perché non è veloce confrontare excel. Indicami 2-3 operazioni in modo semplice (data e ora d’inizio) e spiegami cosa non va secondo te.