Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 412
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á, tenho um problema de principiante...
Não consigo que o sistema compare o valor próximo da última barra com os altos e baixos de um determinado período, por exemplo
últimas 20 barras. O que é que estou a fazer mal?
Verifiquei-o com Alerta e por alguma razão desconhecida o testador mostra o valor máximo do cálculo do último tick, mas ele dá este valor
É o mesmo número de vezes que as carraças, por isso a ordem não abre.
A segunda questão é como fazer a minha EA esperar pela abertura do próximo bar (período de 30m)? Nos pontos de controlo testar tudo está bem, mas se eu usar carraças,
depois a EA abre no mesmo bar logo a seguir a ter fechado em stop loss.
Também, como posso fechar um negócio independente de um tick ou não? Por exemplo, durante um período de 30m quero fechar a encomenda 5 segundos antes do fim do bar (29.55, 59.55)
Com base em todos os dados nesse momento. Nesta fase, o problema é que se um tick não ocorrer em 5 segundos, portanto não
(Em teoria isto é uma treta, mas na realidade o próximo tique pode aparecer em alguns castiçais por alguma razão.
pode estar em algumas velas por alguma razão.
Obrigado de antemão!1. Não vi nada sobre as últimas 20 barras no código.
2. Como determinar o primeiro tique de uma nova barra
3. como fechar uma encomenda sem verificar se foi uma carraça ou não?
Temos de evitar trabalhar com o OnTick e trabalhar com o OnTimer. Definir o temporizador com um intervalo de 1 segundo e verificar o tempo nele contido. O temporizador não depende de carraças.
o_oops não sabia que o terminal também picava onde estava o erro, a primeira vez que acertei num erro crítico.
Cuspiu nele.
Claro que vai cuspir, acede ao 3º elemento de uma matriz com dimensão 2 - mas[2]++
Alexey Volchanskiy:
Так у тебя в комменте стоит управляющий символ "\n " - это символ перевода строки. Если его убрать, многострочия не будет.
É uma piada. Agora acrescenta um comentário no final da linha... e o texto corre para a direita. ;-)
Boa noite. Tentar escrever uma simples EA em tenkan e kinjun crossing. Aqui está o código:
nulo OnTick()
nulo OnTick()
{
TradeSignal_20();
}
int TradeSignal_20()
{
int sig=0;
if(h_ich==INVALID_HANDLE)
{
h_ich=iIchimoku(Símbolo(),Período(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
return(0);
}
senão
{
if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
}
//--- verificar condição e valor definido para sig
if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
senão se(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
senão sig=0;
if (ich1_buffer[1]>ich2_buffer[1])
if (ich1_buffer[2]<ich2_buffer[2])
Alerta(Símbolo()+": compra");
if (ich1_buffer[1]<ich2_buffer[1])
if (ich1_buffer[2]>ich2_buffer[2])
Alerta(Símbolo()+": venda");
//--- devolver sinal comercial
devolução (sig);
}
//+------------------------------------------------------------------+
Como posso fazer com que o alerta seja chamado apenas uma vez e não constantemente?
1. Não vi nada sobre as últimas 20 barras no código, dar detalhes.
2. Como determinar o primeiro tique de uma nova barra
3. como pode um comércio ser fechado, independentemente de ter sido assinalado ou não?
Tem de evitar trabalhar com OnTick e trabalhar com OnTimer, definir o temporizador com intervalo de 1 segundo e verificar o tempo nele contido. O temporizador não depende da chegada de carraças.
Boa noite. Tentar escrever uma simples EA em tenkan e kinjun crossing. Aqui está o código:
nulo OnTick()
nulo OnTick()
{
TradeSignal_20();
Como posso fazer com que o alerta seja chamado apenas uma vez e não o tempo todo?Aqui, como posso comparar o preço de fecho com o máximo das últimas 20 barras? E se o último preço for igual ou superior ao máximo das últimas 20 barras, então há um sinal para abrir.
Penso que o problema está com a referência à barra zero, ou seja, a barra actual. Deve definir o início de um novo bar, dei-o na resposta anterior e efectuo todas as comparações apenas no primeiro tick de um novo bar. E alterar a indexação. Temos de garantir que o último bar fechado não se encontra no iHighest. E agora tem uma referência à barra actual a ser formada em cada tick, os resultados serão os mais estranhos.
double HIGHEST = High[iHighest(Symbol(),0,MODE_HIGH,20,2)]; if(Close[1] > SMMA && Close[1] > BB_UP && Close[1] >= HIGHEST) { ***********
Vejamos o código de
Penso que o problema está com a referência à barra zero, ou seja, a barra actual. É preciso definir o início de uma nova barra, citei-a na resposta anterior e só no primeiro tick da nova barra é que se fazem todas as comparações. E alterar a indexação. Temos de assegurar que o último bar fechado não se encontra no iHighest. E agora tem uma referência à barra actual a ser formada em cada tick, os resultados serão os mais estranhos.
Obrigado, parece ter ajudado :) embora pudesse jurar que fiz exactamente a mesma coisa e não funcionou...
Aconselhou a OnTimer() mas por alguma razão não cooperará comigo. Estudei toda a ajuda e não encontrei quaisquer explicações ou exemplos claros, por isso fiquei perplexo.
Ou seja, este código trivial não é executado, embora esteja tudo especificado na referência... Ao pesquisar no Google este programa, deparei-me com o facto de dizerem que o OnTimer() não funciona no teste
modo. Embora este momento pareça ter sido eliminado com mql5. Ajuda para o compreender :) Obrigado!
Imminence:
Pesquisando no Google este programa que encontrei, dizem que o OnTimer() não funciona em modo de teste. Foi resolvido com mql5. Ajude-me a compreendê-lo). Obrigado!
Certo, em MT4 no testador o temporizador não funciona e não está documentado! Escrevi ao Servicedesk e eles disseram que nunca o fariam. Consegui sair disto chamando o OnTimer no OnTick. Tenho o temporizador definido para um segundo.
Assim, se no testador os carrapatos vêm mais de 1 vez/segundo, os em excesso são saltados; se menos frequentemente, a série com um múltiplo de 1segundo é gerada. Este tempo reside na estrutura TimeCurrStruct, e a minha classe principal em qualquer modo só leva tempo a partir desta estrutura. Na minha opinião, esta é a única forma de lidar com este insecto. Aqui está uma função, removi coisas desnecessárias, só carne ))
Não pode premir o botão SRC?