Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 112
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
Olá. Escrevi em minha EA o cálculo do lote desta forma:
lot=NormalizeDouble(AccountBalance()*risk/(SL*MarketInfo(Symbol(),MODE_TICKVALUE)),2);
O objetivo é obter o tamanho de lote correto independentemente da moeda da conta e do par para o risco dado e parar a perda. Risk é definido como um percentual de perdas quando o Stop Loss é acionado. Stop Loss SL em pips (onde pips é a menor mudança possível no preço do par). Vou iniciar esta EA com uma conta real. Mas eu tenho minhas dúvidas. Se alguém de programadores mais experientes pudesse me dizer quais erros podem ocorrer, eu ficaria muito grato.Primeiro testador de estratégia. Em seguida, uma conta demo. E só então um de verdade. Para verificar a fórmula, escreva um roteiro. Ou simplesmente calculá-lo em um pedaço de papel. Eu tomei balanço=100, risco=0,1 SL=100, Tick=0,00001 Lote=100*0,1 / (100*0,00001) = 10 / 0,001 = 10000 lote a mais do que o balanço? Devemos considerar a vantagem?
MarketInfo(Symbol(),MODE_TICKVALUE)) não retorna o tamanho mínimo do tick. Está escrito na ajuda:
Tamanho da mudança mínima do preço do instrumento na moeda do depósito.
Mas na verdade, ele retorna o valor da mudança mínima do preço do símbolo na moeda do depósito de 1 lote do contrato.
Em seu exemplo,MarketInfo(Symbol(),MODE_TICKVALUE)) retornará 1. E então tudo está correto. Experimentei em contas reais em dólar e rublo e funciona. Aqui está o roteiro que eu usei para verificá-lo:
#Copyright "Copyright 2016, MetaQuotes Software Corp.
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa
#property show_inputs
risco duplo externo=0,10;
sl=1000;
//+------------------------------------------------------------------+
//| Função de início do programa Script |
//+------------------------------------------------------------------+
nulo OnStart()
{
Alert(NormalizeDouble(AccountBalance()*risk/(sl*MarketInfo(Symbol(),MODE_TICKVALUE),2)))
}
//+------------------------------------------------------------------+
Você está certo. A verificação com um roteiro é mais rápida e mais confiável
Também precisamos fazer a precisão na função NormaliseDouble depender do lote mínimo permitido. Se você passar um lote para a função OrderSend, por exemplo, 0,11, e a ferramenta for comercializada apenas com lotes múltiplos de 0,1, haverá um erro.
Não consigo entender por que as negociações abertas não são apagadas de uma só vez, ou seja, a EA apaga algumas delas, mas a ordem de erro 4108, a ordem de mercado não pode ser apagada várias vezes, e só então as apaga.
Não consigo entender por que as negociações abertas não são apagadas de uma só vez, ou seja, a EA apaga algumas delas, mas a ordem de erro 4108, a ordem de mercado não pode ser apagada várias vezes, e só então as apaga.
Esta página explica como excluir. Você tem 2 erros.
Na partida, há uma matriz de erros constante fora do alcance em 'expert1.0.mq4' (69,25)... Eu entendi que se tratava da matriz. Eu não sei o que fazer.
Necessidade de ver o código, ou um pedaço dele, manipulando esta matriz.
Telepatas, descansem hoje.
Você precisa olhar o código ou um pedaço de código que lida com a matriz.
Telepatas, descansem hoje.
}
Aqui está a função.
Apenas pensei que o problema não estava no código, pois não há erros no modo padrão.