Come si calcola il margine? - pagina 4

 
Janis Ozols:

Se la leva di uno strumento è cambiata a causa di un aumento del lotto totale o di qualche altra ragione, sarebbe logico aspettarsi che queste query restituiscano una quantità maggiore di margine, no?

No, queste funzioni usano la leva del conto.

 
Andrey Khatimlianskii:

Sì, è così.

Solo che, molto probabilmente, la leva cambia non per un singolo trade, ma per lo strumento nel suo complesso, ma non cambia l'essenza.

Aggiungerò un avviso al mio informatore per questo caso...

Saggio, è saggio.

 
Andrey Khatimlianskii:

No, queste funzioni utilizzano la leva del conto.

Per favore, ditemi quale funzione può essere utilizzata per calcolare il margine attuale di un particolare strumento se la leva di quello strumento non è la stessa della leva del conto al momento?

 
Janis Ozols:

Per favore ditemi, quale funzione può essere utilizzata per ottenere il margine attuale per un particolare strumento, se la leva di quello strumento al momento è diversa dalla leva del conto?

Sarebbe molto tempo fa
 
Janis Ozols:

Per favore ditemi, quale funzione può essere utilizzata per ottenere il margine effettivo per un certo strumento, se la leva di questo strumento al momento è diversa dalla leva del conto?

