Codice martingala manuale
Forums › ProRealTime forum Italiano › Supporto ProOrder › Codice martingala manuale
- This topic has 38 replies, 3 voices, and was last updated 2 years ago by MauroPro.
Tagged: gestione lotti, gestione posizioni, lotsize, martingala, perdita, positionperf, profitto, strategyprofit
-
-
06/01/2022 at 5:39 PM #194456
ecco il codice:
123456789101112131415161718192021222324252627282930313233defParam cumulateOrders = false //(test DAX 15m)once orderSize = 1once raddoppio = 1if StrategyProfit > StrategyProfit[1]and StrategyProfit[1] > StrategyProfit[2] thenIF Raddoppio = 1 THENorderSize = orderSize * 2Raddoppio = 0ELSEorderSize = 1ENDIFelsif StrategyProfit < StrategyProfit[1] THENorderSize = 1Raddoppio = 1endif//--------------avg50 = average[50,0](close)if close crosses over avg50 thenbuy orderSize contract at marketendifif longOnMarket and close < (avg50 - 50*pointSize) thensell orderSize contract at marketendif//-------------------------------------set target pProfit 500set stop pLoss 200//--------------------------------------------graph ordersize coloured(255,0,0,255)graph Raddoppio coloured(0,0,255,255)graph StrategyProfit < StrategyProfit[1] coloured(0,0,0,150)06/01/2022 at 6:59 PM #194459Fino a venerdì mattina non riuscirò a modificarlo,
06/01/2022 at 7:47 PM #19446106/03/2022 at 8:00 AM #194524Per Phoentzs:
guardando il codice di Roberto per operazioni Martingala con il raddoppio della posizione soltanto una volta dopo la prima perdita, sono riuscito a riscrivere tale codice con la tua formula.
Ecco la sintesi (anche per altri utenti interessati) dei due codici: A ) raddoppio della posizione dopo la prima perdita e mantenimento del raddoppio fino ad una nuova operazione positiva – B) raddoppio della posizione soltanto una volta dopo la prima perdita
A)
123456789101112defParam cumulateOrders = falseonce positionSize = 1 //starting number of contractsonce minPositionSize = 1 //minimum lot size required by the brokeronce maxPositionSize = 2once increase = 1 //number of lots to increment//once decrease = 1 //number of lots to decrementif strategyProfit > strategyProfit[1] thenpositionSize = positionSize – increaseelsIf strategyProfit < strategyProfit[1] thenpositionSize = positionSize + increaseendifpositionSize = min(maxPositionSize, max(minPositionSize,positionSize)) //check both maximum and minimumB)
12345678910111213141516171819defParam cumulateOrders = falseonce positionSize = 1once minPositionSize = 1once maxPositionSize = 2once increase = 1// once decrease = 1once flag = 1if strategyProfit > strategyProfit[1] thenpositionSize = positionSize - increaseflag = 1elsIf strategyProfit < strategyProfit[1] thenif flag = 1 thenpositionSize = positionSize + increaseflag = 0elsepositionSize = minPositionSizeendifendifpositionSize = min(maxPositionSize, max(minPositionSize,positionSize))Per Roberto:
sono riuscito a scrivermi il codice che ti avevo chiesto, grazie comunque per la disponibilità. Ti volevo invece chiedere una cosa didattica: come mai non si può utilizzare in questi codici per determinare un operazione negativa-positiva: positionPerf?
Strattegyprofit < strategyProfit[1] mi indica che il totale della strategia è minore rispetto al totale della strategia riferito all’operazione precedente, quindi c’è stata un operazione negativa-una perdita. Tuttavia per indicare che l’operazione precedente è stata negativa spesso, in altri codici scrivo e funziona,: if positionPerf(1) < 0 …
Come mai qui non va bene? (positionPerf era usato anche nella formula del manuale del resto)
1 user thanked author for this post.
06/03/2022 at 9:17 AM #194527Grazie Mauro, lo confronterò con la mia versione del codice nelle mie strategie quando ne avrò la possibilità.
Ho anche un codice simile da qualche parte in cui un MA è mappato sulla curva della strategia e la gestione del denaro funziona su di esso. Se siete interessati?06/03/2022 at 11:41 AM #194539StrategyProfit restituisce il totale progressivo delle operazioni CHIUSE.
PositionPerf restituisce la percentuale di guadagno (o perdita, se è un valore negativo) dell’operazione aperta.
Quando un’operazione viene chiusa StrategyProfit viene aggiornata e PositionPerf azzerata. Quando si apre un’operazione, StrategyProfit resta invariara com’era prima e viene aggiornata PositionPerf candela per candela.
Sono due cose diverse, se t’interessa il totale basta che tu sommi le due ed avrai il totale acquisito + il totale corrente (temporaneo).
Per vedere se la tua strategia è storicamente profittevole o meno devi controllare StrategyProfit.
Per vedere, invece, se è l’operazione corrente è profittevole devi controllare PositionPerf.
StrategyProfit è espressa nella valuta del tuo conto.
PositionPerf può essere usata in questi modi:
- IF PositionPerf > 0 THEN per verificare che l’operazione aperta sia in profitto
- PerCent = PositionPerf * 100 per conoscere la percentuale in forma % (per default non è rapportata a 100)
- Pips = PositionPerf * PositionPrice / PipSize / PipValue per conoscere il profitto (o la perdita, se il dato è negativo) espresso in PIPS (ad esempio 42 pips)
- Pips = PositionPerf * PositionPrice / PipSize / / PipValue / abs(CountOfPosition) per conoscere il profitto (o la perdita, se il dato è negativo) espresso in PIPS, ma diviso per il numero di posizioni aperte (ad esempio 21 pips se sei in guadagno di 42 pips con 2 contratti)
- Money = PositionPerf * PositionPrice per conoscere il guadfagno (o la perdita) espressa in unità valutarie delle strumento su cui stai operando
1 user thanked author for this post.
06/03/2022 at 7:10 PM #194581Ciao Phoentzs se hai qualche codice che pensi sia valido postalo pure!
Ciao Roberto, ho integrato la tua risposta esaustiva alle varie annotazioni che mi ero fatto nel tempo di strategyProfit e positioPerf.
Non capisco però ancora una cosa: se al codice basta distinguere un operazione vincente da una perdente, questo non è fattibile in entrambi i modi:
strategyProfit > strategyProfit [1] mi dice che il totale progressivo dell’ultima operazione chiusa è maggiore rispetto al totale progressivo della penultima operazione chiusa: ossia che c’è stata un operazione positiva (che è quello che serve al codice)
Ma anche positionPerf(1) > 0 mi dice che l’ultima operazione è stata positiva [se invece uso positionPerf nel secondo modo, es: positionPerf(0) > 0.1 allora mi riferisco al guadagno specifico dell’ultima operazione ancora aperta]
Probabilmete c’è ancora qualcosa che mi sfugge.
06/03/2022 at 7:30 PM #194583positionPerf(1) ti restituisce la performance dell’operazione precedente.Forsse convertendola in moneta è uguale alla differenza di StrategyProfit, ma non l’ho verificato.
06/03/2022 at 7:44 PM #194584Secondo me è possibile in qualche modo: in un tuo vecchio appunto che mi ero segnato scrivevi:
“PositionPerf restituisce l’andamento di una posizione aperta, in percentuale sul prezzo. Generalmente si usa non tanto per sapere quant’è il guadagno (basta comunque fare la percentuale sul prezzo d’entrata per saperlo), quanto se è in profitto(>0) oppure in perdita(<0)”
In effetti questo usa va bene, ricordo un mio vecchio codice che avevo provato per variare lo stop in base ad un op vincente o perdente ed andava bene positionPerf, il codice era questo:
if positionPerf (1) <0 and positionPerf(2) <0 then
set stop % loss 2
else
set stop %loss 1
endif
Quando hai tempo prova a fare la conversione che dicevi è interessante. CIAO
-
AuthorPosts
Find exclusive trading pro-tools on