"Erro "O pedido não pode ser encontrado
3 respostas
odomike
12 anos atrás #111948
Hi,
Decidi criar um EA baseado no sistema de negociação manual SonicR (http://www.forexfactory.com/showthread.php?t=114792). Em vez de usar os mesmos indicadores personalizados que eles usaram na estratégia, decidi usar os indicadores padrão do MT4 (EMA 34 High and Low, CCI Period 63, SMA 10 Close) para replicar a estratégia. Isso foi feito para garantir que eu não encontrasse nenhum problema com o SQ EA Wizard. Não tive nenhum problema com a configuração da estratégia e das regras de negociação no SQ, mas depois de salvar o arquivo .mql4 e voltar a testar no Metatrader 4, sempre recebo esse erro "ORDER CANNOT BE FOUND" no diário do testador e o EA não faz nenhuma negociação. É muito confuso, porque analisei a estratégia e as regras de negociação várias vezes para ter certeza de que não havia nenhum erro e realmente não consigo ver nenhum. Então, por que estou recebendo esses erros?
Alguém pode me ajudar a resolver esse problema? Eu realmente agradeço todos os seus gestos gentis.
Obrigado de antemão.
~Michael.
N.B.: Como não usei nenhum indicador personalizado na criação da estratégia, você pode replicá-la facilmente em seu computador.
0
stearno
12 anos atrás #123679
Odomike,
O problema é que três regras cruzam acima/abaixo ao mesmo tempo nesse EA. Uma boa regra geral é fazer com que apenas uma regra cruze acima/abaixo enquanto as outras regras estiverem usando > ou <.
Coloquei seus indicadores em um gráfico para mostrar o motivo.
As pequenas linhas azuis verticais mostram quando a vela cruza abaixo da MA1, depois da MA2 e, em seguida, quando o CCI cruza abaixo do nível 2. Há 6 velas entre o cruzamento da primeira MA e o cruzamento do CCI. Como nem todas estão cruzando exatamente na mesma barra, é por isso que você está recebendo a mensagem de erro.
Portanto, você deve usar o cruzamento abaixo/acima para a última coisa que cruzará na sequência dos três indicadores. Por exemplo, se o CCI for sempre o último item a cruzar, você poderá usar essas regras:
Longo
CCI cruza acima do Nível 1
Proposta > MA1
Proposta > MA2
Se um indicador não for sempre o último a cruzar, o que significa que eles podem cruzar em qualquer ordem, então você pode escrever as regras para corresponder a isso. Portanto, suas regras poderiam ser:
Longo
((( CCI cruza acima do Nível 1
Proposta > MA1
Lance > MA2)
OR (CCI > Nível 1
O lance cruza acima de MA1
Lance > MA2)
OR (CCI > Nível 1
Proposta > MA1
O lance cruza acima da MA2)))
Espero que isto ajude.
-Stearno
0
odomike
12 anos atrás #123711
0
stearno
12 anos atrás #124327
Michael,
Boas perguntas.
Para limitar por tempo, anexei capturas de tela do que eu faço pessoalmente. Uso a hora comparada a uma variável. Em seguida, defino as variáveis nos parâmetros para as horas que quero negociar.
Pessoalmente, uso dois conjuntos de horas para ter a possibilidade de negociar em duas sessões em um dia (por exemplo, London Open e NY Open). Uso parâmetros para definir as variáveis para poder otimizar esses parâmetros. Você pode usar essa mesma ideia e fazer muitas variações que se ajustem melhor ao que você deseja.
Acho que sua estratégia parece boa. Você já tentou fazer o backtest? A propósito, descobri que é sempre melhor fazer primeiro o backtest e ver se as ordens estão sendo preenchidas e assim por diante. Mas, em seguida, faço um backtest visual para observar com os indicadores que o EA usará no gráfico, para que eu possa ver visualmente cada vez que o EA deve abrir ou fechar uma ordem e garantir que ele esteja fazendo o que eu quero. Em seguida, posso deduzir por que não está e aprender como informar melhor ao computador, por meio dessas condições, como fazer o que eu quero.
Quanto às suas outras perguntas sobre quando usar >< e quando usar cruz acima/abaixo.
Uma maneira fácil de lembrar que eu uso para mantê-los diferenciados é: cruzes acima/abaixo, o início da barra deve estar em um lado e o final da barra no outro.
Com ><, a escolha dessa opção é muito mais livre, pois ela apenas indica que a barra deve estar acima/abaixo do item de comparação. Não importa se foi acima agora, muitas barras atrás, se sempre esteve acima, etc. Tudo o que importa é que, no momento em que o EA está executando essa regra, ela deve ser maior ou menor que (acima ou abaixo).
Incluí um pequeno gráfico para ilustrar com imagens. A linha vermelha é a média móvel.
Se eu disser Close[1] < Moving Average, então a barra 'A' é o que recebo.
Se eu dissesse Close[1] > Moving Average, então a barra "C" seria a que eu obteria.
Se eu disser que Close[1] cruza acima da média móvel, então a barra "B" é o que recebo.
Basicamente, precisamos nos perguntar: "Naquele momento (no exemplo acima, estamos usando o fechamento da última barra naquele momento, Close[1]), quero que meu indicador esteja acima do fechamento, abaixo do fechamento, ou quero a mínima da última barra em um lado do indicador e a máxima no outro lado.
Talvez um exemplo possa ajudar. Aqui está um exemplo de algo que aprendi ao usar essas comparações:
Ao usar > 30 pips. Assim, quando a ordem com lucro de 29 pips e a próxima foi para 30 pips, a regra acionou a ação para fechar 50% da ordem. Na barra seguinte, a ordem foi para 31 pips de lucro. Adivinhe só. O lucro da ordem ainda é maior que 30 pips. Portanto, a ação foi acionada novamente e fechou 50% da ordem. Isso continuou até que houvesse apenas um mini-lote e não fosse mais possível fechar o 50%. Mas devo dizer que o backtesting foi divertido porque, quando eu observava visualmente o EA, ele fechava as ordens como um spray de metralhadora.
Então, percebi que a causa disso era o fato de eu ter usado Profit > 30 pips. E o que eu não lembrava é que 31, 32, 33, 34 pips são todos maiores que 30. Portanto, usei fechar 50% quando Profit cruzou acima de 30 pips. Isso funcionou, pois o preço passou de 29 para 30 pips em uma barra e, em seguida, fechei o 50% do meu pedido. Portanto, agora, quando o lucro subia para 31, 32, 33, 34 pips, ele não fechava mais ordens.
Mas o problema com essa regra era quando o lucro voltava a cair para 25, depois voltava a subir para 29 e 30 e fechava 50% da ordem porque a regra era satisfeita novamente. (Isso não está relacionado, mas resolvi o problema porque, quando a regra fechava 50% da ordem, ela também definia o valor de uma variável como 2. Em seguida, adicionei outra condição à regra que dizia para não fazer um fechamento parcial quando essa variável = 2. Isso resolveu meu problema e fez com que ela fechasse apenas uma vez)
Espero que as informações acima sejam úteis.
-Stearno
0
Visualizando 3 respostas - 1 até 3 (de um total de 3)