Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
MarketInfo(Symbol(),MODE_MARGININIT) = SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)
O que corresponde então ao MODE_MARGINREQUIRED? Ou então, como sei quanto dinheiro gratuito preciso para abrir 1 lote para comprar?
Em Moving Average.mq5 Expert Advisor from mql5 creators, os lotes são calculados desta forma
Porque é que o MaximumRisk é tão pequeno (0,02%) e dividido por 1000 ao calcular os lotes? O que representa este 1000? Talvez 1000 = fundos disponíveis necessários para comprar 1 lote multiplicado por 100% (para converter 0,02% em 0,0002 fracção)? Ou seja, os fundos disponíveis para a compra de 1 lote são de $10 ($10x100%=1000). Será que está na direcção certa?
E mais uma pergunta. Existe um limite para o número máximo de encomendas em aberto?
O que corresponde então ao MODE_MARGINREQUIRED? Ou, de outra forma, como sei a quantidade de fundos disponíveis necessários para abrir 1 lote para comprar?
E mais uma pergunta. Existe um limite para o número máximo de encomendas em aberto?
Fiz esta pergunta a mim próprio.
Aqui está a resposta dos criadores:
Ver
SÍMBOLO_COMÉRCIO_TAMANHO_DE_CONTRATO
Dimensão do contrato comercial
duplo
и
SÍMBOLO_MOEDA_MARGIN
Moeda em que a margem é calculada
corda
Pelo que entendi, terá de ser você a calculá-lo
gpwr:
Em Moving Average.mq5 Expert Advisor from mql5 creators, os lotes são calculados desta forma
Porque é que o MaximumRisk é tão pequeno (0,02%) e dividido por 1000 ao calcular os lotes? O que representa este 1000? Talvez 1000 = fundos disponíveis necessários para comprar 1 lote multiplicado por 100% (para converter 0,02% em 0,0002 fracção)? Ou seja, os fundos disponíveis para a compra de 1 lote são de $10 ($10x100%=1000). Será que está na direcção certa?
E mais uma pergunta. Existe um limite para o número máximo de encomendas em aberto?
Esta linha calcula o risco como 2% do montante de fundos livres, se bem entendi. Porque dividem este montante por 1000?
Mas se bem entendi, então com um depósito (fundos grátis) de $20.000, o Consultor Especialista recomenda abrir não mais de 2% deste montante ($400).
Dividindo este montante por 1.000 obteremos logicamente 0,4 lote...
gpwr:
Existe um limite para o número máximo de encomendas em aberto?
Esta linha calcula o risco como 2% do montante de fundos disponíveis, se bem entendi. A razão pela qual este montante é dividido por 1.000 cabe aos criadores.
Mas se bem entendi, então com um depósito (fundos grátis) de $ 20.000, o Consultor Especialista recomenda abrir não mais do que 2% deste montante ($ 400).
Dividindo este montante por 1.000 obteremos logicamente 0,4 lote...
Agora já o tenho. Há um erro em Moving Average.mq5. Em vez de
Deve ser
Depois a divisão por 1000 no cálculo dos lotes é clara: $100.000(tamanho do lote)/100(alavancagem) = 1000. No entanto, os criadores do mql5 não devem mostrar tal exemplo de um consultor especializado. Deve ser alterado
Para
Ou melhor ainda
É uma pena que o MODE_MARGINREQUIRED se tenha perdido, no entanto. Talvez os programadores restaurem este parâmetro para reduzir o número de cálculos.
Nomes curtos sempre foram usados apenas para exibição na subjanela do indicador
Não sei se estou a colocar os meus relatórios de insectos no sítio certo. Caso contrário, por favor, corrijam-me.
Ao testar a minha EA, criei propositadamente tal situação para ver se o testador determina correctamente a margem. Portanto, o depósito de 100 dólares. Trocamos EURUSD. O tamanho mínimo do lote é de 0,1. O seguinte código para o cálculo dos lotes está no Expert Advisor
O testador gera estes erros
2010.06.08 22:28:57 Core 1 não há dinheiro suficiente [compra imediata 0.10 EURUSD a 1.19242]
2010.06.08 22:28:57 Core 1 PrevBalance: 100.00, PrevEquity 100.00, PrevMargin: 0.00, NewMargin: 119.24, NewFreeMargin: -19.24
2010.06.08 22:28:57 Core 1 1000 100
2010.06.08 22:28:57 Core 1 não há dinheiro suficiente [compra imediata 0.10 EURUSD a 1.19180]
2010.06.08 22:28:57 Core 1 PrevBalance: 100.00, PrevEquity 100.00, PrevMargin: 0.00, NewMargin: 119.18, NewFreeMargin: -19.18
2010.06.08 22:28:57 Core 1 1000 100
2010.06.08 22:28:57 Core 1 não há dinheiro suficiente [compra imediata 0.10 EURUSD a 1.19362]
2010.06.08 22:28:57 Core 1 PrevBalance: 100.00, PrevEquity 100.00, PrevMargin: 0.00, NewMargin: 119.36, NewFreeMargin: -19.36
2010.06.08 22:28:57 Core 1 1000 100
A julgar por estas mensagens, a margem gratuita necessária para comprar 1 lote, LotRqdMgn, é igual a 1000, o que parece estar correcto. FreeMargin=100. Multiplique 0,1 lote por 1000 e obtém 100. Isto significa que temos fundos suficientes para abrir o 1º lote. Mas o testador relata que não temos fundos suficientes. Onde está o erro?
Com base nestas mensagens, a margem gratuita necessária para comprar 1 lote, LotRqdMgn, é de 1000, o que parece correcto. FreeMargin=100. Multiplique 0,1 lote por 1000 e obtém 100. Isto significa que temos fundos suficientes para abrir o 1º lote. Mas o testador relata que não temos fundos suficientes. Onde está o erro?
O erro é que se esqueceu da moeda da margem nos seus cálculos. Saldo = 100 USD e exigência de margem = 100 EUR (119 USD).
É por isso que não se pode fazer uma transacção - tudo está correcto.
O erro é que se esqueceu da moeda da margem nos seus cálculos. Saldo = 100 USD e exigência de margem = 100 EUR (119 USD).
É por isso que não é possível fazer uma transacção - tudo está correcto.
Obrigado Renat. Compreendi o meu erro. Alterou a fórmula de cálculo do LotRqdMgn e agora tudo funciona correctamente.
Uma nova palavra na biblioteconomia, ou o espantoso ao lado...
Assim, criei um Consultor Especialista que utiliza a biblioteca, verificou-a e tudo funciona. Fiz um arquivo com o consultor especializado, esta biblioteca e alguns ficheiros MQL5 e MQH. Entreguei o arquivo ao Aplicador/Desenvolvedor para testes.
Não há problema, mas decidi fazer os testes noutro terminal. Assim, desembalei o arquivo e decidi anexar o Consultor Especialista ao quadro.
E no diário terminal estas duas linhas são escritas:
2010.06.10 09:54:51 PM Experts MechanicalTrading-Infinity-2010 (EURUSD,Daily)
2010.06.10 09:54:51 Carregamento de Especialistas de Tradução Mecânica-Infinity-2010 (EURUSD,Daily) falhou
Comecei a procurar o quê e como funciona (ou melhor, não funciona) e encontrei um facto espantoso - o terminal vê compilada biblioteca em directório (como *.ex5), mas persistentemente "afunda-a", o que não é muito bom, como compreende...
Depois de tentar muitas razões possíveis para tal comportamento, decidi colocar o ficheiro original (como *.mq5) na pasta com a biblioteca. Tentei acrescentar um EA ao mapa - oh meu deus, tudo funciona.
No processo do jogo, surgiu uma série de questões:
1. Porque é que o Expert Advisor não funciona, se a biblioteca é representada apenas como .ex5?
2. Porque é que o terminal elimina teimosamente este ficheiro do directório?
3. Porque é que o diário de bordo terminal não tem um comentário claro sobre todos os pontos acima?
4. Porque é que a documentação não diz que este comportamento é possível?
E finalmente a quinta e última questão - como lidar com tudo isto e o que estou a fazer mal (pode ser que falte um ficheiro EX5 no terminal e que esteja à procura de algo, por exemplo um ficheiro de cabeçalho ou a própria biblioteca)?
PS
A propósito, tenho o mesmo bug com os Expert Advisors, eliminação obstinada do ficheiro *.ex5... :(