Discussão do artigo "Funções para gerenciamento de dinheiro em um conselheiro especialista"

 

Novo artigo Funções para gerenciamento de dinheiro em um conselheiro especialista foi publicado:

O desenvolvimento das estratégias de negócio foca principalmente em buscar padrões para entrar e sair do mercado, bem como manter posições. Se formos capazes de formalizar alguns padrões em regras para negociação automatizada, então, o negociante enfrenta o problema de cálculo do volume das posições, o tamanho das margens, bem como manter um nível seguro dos fundos de hipoteca para garantir posições abertas no modo automatizado. Neste artigo, usaremos a linguagem do MQL5 para construir exemplos simples para realizar estes cálculos.

Autor: MetaQuotes Software Corp.

[Excluído]  

Ah, aqui está o MAIS delicioso da "Sala de Leitura", vamos ler o que e como ...

Especialmente de um autor assim. :)

 

Eu também gostaria de ver a função de cálculo de swap. Existem 5 tipos de swaps, e cada um tem suas próprias nuances.

Às vezes, não é possível chegar ao lugar certo pelo método científico.

Encontrei três variantes por seleção, mas ainda há SYMBOL_SWAP_MODE_BY_INTEREST. Não posso verificá-la porque não consigo encontrar uma corretora com esse método de cálculo.

Por favor, se houver a possibilidade de postar no CodeBase a função de cálculo de swap para a moeda e o lote especificados, ficaremos gratos.

[Excluído]  
sergeev:

Eu também gostaria de ver a função de cálculo de swap. Existem 5 tipos de swaps, e cada um tem suas próprias nuances.

Às vezes, não é possível chegar ao lugar certo pelo método científico.

Encontrei três variantes por seleção, mas ainda há SYMBOL_SWAP_MODE_BY_INTEREST. Não posso verificá-la porque não consigo encontrar uma corretora com esse método de cálculo.

Por favor, se houver a possibilidade de postar no CodeBase a função de cálculo de swap para a moeda e o lote especificados, ficaremos gratos.

+1. Ou, melhor ainda, implemente todo esse cálculo na biblioteca padrão e veremos como e o que fazer corretamente...
 
Acho que isso está escrito na documentação. e no mcl4 era a mesma coisa, apenas as fórmulas foram alteradas.
 
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:

Quais são esses casos em que a negociação é permitida, mas o Expert Advisor não tem permissão para negociar?

Isso significa a proibição do corretor ou as configurações do terminal?

Por analogia com 4: - " ...se o especialista tem permissão para negociar e o fluxo para operações de negociação é livre..."

Ou seja, IsTradeAllowed = IsExpertEnabled + IsTradeContextBusy ??? ?

IsTradeAllowed - Документация на MQL4
  • docs.mql4.com
IsTradeAllowed - Документация на MQL4
 

Artigo interessante e necessário! Tentei verificar as fórmulas desse artigo e o resultado foi o seguinte. Tomemos o EURGBP como exemplo. A moeda da conta está em dólares. O par de moedas mais próximo é EURUSD, ou seja, mode=true. Até aqui tudo bem? Usamos as fórmulas do artigo para determinar a margem necessária:

   if(direction==POSITION_TYPE_BUY)
     {
      //--- citação reversa
      if(mode)
        {
         //--- contar com o preço de compra para a cotação inversa
         calc_price=tick.ask;
         answer=lot*lot_size*calc_price;
        }
...
if(direction==POSITION_TYPE_SELL)
     {
      //--- citação reversa
      if(mode)
        {
         //--- contagem por preço de venda para a cotação inversa
         calc_price=tick.bid;
         answer=lot*lot_size*calc_price;
        }

Ou seja, ao comprar, de acordo com o artigo, a margem necessária deve ser:

BUY: margem = lot*lot_size*tick_ask/leverage

e na venda:

VENDER: margem = lot*lot_size*tick_bid/leverage

Codificamos essas fórmulas em um EA simples e tentamos vender e comprar EURUSD com fundos baixos antecipadamente para que o metatrader nos diga qual é a margem necessária. Ao mesmo tempo, emitimos nossa margem calculada. Recebemos essas mensagens do testador:

2010.07.06 16:34:01 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - margem calculada pelo testador
2010.07.06 16:34:01 Core 1 Error: not enough money. Margem livre = 10, margem necessária = 122,899 - margem calculada por nós.


2010.07.06 16:34:01 Core 1 no enough money [instant buy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - margem calculada pelo testador
2010.07.06 16:34:01 Core 1 Error: not enough money. Margem livre = 10, margem necessária = 122,737 - margem calculada por nós.

Há uma diferença. Agora, alteramos as fórmulas de cálculo da margem necessária para

COMPRAR: margem = lote*tamanho do lote*tick_bid/alavancagem

VENDER: margem = lote*tamanho_do_lote*tick_ask/alavancagem

o que contradiz o artigo. Recebemos essas mensagens do testador:

2010.07.06 16:39:49 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - margem calculada pelo testador
2010.07.06 16:39:49 Core 1 Error: not enough money. Margem livre = 10, margem requerida = 122.911 - margem calculada por nós

2010.07.06 16:39:49 Core 1 no enough money [instant buy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - margem calculada pelo testador
2010.07.06 16:39:49 Core 1 Error: not enough money. Margem livre = 10, margem necessária = 122,722 - margem calculada por nós
.

Aqui, a margem calculada pelo Consultor especialista usando o método "errado" é exatamente a mesma que a margem calculada pelo testador. Acontece que, tanto no testador quanto no artigo, o bid e o ask são rearranjados ao calcular cruzamentos como EURGBP. Quem está certo: o artigo ou o testador?

 

O artigo é bom e útil para mim.

Tanto para entender quanto para economizar tempo. Muito obrigado

Só não entendo o que obtemos com essa função.

Se o valor da garantia for necessário, o valor do contrato não deveria ser dividido pela alavancagem?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
SHOOTER777:

O artigo é bom e útil para mim.

Tanto para entender quanto para economizar tempo. Obrigado pela atenção

Eu simplesmente não entendo o que obtemos com essa função.

Se o tamanho da garantia exigida, então o valor do contrato não deveria ser dividido pela alavancagem?

Não entendi imediatamente. Levei uma hora para descobrir por que o resultado era 100 vezes diferente do resultado real.
 
SHOOTER777:

Se o valor da margem for necessário, o valor do contrato não deveria ser dividido pela alavancagem?

O valor do contrato não é o valor da margem. O código divide o valor pela alavancagem para obter o valor da margem.
 
no par EURUSD em sua demonstração... com fundos disponíveis de 10.000, não consigo abrir com o lote 10... por quê? Por quê? e como calcular o lote máximo possível com base nos fundos disponíveis? obrigado.