- Versão beta do livro online sobre programação MQL4 - por Sergey Kovalev (SK.)
- Erros, bugs, perguntas
- [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ê.
Existe um EA em várias moedas. A breve idéia é a seguinte. Para um símbolo são feitos todos os cálculos e a negociação é feita para outro símbolo. O Expert Advisor trabalha com o controle explícito da abertura de um novo bar. Desta forma, a próxima coisa desagradável acontece. O Consultor Especialista pode não abrir (pular) uma negociação em uma conta real, mas quando verificado no Testador de Estratégia, esta negociação está presente. Ou, o Conselheiro Especialista pode abrir um verdadeiro comércio um bar mais tarde do que o necessário, mas, novamente, quando verificado no Testador de Estratégia, o comércio está lá. A que pode estar relacionado?
Uma posição pode não abrir se novas citações chegarem e você abrir com as antigas...
Uma posição pode não abrir se novas citações chegarem e você abrir com as antigas...
Entendo o que você quer dizer, mas a EA lida com esta situação. Só de olhar para o tronco, não há sinal algum. Isso significa que a EA não se ativou (não dá solicitação de posição aberta). Ou funcionou apenas no bar seguinte. E isto nem sempre acontece. Mas só às vezes. E o que está relacionado a ele não está claro em absoluto...... Embora no testador - tudo está bem e tudo está aberto e fechado corretamente
Existe uma EA em várias moedas. Em resumo, o significado é o seguinte. Todos os cálculos são realizados para um símbolo, enquanto que a negociação é realizada para outro símbolo. O Expert Advisor trabalha com o controle explícito da abertura de um novo bar. Desta forma, a próxima coisa desagradável acontece. O Consultor Especialista pode não abrir (pular) uma negociação em uma conta real, mas quando verificado no Testador de Estratégia, esta negociação está presente. Ou, o Conselheiro Especialista pode abrir um verdadeiro comércio um bar mais tarde do que o necessário, mas, novamente, quando verificado no Testador de Estratégia, o comércio está lá. A que pode estar relacionado?
Experimente a impressão...
Imprimir(.
antes do sinal, depois do sinal, na abertura, depois da abertura
imprimir condições explícitas
como
// Print( " esperar por MyOPEN == 1 " + MyOPEN );
se ( MyOPEN == 1 )
{
Imprimir( " inserido por MyOPEN == 1 " );.
}
---
Ah, e mais sobre a abertura de novos BARs!!!
Note que há barras puladas! E o Testador não gera barras perdidasnão procure apenas um bar, procure apenas um novo bar
---
agora mesmo, em meu tempo real
no gráfico EURUSD M5 desde o início do dia 140 barras formadas, mas no CHF 137 barras, ou seja, 3 barras perdidas :-)
se você simplesmente procurar a barra correspondente ao EUR no CHF, você pode perder uma barra
---
e depois há solicitações
Se você tinha um SINAL e não pode perdê-lo, basta usar a condição para entrar ou sair do mercado!
e verifique se seu sinal está FILLED!
e até que seja feito - correr o código para executar - para não entrar em um loop, fazer um contador
depois de sair do balcão - verifique se você precisa entrar - sair
e se for preciso entrar - executar novamente
----
além disso, código comercial
Além disso, este código não pode ser simples!
( existe um código que é responsável pelo trabalho mecânico - abertura da rede de arrasto fechamento sem perdas, ou seja, trabalho com pedidos após recepção de sinais )
Há um Expert Advisor com várias moedas. A breve idéia é a seguinte. Todos os cálculos são realizados para um símbolo enquanto a negociação é realizada para outro símbolo. O Expert Advisor trabalha com o controle explícito da abertura de um novo bar. Desta forma, a próxima coisa desagradável acontece. O Consultor Especialista pode não abrir (pular) uma negociação em uma conta real, mas quando verificado no Testador de Estratégia, esta negociação está presente. Ou, o Conselheiro Especialista pode abrir um verdadeiro comércio um bar mais tarde do que o necessário, mas, novamente, quando verificado no Testador de Estratégia, o comércio está lá. A que pode estar relacionado?
Estes são chamados de requotes. No testador, os ofícios não são requesitos. Portanto, se o ingresso do comércio aberto for negativo, devemos reiniciar a bandeira do bar formado.
tempo int int estático = 0; // Tempo de início da barra
...
int start() {
se (Time[0] == pré-viagem) retornar(0); // barra é a mesma, portanto saia
prevtime = Tempo[0]; // barra fresca, manter o tempo
...
int ticket = -1;
...
bilhete = OrderSend(...); // tentar abrir posição
se (bilhete < 0) { // posição não foi aberta por algum motivo.
Sleep(30000);
// Aqui reiniciamos a bandeira da barra formada, para que repitamos a operação no próximo tick, não na próxima barra
prevtime = Tempo[1];
}
}
A EA trabalha em bares de hora em hora. Não se trata de solicitações - a EA monitora isso e enviará uma nova solicitação, se necessário. Escrevi sobre o fato de que a EA não aciona nem mesmo para que ela pelo menos tente começar a abrir um pedido. Ou seja, 2-3 ordens, abre bem (como deve ser), e a quarta (ou terceira) pode nem mesmo começar a abri-la ou abrir uma hora depois. Embora, se você verificar este momento no testador, esta ordem estará no lugar certo.
A questão, como eu entendo, é que os carrapatos para os instrumentos não vêm de maneira uniforme. E o tique para abrir uma nova barra para o símbolo no qual o cálculo é feito pode vir muito mais tarde do que para o símbolo no qual nós negociamos. Ou vice versa. E aqui pode ocorrer uma discrepância. Mas como isso pode ser evitado?
Seu consultor especializado implica que velas de uma hora em diferentes símbolos se abrem de forma síncrona. Ou seja, quando um novo castiçal de 1 hora aparece no EURUSD, o Consultor Especialista começará a verificar os valores no intervalo de tempo horário do GBPUSD. Mas se, naquele momento, a nova hora no canil ainda não começou - tudo vai em farrapos. Em geral, precisamos reordenar um pouco a lógica da EA.
Obrigado pela resposta, pensei que fosse essa a razão. Por favor, você pode me dizer como? Porque este é um grande problema. Aqui está uma captura de tela, a partir da real. Podemos ver que no Testador de Estratégia a pose foi aberta às 15h00 e na conta real foi aberta apenas às 16h00. Embora tenhamos os mesmos parâmetros no Testador de Estratégia e na conta real.
A EA trabalha em bares de hora em hora. Não se trata de solicitações - a EA monitora isso e enviará uma nova solicitação, se necessário. Escrevi sobre o fato de que a EA não aciona nem mesmo para que ela pelo menos tente começar a abrir um pedido. Ou seja, 2-3 ordens, abre bem (como deve ser), e a quarta (ou terceira) pode nem mesmo começar a abri-la ou abrir uma hora mais tarde. Embora, se você verificar este momento no testador, esta ordem estará no lugar certo.
A questão, como eu entendo, é que os carrapatos para os instrumentos não vêm de maneira uniforme. E o tique para abrir uma nova barra para o símbolo no qual o cálculo é feito pode vir muito mais tarde do que para o símbolo no qual nós trocamos. Ou vice versa. E aqui pode ocorrer uma discrepância. Mas como evitá-lo?
Considere que um novo tique de qualquer barra de hora (para qualquer instrumento) é o início da hora
---
corrigir a lógica nesta veia...
assim que a barra horária abrir em qualquer instrumento
recalcular o outro instrumento, assumindo que a barra já tenha fechado, mesmo que não tenha formado uma nova barra
porque dentro de alguns carrapatos ou alguns segundos ele aparecerá lá
---
digamos que você conte 2 ou 3 instrumentos
você pode pegar o início da hora em pelo menos 20 símbolos - de preferência os instrumentos em iene, pois são muito rápidos
// --- практически гарантия ловли начала часа двумя БОДРЫМИ парами if ( TimeSaveBehchH1 == iTime("GBJJPY",PERIOD_H1,0) ) { TimeSaveBehchH1 = iTime("GBJJPY",PERIOD_H1,0); // новый бар } if ( TimeSaveBehchH1 == iTime("USDJPY",PERIOD_H1,0) ) { TimeSaveBehchH1 = iTime("USDJPY",PERIOD_H1,0); // новый бар } //--- if ( TimeSaveBehchH1 == iTime("EURUSD",PERIOD_H1,0) ) // в довершении ловим на своей рабоче паре { TimeSaveBehchH1 = iTime("EURUSD",PERIOD_H1,0); // новый бар } if ( TimeSaveBehchH1 == iTime("USDCHF",PERIOD_H1,0) ) // ловим на второй паре { TimeSaveBehchH1 = iTime("USDCHF",PERIOD_H1,0); // новый бар }
para ser honesto e isso não é muito agradável ... o carrapato não chegou a estes pares e você passará de novo
se você mostrar um código que gera uma entrada - você pode ser capaz de encontrar o erro na lógica mais rapidamente
Seu consultor especializado assume que os castiçais de hora em diferentes símbolos se abrem de forma síncrona. Ou seja, quando um novo castiçal de 1 hora aparece no EURUSD, o Consultor Especialista começará a verificar os valores no intervalo de tempo horário do GBPUSD. Mas se, naquele momento, a nova hora no canil ainda não começou - tudo vai em farrapos. Em geral, precisamos reordenar um pouco a lógica da EA.
Obrigado pela resposta, pensei que fosse essa a razão. Por favor, você pode me dizer como? Porque este é um grande problema. Aqui está uma captura de tela, a partir da real. Podemos ver que no Testador de Estratégia a pose foi aberta às 15h00 e na conta real foi aberta apenas às 16h00. Embora no testador e nos parâmetros reais sejam os mesmos.
...
Para o símbolo comercializado, a marca da nova barra veio mais cedo, por isso as barras antigas do símbolo analisado participaram da análise, o início funcionou e está esperando a próxima hora. É divertido adivinhar sem ver um pedaço de código.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso