Come si calcola il margine?

 

Buon pomeriggio!

Improvvisamente ha incontrato una situazione in cui il margine sulle posizioni aperte è aumentato significativamente (20 volte). C'è il sospetto che il broker abbia aumentato i requisiti di margine per le posizioni aperte. Questa supposizione è confermata dal valore insolitamente alto di AccountMargin, che è diverse volte superiore al valore calcolato per questo strumento e la leva impostata.

Su uno dei conti in tale situazione, ho dovuto chiudere in perdita le ultime posizioni aperte che avevano il maggior volume, per ridurre il carico sul deposito e non permettere lo Stop Out. E ad un certo punto (dopo aver chiuso un'altra posizione perdente) il valoredi AccountMargin è tornato al livello calcolato. Forse, non l'ho notato subito, e quindi non posso dire con certezza per quali posizioni sono stati applicati i requisiti di margine aumentati.

Non ho ancora fatto nulla sull'altro conto, a parte aprire un ordine di chiusura. Ora ho bisogno di fare un reclamo al broker indicando quali ordini sono stati aperti con requisiti di margine aumentati. E questo solleva una domanda:

C'è un modo per scoprire l'importo del collaterale (margine) per ogni posizione aperta separatamente nel terminale? Nel terminale vedo solo l'importo totale del margine, lo stesso valore viene restituito da AccountMargin(). Nel Riferimento MQL4 non ho trovato una funzione adatta con il prefisso Order. Sarebbe logico assumere che questo valore possa essere ottenuto usando OrderGetDouble(), ma di nuovo, non c'è un valore appropriato inENUM_ORDER_PROPERTY_DOUBLE.

Per favore, ditemi come posso ottenere la dimensione del deposito per una singola posizione aperta nel terminale MT4?

 
Potete leggerloqui.
Как получить программно "Процент маржи"
Как получить программно "Процент маржи"
  • 2017.05.31
  • www.mql5.com
В окне терминала "Спецификации контракта" есть пункт "Процент маржи...
 
Alexey Viktorov:
Potete leggere qui.

Grazie, l'ho letto. C'è uno script a pagina 7 per calcolare il valore di margine calcolato per ogni posizione aperta. L'ho leggermente aggiustato tenendo conto del fatto che non si tratta di CFD, ma di FOREX e l'ho compilato così:

void OnStart()
{
 double size = 0, percentage = 0, orderMargin = 0, accountMargin = 0;
 long leverage = 0;
 for(int i = 0; i < OrdersTotal(); i++)
  {
   int tupe = -1;
   if(OrderSelect(i, SELECT_BY_POS) && (tupe=OrderType()) < OP_BUYLIMIT)
    {
     string symbol = OrderSymbol();
     string symbolCurencyMargin = SymbolInfoString(symbol, SYMBOL_CURRENCY_MARGIN);
     double orderOpenPrice = OrderOpenPrice();
     double orderLots = OrderLots();
     double margin = MarketInfo(symbol, MODE_MARGINREQUIRED);
     double ask = MarketInfo(symbol, MODE_ASK);
     double bid = MarketInfo(symbol, MODE_BID);
     double price = symbolCurencyMargin == "USD" ? 1 : tupe == OP_BUY ? bid : ask;
      size = SymbolInfoDouble(symbol, SYMBOL_TRADE_CONTRACT_SIZE);
      leverage = AccountInfoInteger(ACCOUNT_LEVERAGE);
      percentage = NormalizeDouble(margin/(size*price/100)*leverage, 0);
      //orderMargin = (size*orderOpenPrice*percentage/100)/leverage;
      orderMargin = (orderLots*size*orderOpenPrice)/leverage;
      accountMargin += orderMargin;
      Print(symbolCurencyMargin, " ******** Маржа ", symbol, " = ", orderMargin);
    }
  }
 Print(AccountInfoString(ACCOUNT_CURRENCY), " ******** AccountMargin = ", DoubleToString(accountMargin, 2));
}

Nella maggior parte dei casi, il valore finale del margine calcolato da questo script coincide con quello reale. Ma, ahimè, non nel mio caso. Il problema è che la formula per calcolare il margine per ogni ordine utilizza il valore della leva attiva in quel momento.

Ma nei regolamenti di alcuni broker (senza puntare il dito) è specificato che per le posizioni che vengono aperte in determinate condizioni (venerdì sera, metodo di mediazione, ecc.) la leva è specificata, e di solito è diverse volte inferiore a quella dell'intero conto. Questo è esattamente il mio caso. Tuttavia, per preparare correttamente un reclamo ed evitare di ripetere una tale situazione in futuro, ho bisogno di scoprire quali posizioni sono state aperte con una leva normale e quali sono state aperte con una leva maggiore.

Il team di supporto del broker dice apertamente che l'aumento della leva non è impostato per il conto nel suo complesso, ma per ordini specifici e questo avviene dopo che la posizione è stata aperta. Quindi, è inutile usare la richiesta AccountFreeMarginChek.

Questo in realtà causa una domanda: c'è un modo per sapere in modo affidabile quale margine è effettivamente usato per ogni posizione nel terminale, se sappiamo che il broker può impostare una leva diversa per ogni posizione?

 
Janis Ozols:

Ma nei regolamenti di alcuni broker (non puntiamo il dito) è prescritto che per le posizioni aperte in determinate condizioni (venerdì sera, metodo di mediazione, ecc.) viene stabilita una leva speciale, di solito diverse volte inferiore a quella dell'intero conto. Questo è esattamente il mio caso. Ma per fare un reclamo corretto ed evitare il ripetersi di questa situazione in futuro, ho bisogno di capire quali posizioni sono state aperte con una leva normale e quali sono state aperte con una leva maggiore.

1) Il broker ha sempre ragione.
2) Se il broker si sbaglia, leggi la regola #1.

 
Janis Ozols:

