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 SLem 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 o testador de estratégia. Depois temos uma conta de demonstração. E só então a conta real. 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?
STARIJ: 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:
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:
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Библиотеки: Black or White Text Black or White Text...
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.
Boa tarde. Estou pedindo ajuda. Eu pesquisei a NET e o fórum. Estou testando o Expert Advisor no modo padrão, tudo está bem... Sem erros ou avisos. Eu fiz o download dos dados do tick e adicionei. (Eu fiz tudo como descrito aqui - Como testar Expert Advisors com 99% de qualidade - fácil, gratuito, legal) e aqui - "Como obter 99% de qualidade de simulação no Testador de Estratégia Metatrader 4") Na partida, erro constante 'array fora do alcance em 'expert1.0.mq4' (69,25)... Entendo que se trata de uma série. Eu não sei o que fazer. Mas como tudo está bem no modo padrão... Por favor, ajude
qroner: 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.
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.