Características del lenguaje mql5, sutilezas y técnicas - página 10

 
Alexey Volchanskiy:
¿Hay alguna forma de calcular el margen cubierto?
Creo que se puede calcular todo a través de las funciones Symbol.
 
fxsaber:
Gracias por el consejo. En el desierto es SymbolInfoMarginRate. Así que ahora es así
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
}

Debemos tener claro que en MT5 puede haber requisitos de margen muy diferentes en las distintas direcciones. Es decir, una sola variante de MT4 puede no funcionar. En Forex, por supuesto, no será así. Pero tienes que recordar. Por lo tanto, en general, se debe escribir así
// Альтернатива OrderCalcMargin
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
}

¡Muchas gracias! Ahora funciona en todas partes sin problemas.

Me pregunto si la función"MyOrderCalcMargin" sigue operando, y si es así, cómo operarla al menos en el probador)

 
fxsaber:
Creo que se puede calcular todo a través de las funciones Symbol.
Desgraciadamente, las funciones de Symbol funcionan de forma torcida

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, cuenta en USD, RTS-3.17.

TickValue da un valor erróneo - en rublos, no en la moneda de la cuenta (USD).

FxPro-ECN. Los símbolos GOLD y GOLDEURO tienen el mismo TickValue. Aunque, obviamente, deberían ser diferentes en tiempos del EURUSD.

 
fxsaber:

Broma MT5 en FIBOGroup-MT5 Server SGDJPY

En esta situación, MyOrderCalcMargin calcula correctamente, mientras que el OrderCalcMargin normal no lo hace.


La función normal cuenta de acuerdo con la especificación del contrato especificado en la configuración del instrumento - con la moneda de margen NOK, respectivamente, para un lote se toma 1000 NOK.

Probablemente cuente como división el nombre del par de divisas SGDJPY - obtiene 1000 SGD por un lote.

Por lo tanto, el problema es la especificación incorrecta del contrato por parte del corredor. Por favor, póngase en contacto con el corredor del servidor correspondiente.

 
fxsaber:

Es decir, para hacer que todos los OrderSend estén sincronizados con el entorno comercial y evitar trampas, basta con hacer el código fuente dado como un archivo mqh y hacer el correspondiente #include en sus programas.

Puedes dejar de bailar con la pandereta.

SD me ha dicho que desde la próxima build OrderSend() funcionará correctamente :)

 
MQ Alexander:

La función regular cuenta según la especificación del contrato especificada en los ajustes del instrumento - con la moneda de margen NOK, respectivamente, para un lote se necesitan 1000 NOK.

En su caso, debe ser una división del nombre del par de divisas SGDJPY - para un lote se cobra 1000 SGD.

Por lo tanto, el problema es la especificación incorrecta del contrato por parte del corredor. Póngase en contacto con el corredor del servidor correspondiente.

La MT5 tiene un mecanismo interno oculto que puede convertir cualquier moneda a la moneda de la cuenta. En este caso, OrderCalcMargin 1000 NOK lo convierte en el número de USD correspondiente y lo emite.

Por favor, haz que este mecanismo sea abierto. Por ejemplo,

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

Estos tipos de cambio están disponibles al 100% en el terminal, ya que OrderCalcMargin los calcula. Su trabajo es especialmente notable en las cuentas MetaQuotes-Demo USD cuando se toman los símbolos FORTS - su moneda de margen está en RUR.

Esto es especialmente relevante debido al chip/bicho TickValue

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, cuenta en USD, RTS-3.17.

TickValue da un valor erróneo - en rublos, no en la moneda de la cuenta (USD).

FxPro-ECN. Los símbolos GOLD y GOLDEURO tienen el mismo TickValue. Aunque, obviamente, deberían ser diferentes en tiempos del EURUSD.

 
Hola, estoy leyendo la documentación:
OrdersTotal

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

int  OrdersTotal();

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

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

Примечание

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

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

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

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
¿Y dónde encuentro el desciframiento del término"órdenes activas"?
" órdenes pendientes activas", y órdenes pendientes NO activas ,¿qué son?
 
Leo59:
Hola, estoy leyendo la documentación:
OrdersTotal

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

int  OrdersTotal();

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

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

Примечание

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

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

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

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
¿Y dónde encuentro el desciframiento del término"órdenes activas"?
" órdenes pendientesválidas", y órdenes pendientes NO válidas ,¿qué son?

Órdenes pendientes - bystop, sellstop, bylimit y bystop.

Posiciones - compra y venta.

No activo - órdenes borradas y posiciones cerradas.

 
Vitaly Muzichenko:

Órdenes pendientes - bystop, sellstop, bylimit y bystop.

Posiciones - compra y venta.

No activo - órdenes borradas y posiciones cerradas.

Vitaly Muzichenko: ¡Gracias!
Dado que una orden es una orden para realizar una operación comercial, sólo las órdenes pendientes pueden considerarse "órdenes activas", mientras que las posiciones de compra y venta no son órdenes para realizar una operación comercial. ¿O me estoy "perdiendo algo"?
 
Órdenes activas: órdenes comerciales que están pendientes de ejecución o cancelación, excepto las órdenes TP/SL y MarginCall. Las órdenes activas pueden ser de COMPRA y VENTA.