Grazie, l'ho letto. C'è uno script a pagina 7 per calcolare il valore di margine calcolato per ogni posizione aperta. L'ho aggiustato un po', tenendo conto del fatto che non è CFD, ma FOREX, e l'ho compilato in questa forma:

Nella maggior parte dei casi, il valore finale del margine calcolato da questo script coincide con quello reale. Ma, ahimè, non nel mio caso. Il problema è che la formula per calcolare il margine per ogni ordine utilizza il valore della leva attiva in quel momento.

Ma nei regolamenti di alcuni broker (senza puntare il dito) è specificato che per le posizioni che vengono aperte in determinate condizioni (venerdì sera, metodo di mediazione, ecc.) la leva è specificata, e di solito è diverse volte inferiore a quella dell'intero conto. Questo è esattamente il mio caso. Tuttavia, per preparare correttamente un reclamo ed evitare di ripetere una tale situazione in futuro, ho bisogno di scoprire quali posizioni sono state aperte con una leva normale e quali sono state aperte con una leva maggiore.

Il team di supporto del broker dice apertamente che l'aumento della leva non è impostato per il conto nel suo complesso, ma per ordini specifici e questo avviene dopo che la posizione è stata aperta. Quindi, è inutile usare la richiesta AccountFreeMarginChek.

Questo in realtà porta alla seguente domanda: c'è un modo per sapere in modo affidabile quale margine è effettivamente usato per ogni posizione nel terminale, se sappiamo che il broker può impostare una leva diversa per ogni posizione?

Non perdete il vostro tempo in una corrispondenza inutile. È scritto nel regolamento e discutere è come combattere contro i mulini a vento.

Non si tratta del simbolo, ma del tempo di apertura. Molti lo hanno 15 minuti prima della chiusura del fine settimana. E 15 minuti dopo, il lunedì, la leva torna alla normalità.

 
Alexey Viktorov:

Non perdete il vostro tempo con una corrispondenza inutile. È scritto nel regolamento e discutere è come combattere contro i mulini a vento.

Voglio fare un reclamo principalmente per avere un chiarimento sulle regole per applicare una leva maggiore. I regolamenti non sono molto chiari su questo.

La cosa principale che voglio capire è come evitare questa situazione in futuro. In particolare, nel regolamento del mio broker, la clausola in questione contiene la vaga dicitura "la compagnia si riserva il diritto". Cioè, possono o non possono applicare requisiti di margine più elevati a un particolare ordine. Quindi è molto importante per me capire come rilevare nel terminale le posizioni a cui è stata applicata la leva aumentata (diversa da quella emessa da AccountLeverage). Ad esempio, è possibile chiudere rapidamente tali posizioni per informare il trader e fermare il trading.

Sicuramente c'è un modo per richiedere al terminale la quantità di margine per una singola posizione. Solo che non lo so ancora, e non lo trovo nella documentazione.

 
Janis Ozols:

Voglio fare un reclamo principalmente per avere un chiarimento sulle regole per applicare una leva maggiore. Non è molto chiaro nel regolamento.

La cosa principale che voglio capire è come evitare questa situazione in futuro. In particolare, nel regolamento del mio broker, la clausola in questione contiene la vaga dicitura "la compagnia si riserva il diritto". Cioè, possono o non possono applicare requisiti di margine più elevati a un particolare ordine. Quindi è molto importante per me capire come rilevare nel terminale le posizioni a cui è stata applicata la leva aumentata (diversa da quella emessa da AccountLeverage). Ad esempio, per chiudere prontamente tali posizioni per informare il trader e fermare il trading.

