Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 16

 

OK.

La cosa più importante da chiarire per me ora è probabilmente se sono corretto nell'assumere che per calcolare il margine su un particolare trade, si dovrebbe usare un valore fisso della valuta di base contro lavaluta di deposito, preso al momento dell'apertura del trade. È corretto? E il margine su questo trade rimane costante fino alla chiusura dell'ordine? È corretto?

 
Babu Bonappan:

.....

La cosa più importante da chiarire per me è probabilmente se sono corretto o meno nell'assumere che un valore fisso della valuta di base contro la valuta di deposito, preso al momento dell'apertura del trade, dovrebbe essere usato per calcolare il margine per un particolare trade. È corretto? E il margine su questo trade rimane costante fino alla chiusura dell'ordine? È corretto?

Sì, avete ragione.

Pertanto, il prezzo per calcolare il margine è importante al momento dell'apertura dell'ordine

 
Renat, grazie mille per il tuo aiuto!
 
Babu Bonappan:
Renat, grazie mille per il tuo aiuto!
Prego.
 
Renat Akhtyamov:

La domanda riguarda il codice, quindi non si può fare senza il codice.

Stai chiedendo dei modificatori o dell'elaborazione degli ordini?

Non so di cosa avete bisogno. Ma l'errore nel codice è al 100%.

Lei non sa nulla, ma trae conclusioni con sicurezza.

Sto chiedendo di OrderSelect

 
Babu Bonappan:

Per favore consigliate come usare MQL4 per ottenere un valore di margine per ogni posizione aperta nel terminale?

Io lo facevo così:

margin = MarketInfo(Symbol(),MODE_LOTSIZE) * OrderOpenPrice() / AccountLeverage() * OrderLots();

Nel trading di EUR/USD questa costruzione ha funzionato bene ed ero sicuro che la sua logica fosse corretta.

Ma ora voglio ottenere lo stesso risultato per EUR/JPY (o EUR/CHF). Ovviamente, invece diOrderOpenPrice() ho bisogno di moltiplicare il valore di un lotto standard per il tasso della valuta di base alla valuta di deposito (nel mio caso, per EUR/USD). Ma qual è questo tasso? Il tasso di cambio che era al momento dell'apertura della posizione o quello che abbiamo ora (nel momento in cui vogliamo conoscere l'importo del deposito per questa posizione)?

L'OrderOpenPrice - è il prezzo di apertura dell'ordine selezionato - non fa alcuna differenza quale valuta viene visualizzata. Probabilmente dovremmo controllare Point and Digits. Oppure dovreste controllare gli arrotondamenti. Da qualche parte c'è un arrotondamento.

NormalizeDouble a 5 cifre decimali, e abbiamo bisogno di 3 cifre decimali per JPY. E il bind stesso dovrebbe funzionare allo stesso modo per qualsiasi valuta.

 
Babu Bonappan:
Cosa succede se al momento dell'apertura dell'ordine, il tasso di cambio EUR/USD viene scritto nel campo dei commenti e poi letto da lì?
È più facile scrivere "USDJPY" invece di OrderSymbol()
 
A1exPit:
È più facile scrivere "USDJPY" invece di OrderSymbol()

Perché USD/JPY? Dopo tutto, stiamo scambiando EUR/JPY, quindi 1 lotto è 100000 EUR, mentre la valuta di deposito è USD. A mio parere, in questo caso abbiamo bisogno del tasso di cambio EUR/USD al momento di aprire un affare.

Inoltre, se si imposta un simbolo forzato nel codice, il codice non sarà adatto al trading su un'altra coppia di valute, per esempio NZD/CAD. Ma vorrei ottenere una variante universale. Finora, mi viene in mente solo un modo per memorizzare l'importo del deposito per ogni ordine calcolato al momento della sua apertura. Forse potremmo creare un array per questo scopo dove il biglietto d'ordine e il suo deposito verrebbero memorizzati. Ma forse c'è una soluzione più banale.

 
A1exPit:

OrderOpenPrice - Prezzo di apertura dell'ordine selezionato - non importa quale valuta stia usando, dà il prezzo. Molto probabilmente Point e Digits dovrebbero essere controllati. Oppure dovreste controllare l'arrotondamento. Dovremmo controllare gli arrotondamenti.

NormalizeDouble ha 5 cifre decimali, mentre JPY ha bisogno di 3 cifre decimali. E il raccoglitore stesso dovrebbe funzionare allo stesso modo per tutte le valute.

E perché mentite sul numero di cifre? Non ingannare la gente.

 
A1exPit:

OrderOpenPrice - il prezzo di apertura dell'ordine selezionato - non si preoccupa di quale valuta sta usando, dà il prezzo.

L'OrderOpenPrice, come lo capisco, dà esattamente ciò di cui ho bisogno. Ma solo se la valuta di deposito è il dollaro e la coppia scambiata è EUR/USD. In questo caso, è come se l'OrderOpenPrice memorizzasse il tasso di cambio tra la valuta di base e la valuta di deposito al momento dell'apertura dell'ordine sapendo che si può facilmente calcolare il deposito.

Ma se almeno una di queste condizioni non è soddisfatta, come possiamo ottenere il valore del deposito per un ordine individuale? Dove possiamo trovare il tasso della valuta di base di una quotazione rispetto alla valuta del deposito al momento della sua apertura?

Sì, abbiamo il tempo di apertura dell'ordine al secondo più vicino. Ma cosa possiamo ottenere? Al massimo - i parametri della candela minuta del simbolo richiesto. Ma mai il valore esatto del tasso utilizzato per il calcolo del deposito. Ma la funzione AccountMargin lo ottiene in qualche modo! Sarebbe molto interessante capire come esattamente.

Motivazione: