[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 1069

 
goldtrader:

Vamos fazer uma simples experiência provando que o sorteio em um comércio separado (cada) NÃO aparece no gráfico balanço/equidade.

Vamos escrever um Expert Advisor de duas linhas de código:

Vamos fazer o gráfico EURUSD D1 de 1 de maio de 2010 a 1 de agosto de 2010. Terá que comprar EUR a 1.2200 sem parada e fechar a posição no take profit a 1.3000. Veremos o drawdown no gráfico do balanço/capital e no gráfico de visualização:

Como você pode ver, no gráfico de visualização (superior na imagem da tela) o desenho é visível, e no gráfico de balanço/equidade NÃO é. Há apenas uma profissão lá. Vamos dar uma olhada no relatório do testador:

No relatório do testador, o sorteio é FIGURANTE.

Espero que a questão esteja esclarecida agora?

.

Talvez haja uma pergunta "Por que é feito dessa maneira?" Esta é uma pergunta não para nós, os usuários, mas para os desenvolvedores do MT4. Na minha opinião, isto é errado porque o gráfico de equilíbrio/equidade não mostra apostas excessivas.

Alexander, muito obrigado! Muito detalhado e minucioso, muito obrigado por seu trabalho. Os desenvolvedores do MT4 não respondem aqui?
 

Colegas, talvez alguém tenha se deparado com isso.

Existe um limite para o número de arquivos abertos ao mesmo tempo? 4 está OK, 5 está aberto, mas não escreve para ele. Eu não consigo descobrir o que está errado.

 

Há um problema. Um acordo deve ser aberto ao passar pelo limite superior (comprar) ou inferior (vender) do corredor indicador.

barqueiro duplo = 0,08; // limites do corredor.

R() - função indicadora

Função de verificação da condição de atravessar o limite superior ou inferior:

int RFilter()

{

se ( R(2)> -barier && R(1) < -barier ) retornar (-1);

se ( R(2)< barier && R(1) > barier ) retornar (1);

}

O Conselheiro Especialista abre uma posição imediatamente quando o indicador passa um limite (independentemente de qual). Se está acima - comprar, se está abaixo - vender.

 
dzhini:

Há um problema. O negócio deve ser aberto ao passar pelo limite superior (comprar) ou inferior (vender) do corredor indicador.

...

Na verdade, acontece que a EA abre uma posição imediatamente quando o indicador passa o limite (não importa qual). Se subir - comprar, se descer - vender.

Aumentar ligeiramente o valor da variável barier
 
costy_:

Pergunta para os conhecedores

Posso criar minha própria ferramenta comercial para meu testador?

Substituir EURUSD30_2.fxt pelo meu ou qualquer outra coisa.

metaquotestextos\\\\eURUSD30_2.fxt

Eu tentei criar o simple_csv2fxt, mas o tester substituiu o arquivo por seu próprio.

Talvez alguém tenha alguma experiência de criação, obrigado.

Há, há, há. E há um bom artigo sobre o assunto.
 
Reshetov:
Aumentar ligeiramente o valor da variável barier
Não ajudou. Isso poderia ser devido a um erro de atribuição de sinal?
 
dzhini:
Não ajuda. Poderia ser devido a um erro de atribuição de sinal?

Você pode ler as borras de café ou outra coisa, pois obviamente não há informações suficientes.

1. um indicador ou oscilador:

2. Se oscilador, ele tem limites ou não? Se sim, quais são seus altos e baixos?

3. Talvez o problema não esteja no código da função acima, mas no código de sua interpretação?

Como aqui não há telepatas, e todas as informações necessárias que você tem são confidenciais, a pergunta é a resposta. Isto é, com base nas informações que você forneceu, o aumento da variável deveria ter resolvido o problema.

 
Reshetov:

Você pode ler as borras de café ou qualquer outra coisa, pois as informações são claramente insuficientes.

1. um indicador ou oscilador:

2. Se for um oscilador, ele é limitado ou não? Se sim, quais são seus máximos e mínimos?

3. Talvez o problema não esteja no código da função acima, mas no código de sua interpretação?

Como não há telepatas aqui e você tem todas as informações que precisa marcadas como secretas, a pergunta é a resposta. Isto é, num relance, a julgar pelas informações que você fornece, o aumento da variável deveria ter resolvido o problema.

Este é um indicador com a seguinte fórmula:

duplo R(int shift)
{
double coef1 = 100,0 * (iMA(NULL, 0, perfast, 0,MODE_LWMA, PRICE_CLOSE, shift) - iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift) * iATR(NULL, 0, perslow, shift);
double coef2 = coef1 / iMA(NULL, 0, porslow, 0, MODE_LWMA, PRICE_CLOSE, turno) / iATR(NULL, 0, porslow, turno);
duplo principal =(MathExp(2.0 * coef2) - 1.0) / (MathExp(2.0 * coef2) + 1.0);

retorno (principal);

}

Restrições: (-1;1)

 
dzhini:

Este é um indicador com esta fórmula:

duplo R(int shift)
{
double coef1 = 100,0 * (iMA(NULL, 0, perfast, 0,MODE_LWMA, PRICE_CLOSE, turno) - iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, turno) * iATR(NULL, 0, perslow, shift);
double coef2 = coef1 / iMA(NULL, 0, porslow, 0, MODE_LWMA, PRICE_CLOSE, turno) / iATR(NULL, 0, porslow, turno);
duplo principal = (MathExp(2.0 * coef2) - 1.0) / (MathExp(2.0 * coef2) + 1.0);

retorno (principal);

}

Restrições: (-1;1)

Sua função deve funcionar corretamente, de acordo com as condições mencionadas nos comentários:

int RFilter()

{

se ( R(2)> -barier && R(1) < -barier ) retornar (-1); // Posição curta se o valor do indicador na barra anterior for maior que a barra inferior e a atual for menor que esta barra

se ( R(2)< barier && R(1) > barier ) retornar (1); // Posição longa se o valor do indicador estiver abaixo da barreira superior na barra anterior e estiver acima dela na barra atual

retornar(0); // Não fazer nada em todos os outros casos.

}

 
Reshetov:

Então sua função deve funcionar corretamente para as condições nos comentários:

int RFilter()

{

se ( R(2)> -barier && R(1) < -barier ) retornar (-1); // Posição curta, se o valor do indicador na barra anterior for maior que a barra inferior e a atual for menor que esta barra

se ( R(2)< barier && R(1) > barier ) retornar (1); // Posição longa se o valor do indicador estiver abaixo da barreira superior na barra anterior e estiver acima dela na barra atual

retornar(0); // Não fazer nada em todos os outros casos.

}

Mas não funciona :(