Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 10

 
Alexey Volchanskiy:
C'è un modo per calcolare il margine coperto?
Penso che tutto possa essere calcolato attraverso le funzioni Symbol.
 
fxsaber:
Grazie per il suggerimento! Nel deserto è SymbolInfoMarginRate. Quindi ora è così
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
}

Dobbiamo essere chiari sul fatto che in MT5 ci possono essere requisiti di margine molto diversi in diverse direzioni. Cioè una singola variante di MT4 potrebbe non funzionare. Sul Forex, ovviamente, questo non sarà il caso. Ma dovete ricordare. Quindi, in generale, si dovrebbe scrivere così
// Альтернатива OrderCalcMargin
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
}

Grazie mille! Ora funziona dappertutto senza problemi.

Mi chiedo se la funzione"MyOrderCalcMargin" è ancora in commercio, e se sì, come fare per commercializzarla almeno nel tester)

 
fxsaber:
Penso che si possa calcolare tutto tramite le funzioni Symbol.
Sfortunatamente, le funzioni Symbol funzionano male

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, conto USD, RTS-3.17.

TickValue dà un valore sbagliato - in rubli, non nella valuta del conto (USD).

FxPro-ECN. I simboli GOLD e GOLDEURO hanno lo stesso TickValue. Anche se, ovviamente, dovrebbero essere diversi nei tempi di EURUSD.

 
fxsaber:

Scherzo di MT5 su FIBOGroup-MT5 Server SGDJPY

In questa situazione MyOrderCalcMargin calcola correttamente, mentre il normale OrderCalcMargin no!


La funzione normale conta in conformità con la specifica del contratto specificato nelle impostazioni dello strumento - con la valuta di margine NOK, rispettivamente, per un lotto è preso 1000 NOK.

Probabilmente conti come dividere il nome della coppia di valute SGDJPY - ottieni 1000 SGD per un lotto.

Di conseguenza, il problema è l'errata specificazione del contratto da parte dell'intermediario. Contattate il broker del server appropriato.

 
fxsaber:

Cioè per rendere tutti gli OrderSend sincronizzati con l'ambiente di trading ed evitare trabocchetti, è sufficiente rendere il codice sorgente dato come un file mqh e fare #include corrispondente nei vostri programmi.

Puoi smettere di ballare con il tamburello.

SD mi ha detto che dalla prossima build OrderSend() funzionerà correttamente :)

 
MQ Alexander:

La funzione regolare conta secondo la specifica del contratto specificata nelle impostazioni dello strumento - con la valuta di margine NOK, rispettivamente, per un lotto ci vogliono 1000 NOK.

Nel tuo caso, deve essere una divisione della coppia di valute SGDJPY - per un lotto 1000 SGD è addebitato.

Di conseguenza, il problema è l'errata specificazione del contratto da parte dell'intermediario. Contattate il broker del server appropriato.

La MT5 ha un meccanismo interno nascosto che può convertire qualsiasi valuta nella valuta del conto. In questo caso OrderCalcMargin 1000 NOK converte nel numero appropriato di USD e lo emette.

Per favore, rendete pubblico questo meccanismo. Per esempio,

double CurrencyExchange( const string Currency ); // возвращает курс валюты Currency к валюте счета

Questi tassi di cambio sono disponibili al 100% nel terminale, poiché OrderCalcMargin li calcola. Il loro lavoro è particolarmente evidente sui conti MetaQuotes-Demo USD quando si prendono i simboli FORTS - la loro valuta di margine è in RUR.

Questo è particolarmente rilevante a causa del chip/bug TickValue

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, conto USD, RTS-3.17.

TickValue dà un valore sbagliato - in rubli, non nella valuta del conto (USD).

FxPro-ECN. I simboli GOLD e GOLDEURO hanno lo stesso TickValue. Anche se, ovviamente, dovrebbero essere diversi nei tempi di EURUSD.

 
Ciao, sto leggendo la documentazione:
OrdersTotal

Возвращает количество действующих ордеров.

int  OrdersTotal();

Возвращаемое значение

Значение типа int.

Примечание

Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.

При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
E dove trovo la decifrazione del termine"ordini attivi"?
" ordini pendenti attivi", e NON ordini pendenti attivi , cosa sono?
 
Leo59:
Ciao, sto leggendo la documentazione:
OrdersTotal

Возвращает количество действующих ордеров.

int  OrdersTotal();

Возвращаемое значение

Значение типа int.

Примечание

Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.

При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
E dove trovo la decifrazione del termine"ordini attivi"?
" ordini pendenti validi", e NON ordini pendenti validi , cosa sono?

Ordini in sospeso - bystop, sellstop, bylimit e bystop.

Posizioni - comprare e vendere.

Non attivo - ordini cancellati e posizioni chiuse.

 
Vitaly Muzichenko:

Ordini in sospeso - bystop, sellstop, bylimit e bystop.

Posizioni - comprare e vendere.

Non attivo - ordini cancellati e posizioni chiuse.

Vitaly Muzichenko: Grazie!
Dato che un ordine è un ordine per eseguire un'operazione commerciale, solo gli ordini in sospeso possono essere considerati come "ordini attivi", mentre le posizioni di acquisto e vendita non sono ordini per eseguire un'operazione commerciale. O mi "manca qualcosa"?
 
Ordini attivi - ordini di compravendita che sono in attesa di esecuzione o cancellazione, ad eccezione degli ordini TP/SL e MarginCall. Gli ordini attivi possono essere BUY e SELL.
Motivazione: