![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Hehe un altro cliente felice :)- già che ci siamo, LEHayes ti dispiace darmi una mano a calcolare il money management in percentuale senza arrotondare i pips. Ecco quello che uso attualmente quando voglio puntare l'1% del mio conto:
double Profit_F=0.00001,Lots=0.1;
Lots=NormalizeDouble((AccountEquity()*Profit_F),1);
se (Lotti < 0,1) Lotti=0,1;
se (Lotti > 1.0) Lotti=1.0;
Questo funziona bene per il mio stoploss di 100 quando ho un $ 10.000 per esempio. Come $10.000 X 0,00001 = 0,1 Lotto. Ma quando ho $15.000 la dimensione del lotto ora è uguale a 0.15, ma si arrotonda a 2.0 forse perché il mio broker non permette macro lotti. Come posso forzarlo a rimanere a 0,1 fino a quando le azioni non raggiungono i 20.000 dollari? Sono sveglio da molto tempo, dopo aver letto il tuo thread, sono troppo stanco per cercare e studiare. Se avete un'altra equazione per calcolare il mm, vi prego di fornirla al suo posto.
Questo mi sta facendo impazzire, sono mesi che cerco un algoritmo esistente che non faccia altro che calcolare il Prezzo per Pip, indipendentemente dalla coppia su cui si trova. Ho trovato 2 strategie di gestione del denaro davvero buone che dipendono entrambe da questo valore come un modo per precalcolare le dimensioni degli scambi e la gestione del rischio di denaro, ma non riesco a trovare un singolo esempio di un calcolo che gestisca il Prezzo per Pip.
Sono disposto a offrirvi il mio sistema di gestione del denaro in cambio di questa funzione. Vi fornirò entrambe le tecniche suggerite dai mentori con cui ho lavorato.
Per prima cosa dobbiamo riconoscere che ci sono cinque tipi di simbolo di base. Questo è importante quando si tratta di questioni come il calcolo del tick_value, la leva finanziaria e così via.
Non esiste una definizione formale di tipo di simbolo, ma per un conto denominato in USD ecco come enumero i tipi di simbolo: (questi sono esempi specifici, non tutti inclusi)
La rilevanza è come la denominazione del conto è legata alla valuta di base e alla contro valuta dello strumento finanziario di interesse. È lo stesso per i CFD così come per le coppie di valute.
In questo esempio la funzione di chiamata che ho codificato avrebbe già determinato che per AUDCAD il CalculatedBasePairForCross è AUDUSD:Una volta che hai il tipo di simbolo puoi calcolare la leva per strumento finanziario - per esempio ecco il codice necessario per calcolare la leva per AUDCAD:
CalculatedBasePairForCross=StringConcatenate(SymbolBase,AccountCurrency(),postfix);
E il SymbolBase (cioè la valuta base dello strumento finanziario Symbol()) è:E così via.
Per il calcolo del valore del tick è necessario tenere conto del tipo di simbolo, poiché questo ha importanza quando la valutazione cambia sia nello strumento finanziario di interesse - Symbol() - sia nella coppia di valute di collegamento che riporta alla denominazione del conto. Continuando l'esempio precedente in cui stiamo discutendo il tipo di simbolo 4 - AUDCAD quando il conto è denominato in USD - il valore di tick è esplicitamente definito come:
Dove la variabile CalculatedCounterPairForCross per AUDCAD è stata precedentemente determinata come USDCAD:
CalculatedCounterPairForCross=StringConcatenate(AccountCurrency(),SymbolCounter,postfix);
E SymbolCounter è stato determinato da:Programmando il calcolo di questi valori esplicitamente in questo modo è possibile effettuare determinazioni di informazioni di mercato indipendenti dal broker.
Tenete presente che questo codice è utile solo per symboltype = 4 in cui la valuta di denominazione del conto è la contro valuta quando è accoppiata alla valuta base di Symbol() e allo stesso modo la valuta di denominazione del conto è la valuta base quando è accoppiata alla contro valuta che forma la coppia Symbol().
(AUDCAD -> AUDUSD & USDCAD)
Si scopre che mentre ci sono cinque tipi di simboli universali è necessario categorizzarne solo quattro per calcolare la leva, il margine e il valore del tick. E la matematica diventa un punto critico specifico solo quando si tratta di coppie di valute incrociate relative alla denominazione del conto.
Ho elaborato le relazioni specifiche tra tutte le combinazioni di base e contatore perché il mio approccio di gestione del denaro è quello di definire esplicitamente il valore a rischio di perdita per ogni operazione e ciò richiede di conoscere esattamente il valore del prezzo al quale l'operazione deve essere abbandonata in modo che la perdita sia conforme al budget di perdite precedentemente definito. Per le coppie di valute si scopre naturalmente che il valore a rischio si basa sul prezzo di due coppie di valute in qualsiasi momento (a meno che non si copra contro una o l'altra).
Queste informazioni sono di qualche aiuto?
TICKVALUE, se usato da solo, può essere inaffidabile.
Sarebbe interessante sapere a quali broker questo si applica, o se ci sono altre considerazioni come l'essere intorno all'apertura/chiusura del mercato. Non sono mai stato in grado di replicare questi vostri risultati.
Queste informazioni aiutano in qualche modo?
Wow, non mi ero mai reso conto che ci fosse così tanto da calcolare il valore di un pip, nel mio EA l'ho fatto lasciando che l'ea lo calcolasse usando il primo ordine aperto, se è un acquisto, current bid price - order open price /order profit = valore pip nella valuta base corrente, o se è una vendita, currentask+openprice/orderprofit= valore pip, questo non funziona correttamente?
Edit: mi rendo conto che ho scritto al contrario, volevo dire orderprofit/(currentbid-openprice)=valore pip
Wow, non mi ero mai reso conto che ci fosse così tanto da calcolare il valore di un pip, nel mio EA l'ho fatto lasciando che l'ea lo calcolasse usando il primo ordine aperto, se è un acquisto, prezzo di offerta corrente - prezzo aperto dell'ordine / profitto dell'ordine = valore pip nella valuta di base corrente, o se è una vendita, currentask+openprice/orderprofit= valore pip, questo non funziona correttamente?
Questo calcolo è valido nel limite in cui ogni pip ha la stessa valutazione indipendentemente dal prezzo corrente di acquisto o di vendita.
Questo è rigorosamente vero per le coppie di valute che sono di tipo simbolo = 2 come le ho definite sopra, cioè EURUSD, ecc. (qualsiasi coppia di valute in cui la denominazione del conto è la contro-valuta della coppia).
Per la maggior parte delle persone le differenze non sono probabilmente importanti, gli errori risultanti sono piccoli. Nel mio caso volevo calcolare in modo robusto i valori con espressioni analitiche corrette.
Per esempio, se metto in preventivo 200 dollari per la massima perdita possibile su un'operazione imminente e i miei stop sono impostati a 200 punti, allora voglio sapere la dimensione del lotto per il mio ordine in modo che le mie perdite non possano superare i 200 dollari... per essere robusto su questo, devo calcolare correttamente la valutazione dei pip al punto del prezzo dello stoploss. Il wing it non era un'opzione accettabile per me o per i miei clienti ;)
Sono contento che LEHayes abbia risolto tutto. E Phillip, hai completamente demistificato TickValue & coppie di layout-sintetizzando molto bene per tutti di beneficiare. Fantastico!
Vorrei solo aggiungere: le operazioni di sintetizzazione ...
CalculatedCounterPairForCross=StringConcatenate(AccountCurrency(),SymbolCounter,postfix);
SymbolCounter=StringSubstr(Symbol(),3,3);
... bisogna fare attenzione alle appendici extra come USDJPYm in alcuni broker di mini-lotto. Non so se un broker potrebbe/dovrebbe alterare le prime sei lettere dei simboli mettendo o aggiungendo una lettera davanti o tra base e contatore, se stai cercando la robustezza, IMO leggere da un file .set o .sel è una scommessa più sicura.
Sono contento che LEHayes abbia risolto tutto. E Phillip, hai completamente demistificato TickValue & coppie di layout-sintetizzando molto bene per tutti di beneficiare. Fantastico!
Vorrei solo aggiungere: le operazioni di sintetizzazione ...
CalculatedCounterPairForCross=StringConcatenate(AccountCurrency(),SymbolCounter,postfix);
SymbolCounter=StringSubstr(Symbol(),3,3);
... bisogna fare attenzione alle appendici extra come USDJPYm in alcuni broker di mini-lotto. Non so se un broker potrebbe/dovrebbe alterare le prime sei lettere dei simboli mettendo o aggiungendo una lettera davanti o tra base e contatore, se stai cercando la robustezza, IMO leggere da un file .set o .sel è una scommessa più sicura.
Tuttavia non sto cercando questo tipo di robustezza quando parlo di calcoli robusti.
I broker possono chiamare le loro coppie di valute come vogliono, si spera che io abbia la presenza di spirito di notare ciò e modificare i miei codici di conseguenza prima di tentare il trading dal vivo con un nuovo broker usando il simbolo di valuta lovelyUSDmoonCADcheese! :P
Questo codice si occupa semplicemente del 100% dei casi in cui mi sono imbattuto finora (Alpari, CitiFX, CMS forex, forex.com, FXCM, FXDD, IBFX, MIG, e ODL)... non mi preoccupo di renderlo a prova di futuro, semplicemente a prova di presente. Ora, se hai qualcosa in mente per renderlo a prova di futuro... beh, questo è un buon momento per dire la tua :)
lovelyUSDmoonCADcheese! ...
Lol! Ho visto broker sbagliare la descrizione del Symbol nella proprietà del simbolo (non il parametro Symbol() ma devono digitare anche questo a un certo punto!) Chi lo sa! :))
Non so dire se sarebbe mai infallibile al 100% (cosa lo è?). Ma sto pensando a qualcosa del genere:
Gordon qualche tempo fa mi offre la sua opinione su quali meriti avrebbe un controllo automatico a prova di errore in un EA. Avendo questo in mente (e rispettandolo) penso ancora che questo possa essere qualcosa di utile, anche solo per il gusto di farlo! :)