Come ottenere la "Percentuale di margine" programmaticamente - pagina 8

 
Alexey Viktorov:

Che rottura di palle... Controlla come stai contando.

ORO a metaquotes (percentuale di margine - 1, leva -300), CFD

2017.06.05 21:57:42.015 Script gold_test_vik2 GOLD,H4: removed
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: uninit reason 0
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** AccountMargin = 19188.75 USD
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** Процент маржи 300 Маржа ордера GOLD 0.05 = 19188.75
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: initialized

Sui cross e sulle posizioni bloccate i calcoli sono anche sbagliati, ma personalmente non mi interessa, e vedo che il tuo script semplicemente non lo gestisce... Non credo che ne valga la pena, se tutte le difficoltà incontrate finora sono comunque legate al calcolo della percentuale di margine e delle garanzie per almeno un ordine CFD.

p.s. Comincio anche a pensare che non è una coincidenza che gli sviluppatori non abbiano dato accesso diretto alla percentuale di margine :D

 

Puoi condividere la tua esperienza su come aprire una demo su MetaQuote-Demo con una leva di 300? Ho un massimo di 100...


ORO su MetaQuote-Demo

2017.06.06 09:07:32.780 Data Folder: D:\MetaTrader 4\Programming
2017.06.06 09:07:32.780 Windows 7 Home Premium (x64 based PC), IE 11.00, UAC, 4 x AMD FX-4170 Quad-Core Processor , RAM: 10402 / 12255 Mb, HDD: 31535 / 244198 Mb, GMT+03:00
2017.06.06 09:07:32.780 MetaTrader 4 build 1090 started (MetaQuotes Software Corp.)

Stampa

2017.06.06 09:09:25.812 test GOLD,H1: ******** AccountMargin = 160.95 USD
2017.06.06 09:09:25.812 test GOLD,H1: ******** Процент маржи 1 Маржа ордера GOLD 0.05 = 160.9525

Screenshot



 
Alexey Viktorov:

Puoi condividere la tua esperienza su come aprire una demo con 300 leve su MetaQuote-Demo? Ho un massimo di 100...


oops... Mi sono confuso nei terminali con questi test. Questo era insta, altrimenti corretto, ORO, percentuale di margine - 1, leva 300, screenshot sopra...

Scusa!

 
ir0407:
La percentuale di margine non è un deposito calcolato. È solo uno dei componenti per il calcolo del margine. Il risultato di questo calcolo (secondo le formule della tabella) ritorna nella valuta del margine, che deve poi (se è diverso dalla valuta del deposito) essere convertito nella valuta del deposito.

Ed è qualcosa che non riesco a capire neanche io. Per esempio, prendiamo una formula:

Lots*Contract_Size/Leverage

Dove, Lotti - questo è il lotto nella valuta di base dello strumento e il contratto - anche nella valuta di base, e poi, se necessario, moltiplicare la valuta di base alla valuta quotata dal tasso di cambio. E con tutto questo il risultato è ottenuto nella valuta del margine. Come mai?

 
K-2SO:

Ed è qualcosa che non riesco a capire neanche io. Per esempio, prendiamo una formula:

Dove, Lotti - questo è il lotto nella valuta di base dello strumento e il contratto - anche nella valuta di base, e poi, se necessario, moltiplicare la valuta di base alla valuta quotata dal tasso di cambio. E con tutto questo il risultato è ottenuto nella valuta del margine. Come mai?

Questa formula

Lots*Contract_Size/Leverage

è valido per il calcolo del margine per le valute USD***.


In primo luogo, determiniamo quale prezzo dobbiamo tradurre nella valuta del deposito.

Se il nome dello strumento inizia con la valuta del deposito, in questo caso USD, allora il prezzo non viene preso in considerazione

Se l'ordine è OP_BUY, abbiamo bisogno del prezzo Bid

Se l'ordine è OP_SELL allora Ask

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;
percentage = NormalizeDouble(
                             margin          // Маржа получена в валюте депозита с учётом плеча
                           /(contractSize    // Размер контракта в базовой валюте
                            *price           // Умножаем на текущую цену и получаем в валюте депозита
                            /100)            // Это для того чтобы коэффициент перевести в проценты
                           *(calcMode == 0 ? leverage : 1) // Это получено методом научно-технического тыка.
                                    // Если способ расчёта 0 - Forex; то надо учесть плечо
                                    //                     1 - CFD; то плечо не учитывается
                                    //                     2 - Futures; 3 - CFD на индексы НЕ проверялись, их у меня нету...
                           , 0);
orderMargin = (orderLots         // правильно, в базовой валюте
              *contractSize      // и это тоже в базовой
              *orderOpenPrice    // а вот тут переводим в валюту депозита
              *percentage/100)   // у меня слов не хватает чтобы объяснить что это такое, но видимо очень нужное.
             /(calcMode == 0 ? leverage : 1);  // Это тоже получено методом научно-технического тыка.

Spero di aver spiegato chiaramente le cose...

 
Alexey Viktorov:

Spero di essere stato chiaro...