Sicuramente c'è un modo per richiedere al terminale la quantità di margine per una singola posizione. Solo che non lo so ancora, e non riesco a trovarlo nella documentazione.

Non conosco il tuo broker, ma ci sono casi in cui tutto è andato bene, chiudiamo una posizione e otteniamo un margine aumentato. Non c'è modo di rintracciare questo. E nessuno darà spiegazioni. C'è solo una via d'uscita: non fare trading in un momento in cui il tuo margine può aumentare. Questo è molto probabilmente regolato dalla percentuale di margine, non dalla leva.

 

Calcola il tuo margine e la leva finanziaria nel momento in cui apri una posizione, usando formule disponibili al pubblico.

Scrivete la leva nel commento o nel magik, o in generale - scrivete subito il margine corretto per la leva.

Avrete qualcosa da ricordare

 
Alexey Viktorov:

Non so il tuo broker, ma ci sono casi in cui tutto è andato bene, chiudiamo la posizione e otteniamo un margine aumentato.

Al mio broker è così: apriamo una posizione e otteniamo un margine aumentato. E in alcuni casi sì e in altri no ("l'azienda si riserva il diritto di...").


Alexey Viktorov:

C'è solo una via d'uscita: non fare trading in un momento in cui potrebbe esserci un aumento del margine. Questo è molto probabilmente regolato dalla percentuale di margine, non dalla leva.

Nel mio caso, questo, ahimè, non aiuta. Il margine può essere aumentato in qualsiasi momento. Ed è regolato dalla leva. In ogni caso, i regolamenti parlano di leva. Vorrei tanto evitare di discutere le condizioni di trading di un particolare broker in questo thread. Quello che mi interessa davvero è come si possono ottenere informazioni dal terminale sulla quantità di margine per una singola posizione.

 
Renat Akhtyamov:

Calcola il tuo margine e la leva finanziaria nel momento in cui apri una posizione, usando formule disponibili al pubblico.

Scrivete la leva nel commento o nel magik, o in generale - scrivete subito il margine corretto per la leva.

Avrete qualcosa da ricordare.

Ho cercato di farlo. Ma il problema è che il margine aumenta dopo aver aperto una posizione. In altre parole, prima di aprire una posizione, ottengo il valore calcolato del margine per essa. E subito dopo una chiamata OrderSend riuscita, chiedo al terminale il valore di AccountMargin. E soddisfa pienamente le mie aspettative. Ma dopo un po' questo valore aumenta bruscamente! E il valoredi AccountMargin risulta essere decine di volte maggiore della quantità di margine per ogni ordine aperto, ottenuto immediatamente dopo la sua apertura.

La mia domanda può essere ridotta a come in qualsiasi momento il terminale può ottenere il valore effettivo del margine per un ordine specifico.

Questo è AccountMargin() o AccountInfoDouble(ACCOUNT_MARGIN) per l'intero conto. Quindi, ci sono due modi per ottenere questo valore. Sicuramente, ci deve essere almeno un modo per ottenere il valore del margine per un ordine. Solo che non ne so niente, per questo chiedo.

 
Janis Ozols:

Ho provato questo. Ma il problema è che il margine aumenta dopo l' apertura della posizione. In altre parole, prima di aprire una posizione, ottengo il valore di margine calcolato per essa. E subito dopo una chiamata OrderSend riuscita, chiedo al terminale il valore di AccountMargin. E soddisfa pienamente le mie aspettative. Ma dopo un po' questo valore aumenta bruscamente! E il valoredi AccountMargin risulta essere decine di volte maggiore della quantità di margine per ogni ordine aperto, ottenuto immediatamente dopo la sua apertura.

La mia domanda può essere ridotta a come in qualsiasi momento il terminale può ottenere il valore effettivo del margine per un ordine specifico.

Questo è AccountMargin() o AccountInfoDouble(ACCOUNT_MARGIN) per l'intero conto. Quindi, ci sono due modi per ottenere questo valore. Sicuramente, ci deve essere almeno un modo per ottenere il valore del margine per un ordine. Semplicemente non ne sono ancora a conoscenza, ecco perché lo chiedo.

non c'è bisogno di chiedere

Considera formule

e anche la spalla. utilizzando le formule

il terminale non tiene traccia della leva attuale, ma vi dà quella che avevate quando avete caricato il terminale

ecco perché il margine richiesto da questa funzione è diverso