Forse SymbolInfoDouble(Symbol,SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?

SymbolInfoDouble - Market Info - MQL4 Reference
SymbolInfoDouble - Market Info - MQL4 Reference
  • docs.mql4.com
2. Returns true or false depending on whether a function is successfully performed. In case of success, the value of the property is placed into a recipient variable, passed by reference by the last parameter. It is recommended to use SymbolInfoTick() if the function is used for getting information about the last tick. It may well be that not a...
 
Stanislav Korotky:

Forse SymbolInfoDouble(Symbol,SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?

Sfortunatamente, la funzione SymbolInfoDouble con una qualsiasi di queste costanti restituisce zero quando si tratta di strumenti del mercato FOREX.

 

Così, ora possiamo rispondere alla domanda del thread

Formula per calcolare il margine per un preventivo diretto

M=CC/CP

  • Dove M - margine,
  • CC - la somma della transazione,
  • MP - leva.

Per esempio, per fare un'operazione con il volume di 1 lotto standard (100 000 unità) sulla coppia di valute USD/CAD, con una leva di 1:200, è necessario fare un margine

  • M=CC/CP
  • М=100 000/200
  • М=500

Cioè, l'importo del margine sarà di 500 $. E con una leva di 1:500, il margine sarà solo 100.000/500=200 $. Ma con una leva di 1:500 sarete in grado di comprare 10 lotti con 1 milione di dollari, e fare transazioni con un margine di 100 000/500=2 000 $.

Calcolo del margine per la quotazione inversa

M=CC/CCP х EF

  • Dove M - margine;
  • CC - importo della transazione;
  • CC - leva;
  • VC - tasso di cambio.

Prendiamo GBR/USD come esempio.

  • M = MOP / KP x TOR
  • M = 100.000/200 x 1, 5074
  • М= 753,7 $

Non si ottengono somme rotonde, ma il valore di un pip sarà sempre in numeri tondi. E per le citazioni dirette, c'è qualche inconveniente nel calcolare un pip.

Calcolo del margine per i tassi incrociati

M = CC/KP x EF

  • M - margine;
  • CC - somma della transazione;
  • CC - leva;
  • EF - tasso di cambio della valuta (base) con il dollaro.

esempio:


//+-------------- РАСЧЕТ МАРЖИ ---------------------+
double calcMGN(string SYMB, double VOL)
{
   double Res=0,Price=0;
   if(LEVERAGE!=0)
   {
      if(StringSubstr(SYMB,0,3)!="USD")
      {
         SYMB=StringSubstr(SYMB,0,3)+"USD";
         Price=iClose(SYMB,Period(),0);
         Res=VOL*Price/LEVERAGE;
      }
      else Res=VOL/LEVERAGE;
   }
   return(Res);
}


 
Janis Ozols:

Per favore ditemi, quale funzione può essere utilizzata per ottenere il margine attuale per un particolare strumento, se la leva di quello strumento al momento è diversa dalla leva del conto?

Potete trovare le formule. Ma perché?

Prendi il margine effettivo su tutte le posizioni nello strumento e calcola qual è la leva effettiva.

 
Andrey Khatimlianskii:

Le formule possono essere trovate. Ma perché?

Prendi il margine effettivo su tutte le posizioni sullo strumento e calcola qual è la leva effettiva.

Non funzionerà.

La leva è fluttuante.

L'ho avuto come lui descrive,

è davvero sfortunato con un rischio piuttosto alto.

 
Renat Akhtyamov:

Così, ora possiamo rispondere alla domanda del ramo

Mi dispiace, non ho formulato correttamente la mia domanda nel titolo del thread. Infatti, non mi interessa come calcolare il margine, ma come ottenere il suo valore effettivo (non calcolato) dal terminale. E non per l'intero conto, ma per una singola posizione separatamente. È di questo che stiamo parlando nel primo post. Ho già capito che non può essere fatto per mezzo di MQL4, una tale funzione semplicemente non esiste. Tuttavia, @Andrey Khatimlianskii ha suggerito qualche tempo fa che la leva può variare non per una singola posizione, ma per uno strumento nel suo complesso. Ora è importante per me capire come ottenere il valore di questa leva nel caso in cui differisca dalla leva del conto.


Renat Akhtyamov:

La formula per calcolare il margine per un preventivo diretto

M=CC/CP

  • Dove M - margine,
  • CC - la somma della transazione,
  • KP - leva.

Il problema di questa e di tutte le formule successive è che contengono KP (leva). Sfortunatamente, non ho ancora capito come ottenere questo valore per un singolo strumento. Le funzioni AccountMargin() e AccountInfoInteger(ACCOUNT_LEVERAGE) restituiscono la leva del conto, non la leva del simbolo, e la funzione MarketInfo(_Symbol,MODE_MARGINREQUIRED) restituisce il valore del margine corrispondente alla leva del conto, anche se le posizioni per questo simbolo sono effettivamente aperte con una leva assolutamente diversa. La funzione SymbolInfoDouble con le costanti SYMBOL_MARGIN_INITIAL o SYMBOL_MARGIN_MAINTENANCE restituisce sempre zero quando si lavora con simboli FOREX.

Quindi, non capisco come questa e tutte le altre formule possano essere utilizzate, se la leva di un broker, che differisce dal KP del conto in generale, è impostata per un certo strumento.


Andrey Khatimlianskii:

Le formule possono essere trovate. Ma perché?

Non sto cercando di trovare formule (sono già state proposte abbastanza), ma esattamente la funzione di MQL4. Per ottenere il valore reale, non quello calcolato. Grazie ad Andrey, ho già capito che è impossibile farlo per una singola posizione separatamente. Ora mi sto chiedendo come ottenere la leva per lo strumento nel suo insieme, se è diversa da quella del conto.


Andrey Khatimlianskii:

Prendete il margine effettivo per tutte le posizioni nello strumento e calcolate quale risulta essere la leva reale.

Questo è esattamente quello che ho fatto ora. L'Expert Advisor confronta il valore reale del margine con quello calcolato e in caso di un eccesso significativo, interrompe il trading e invia una notifica al trader. Finora non ho ricevuto nessuna di queste notifiche (ahi*3).

Ma cosa fare se ci sono posizioni su altri strumenti? Dopo tutto, è diventato chiaro sopra che è impossibile ottenere il valore reale del margine per una singola posizione dal terminale. Ma sicuramente può essere fatto per lo strumento nel suo insieme?