Ehm... credo che stiamo di nuovo parlando di cose diverse. Ho solo deciso di provare a chiarire non il metodo di calcolo del margine (non i calcoli), ma come risulta che all'uscita della formula di calcolo del margine, dove praticamente non lavoriamo con la valuta del margine, otteniamo il risultato esattamente nella valuta del margine. Almeno è così che l'ho capito dal messaggio diir0407. Ed è per questo che ho dato la formula di calcolo più semplice, dove non c'è ancora la contabilità delle virgolette...

Per il resto (il metodo dell'istinto), ho anche provato tutto, ma ho notato che una soluzione unica non è stata ancora trovata. Ho confuso i broker, ma i risultati-no, cioè su insta la tua ultima opzione con i parametri di cui sopra, produce ancora numeri cosmici pure: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.s. Ma grazie per i commenti! Comunque capisco il modo di pensare, i calcoli descritti da voi)

 
K-2SO:

Ehm... credo che stiamo di nuovo parlando di cose diverse. Ho appena deciso di provare a chiarire non il metodo di calcolo del margine (non i calcoli), ma come è che l'output della formula di calcolo del margine, dove praticamente non lavoriamo con la valuta del margine, otteniamo il risultato nella valuta del margine. Almeno è così che l'ho capito dal messaggio diir0407. Ed è per questo che ho dato la formula di calcolo più semplice, dove non c'è ancora la contabilità delle virgolette...

Per il resto (il metodo dell'istinto), ho anche provato tutto, ma ho notato che una soluzione unica non è stata ancora trovata. Ho confuso i broker, ma i risultati-no, cioè su insta la tua ultima opzione con i parametri di cui sopra, produce ancora numeri cosmici pure: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.s. Ma grazie per i commenti! Comunque, capisco il modo di pensare, i calcoli che hai descritto)

Non voglio nemmeno aprire una demo su insta. Se non è difficile, nel debugger può mostrare quali valori intermedi sono ottenuti. Come nel mio screenshot


 
Alexey Viktorov:

Non voglio nemmeno aprire una demo su insta. Se non ti dispiace, nel debugger, puoi mostrare quali valori intermedi ottieni. Come nel mio screenshot



Di nuovo, la mia sfortuna! A quanto pare, quando ho analizzato il tuo codice, devo aver cambiato qualcosa in esso (ho dimenticato di restituirlo) ed è per questo che ha generato un tale errore. Ora (per sicurezza) ha ri-copiato l'originale - correttamente e su insta conta. Lo testerò con altri broker allora.
 

Tanto di cappello, l'hai quasi azzeccata! In tutti e tre i broker precedentemente esaminati con diverse percentuali di margine, il calcolo per l'oro (per ordini in una direzione) è corretto.

Ma il copione fallisce ancora con gli esotici. Mi sono fermato al broker fxcm. Il margine percentuale per l'oro è 70000, per le coppie di valute convenzionali è 130, la valuta del margine sembra essere USD. E niente sta contando correttamente da nessuna parte! (. Io stesso ho cercato la chiave per due giorni, e infatti come risultato di questo sto ora cercando una risposta alla domanda, come mai come risultato dei calcoli delle valute di base e dei loro tassi con le valute delle quotazioni, si ottiene una valuta di margine... Forse è questo, o forse è il fatto che questo broker tiene conto della percentuale di margine anche per le normali coppie di valute.

Qui puoi scaricare il terminale ru.files.fm/u/xfezz883#_ , decomprimerlo, eseguirlo usando il file exe, fare una demo...

 
K-2SO:

Tanto di cappello, l'hai quasi azzeccata! In tutti e tre i broker precedentemente esaminati con diverse percentuali di margine, il calcolo per l'oro (per ordini in una direzione) è corretto.

Ma il copione fallisce ancora con gli esotici. Mi sono fermato al broker fxcm. Il margine percentuale per l'oro è 70000, per le coppie di valute convenzionali è 130, la valuta del margine sembra essere USD. Inoltre non ho visto nessun segno di correttezza da nessuna parte! (. Io stesso ho cercato la chiave per due giorni, e infatti come risultato di questo sto ora cercando una risposta alla domanda, come mai come risultato dei calcoli delle valute di base e dei loro tassi con le valute delle quotazioni, si ottiene una valuta di margine... Forse è questo, o forse è il fatto che questo broker tiene conto della percentuale di margine anche per le normali coppie di valute.

Potete scaricare terminal qui ru.files.fm/u/xfezz883#_ , decomprimerlo, eseguirlo usando il file exe, avviare la demo...

Non è un problema calcolare le croci. Hai solo bisogno di prendere una quotazione, che si traduce dalla valuta di margine alla valuta di deposito.

Per esempio il prezzo di EURJPY

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;

Se il tuo deposito è in USD, dovresti usare EURUSD. Se si calcola CADJPY, si dovrebbe usare USDCAD. Qui dovremmo vedere come aggiungere la valuta di deposito alla valuta di margine, non dovremmo semplicemente inserirla nella lista.

Quelli del contatore non sono così difficili avendo MarketInfo(symbol, MODE_MARGINHEDGED). L'unico problema è trovare prima la controvaluta, e poi decomporne una parte con la controvaluta, e il resto - in pieno...

In generale, vedo che l'unico vantaggio di questo articolo è che il trader sa in anticipo quale margine sarà preso quando l'ordine pendente è attivato e può cancellare l'ordine pendente se non è abbastanza in tempo per evitare errori. Una volta ho lottato con questo quando ho piazzato un EA sul mercato.