Come ottenere la "Percentuale di margine" programmaticamente

 

Nella finestra "Specifiche del contratto" del terminale, c'è una voce "Percentuale di margine". Dovrebbe essere restituito da SymbolInfoDouble(), ma non ho trovato nessun valore tra i suoi specificatori che permetta di scoprire questa "Percentuale di margine". Come si può ottenere programmaticamente?


 
Cosa significa questa percentuale di margine?
 
Alexey Viktorov:
Cosa significa questa percentuale di margine?
Viene utilizzato nel calcolo delle garanzie CFD. Vedere la descrizione di ENUM_SYMBOL_CALC_MODE.
 

Scusa per la domanda incompleta, avrei dovuto chiedere in modo più esplicito.

Qual è lo scopo della domanda? Per controllare se il margine è calcolato correttamente/sbagliato? In caso contrario, può essere calcolato da quella formula nella descrizione. E poi cosa ne fate?

 
Alexey Viktorov:

Scusa per la domanda incompleta, avrei dovuto chiedere in modo più esplicito.

Qual è lo scopo? Per controllare se il margine è calcolato correttamente o erroneamente?

Con la giusta immaginazione, si può arrivare a molti obiettivi. :) E non per controllare il "giusto/sbagliato".

In caso contrario, può essere calcolato dalla formula nella descrizione.

Come? Ecco a cosa serve questo "Margin Percentage". Stai suggerendo di digitarlo a mano?) Il codice deve essere in grado di ottenerlo programmaticamente.

E poi cosa farne?

Ora la domanda è - per ottenere il valore di "Percentuale di margine" programmaticamente. Se è nella tabella, deve essere possibile ottenerlo programmaticamente. E cosa fare dopo è una domanda a parte, che non è pertinente a questo argomento.
 

vedereSymbolInfoDouble

SymbolInfoDouble(symbol, SYMBOL_MARGIN_INITIAL);
SymbolInfoDouble(symbol, SYMBOL_MARGIN_MAINTENANCE);
 
Taras Slobodyanik:

vedere SymbolInfoDouble


Purtroppo non è così. In MT4 questi valori sono, il più delle volte, zero.
 

Va bene così?

double procentMgn;
procentMgn=AccountBalance()*100/MarketInfo("GOLD",MODE_MARGINREQUIRED);
 
Renat Akhtyamov:

va bene?

No, non lo farà.

1. La funzione MarketInfo() è obsoleta.

2. MODE_MARGINREQUIRED restituisce il risultato corretto solo per le posizioni lunghe, non è vero per quelle corte.

3. MODE_MARGINREQUIRED restituisce il risultato già nella valuta di deposito, che non mi serve.

4. Non ho bisogno della percentuale di deposito. Ho solo bisogno del valore del parametro "percentuale di margine" per il simbolo. E posso calcolare da solo ciò di cui ho bisogno.

 
ir0407:

No, non lo farà.

1. La funzione MarketInfo() è obsoleta.

2. MODE_MARGINREQUIRED restituisce il risultato corretto solo per le posizioni lunghe, per quelle corte è sbagliato.

3. MODE_MARGINREQUIRED restituisce risultati nella valuta di deposito, di cui non ho bisogno.

4. Non ho bisogno di una percentuale del deposito. Ho solo bisogno del valore di "Percentuale di margine" per il simbolo. E posso calcolarlo da solo.

Se ne avete bisogno su MT5, andate in un'altra sezione del forum.

Non siete sorpresi dalla vostra conoscenza comune, o peggio:

1. Non è la funzione MarketInfo(), ma un'espressione, il cui risultato del calcolo sarà una percentuale di

2. non avete almeno 4 cifre decimali, quindi il margine % per long e short sarà lo stesso.

3. basta moltiplicare

procentMgn

Potete usare 0,01 e sarete felici.

 
ir0407:

Con la giusta immaginazione, si può pensare a molti obiettivi. :) E per niente per il test giusto/sbagliato.

Come funziona? Avete bisogno proprio di questa "Percentuale di margine". Vuoi che lo scriva a mano?) Il codice dovrebbe essere in grado di ottenerlo programmaticamente.

Ora la domanda è - per ottenere il valore di "Percentuale di margine" programmaticamente. Se è nella tabella, deve essere possibile ottenerlo programmaticamente. E cosa fare dopo è una domanda separata che non è pertinente a questo argomento.

Sì, beh... la fantasia è tutto... solo non capisco perché le persone che cercano di aiutarti dovrebbero fantasticare su ciò che tu fantastichi? Comunque, non è questa la domanda.

Come si ottiene ciò che serve da quella formula?

La formula stessa è Margin = Lots *ContractSize*MarketPrice*Percentage/100

Quindi Percentuale = Margine/(Lotti *Dimensione contratto*Prezzo di mercato/100)

ir0407:

1. La funzione MarketInfo() è obsoleta.

Non è ancora nella lista delle funzioni deprecate. Pertanto, produce il valore mancante per determinare la percentuale di margine.

MarketInfo(_Symbol, MODE_MARGINREQUIRED);

Avendo ottenuto tutti i dati al momento attuale, al prezzo attuale, è facile ricalcolare il margine che è stato trattenuto quando l'ordine è stato aperto, al prezzo di apertura dell'ordine.

Se ne avete bisogno per mql5, dovreste usare

bool  SymbolInfoMarginRate( 
   string             name,                     // символ 
   ENUM_ORDER_TYPE    order_type,               // тип ордера 
   double&            initial_margin_rate,      // коэффициент взимания начальной маржи 
   double&            maintenance_margin_rate   // коэффициент взимания поддерживающей маржи 
   );
Устаревшие функции - Справочник MQL4
Устаревшие функции - Справочник MQL4
  • docs.mql4.com
Устаревшие функции - Справочник MQL4
Motivazione: