Características da linguagem mql5, subtilezas e técnicas - página 10

 
Alexey Volchanskiy:
Existe alguma forma de calcular a margem coberta?
Acho que você pode calcular tudo através das funções Symbol.
 
fxsaber:
Obrigado pela dica! No deserto é SymbolInfoMarginRate. Então agora é assim.
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
}

Precisamos ser claros que na MT5 podem existir requisitos de margem muito diferentes em diferentes direcções. Ou seja, uma única variante do MT4 pode não funcionar. No Forex, é claro, este não será o caso. Mas tens de te lembrar. Portanto, em geral, você deve escrevê-lo desta forma
// Альтернатива OrderCalcMargin
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
}

Muito obrigado! Agora está a funcionar em todo o lado sem problemas.

Pergunto-me se a função"MyOrderCalcMargin" ainda está a ser negociada e, em caso afirmativo, como negociá-la pelo menos no testador)

 
fxsaber:
Acho que você pode calcular tudo através das funções Symbol.
Infelizmente, as funções do Symbol funcionam tortuosamente.

Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação

Bugs, bugs, perguntas

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, conta em USD, RTS-3.17.

TickValue dá um valor errado - em rublos, não na moeda da conta (USD).

FxPro-ECN. Os símbolos GOLD e GOLDEURO têm o mesmo valor TickValue. Embora, obviamente, devam ser diferentes nos tempos do EURUSD.

 
fxsaber:

Truque MT5 no servidor FIBOGroup-MT5 SGDJPY

Nesta situação o MyOrderCalcMargin calcula correctamente, enquanto o normal OrderCalcMargin não o faz!


A função normal conta de acordo com a especificação do contrato especificada nas configurações do instrumento - com a moeda da margem NOK, respectivamente, para um lote é tomado 1000 NOK.

Você provavelmente conta como dividir o nome do par de moedas SGDJPY - você recebe 1000 SGD por um lote.

Por conseguinte, o problema é a especificação incorrecta do contrato do lado do corretor. Por favor, entre em contato com o corretor do servidor apropriado.

 
fxsaber:

Ou seja, para fazer todo o OrderSend sincronizado com o ambiente de negociação e evitar armadilhas, basta fazer o código fonte dado como um arquivo mqh- e fazer o #include correspondente em seus programas.

Você pode parar de dançar com pandeiro.

SD me disse que desde a próxima construção OrderSend() vaifuncionar corretamente :)

 
MQ Alexander:

A função regular conta de acordo com a especificação do contrato especificada nas configurações do instrumento - com a moeda de margem NOK, respectivamente, para um lote são necessários 1000 NOK.

No seu caso, deve ser uma divisão do nome do par de moedas SGDJPY - para um lote 1000 SGD é cobrado.

Por conseguinte, o problema é a especificação incorrecta do contrato do lado do corretor. Contacte o corretor do servidor apropriado.

O MT5 tem um mecanismo interno oculto que pode converter qualquer moeda para a moeda da conta. Neste caso o OrderCalcMargin 1000 NOK converte para o número apropriado em USD e o produz.

Por favor, torne este mecanismo público. Por exemplo,

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

Estas taxas de câmbio estão 100% disponíveis no terminal, uma vez que a OrderCalcMargin as calcula. Seu trabalho é especialmente notável nas contas MetaQuotes-Demo USD quando você pega símbolos FORTS - sua moeda margem está em RUR.

Isto é especialmente relevante por causa do chip/bug TickValue

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bugs, bugs, perguntas

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, conta em USD, RTS-3.17.

TickValue dá um valor errado - em rublos, não na moeda da conta (USD).

FxPro-ECN. Os símbolos GOLD e GOLDEURO têm o mesmo valor TickValue. Embora, obviamente, devam ser diferentes nos tempos do EURUSD.

 
Olá! Estou a ler a documentação:
OrdersTotal

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

int  OrdersTotal();

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

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

Примечание

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

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

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

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
E onde posso encontrar a decifração do termo"ordens activas"?
" ordens pendentes activas", e NÃO ordens pendentes activas , quais são elas?
 
Leo59:
Olá, estou a ler a documentação:
OrdersTotal

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

int  OrdersTotal();

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

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

Примечание

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

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

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

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
E onde posso encontrar a decifração do termo"ordens activas"?
" ordens pendentes válidas", e NÃO ordens pendentes válidas , quais são elas?

Pedidos pendentes - bystop, selltop, bylimit e bystop.

Posições - comprar e vender.

Não activo - ordens eliminadas e posições fechadas.

 
Vitaly Muzichenko:

Pedidos pendentes - bystop, selltop, bylimit e bystop.

Posições - comprar e vender.

Não activo - ordens eliminadas e posições fechadas.

Vitaly Muzichenko: Obrigado!
Como uma ordem é uma ordem para realizar uma operação de negociação, apenas ordens pendentes podem ser consideradas como "ordens ativas", enquanto as posições de compra e venda não são ordens para realizar uma operação de negociação. Ou estou a "perder alguma coisa"?
 
Ordens activas - ordens de negociação que estão pendentes de execução ou cancelamento, com excepção das ordens TP/SL e MarginCall. As encomendas activas podem ser COMPRAS e VENDAS.