Erros, bugs, perguntas - página 1521
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ao mesmo tempo, a ajuda da função IsStopped diz que a operação do programa é terminada à força após 3 segundos, se houver um comando para terminar o programa mql.
E se while(true) for substituído por while(!IsStopped()), o indicador termina com sucesso quando removido do gráfico.
Tudo é claro. Fizemos uma indulgência para a eliminação normal.
Quando o terminal fechar, será difícil. Não mais do que 3 segundos.
E não tenho a certeza se vamos escrever isto na documentação, 1. de modo a não nos entregarmos a escrever indicadores tão imprudentes (escreveu isto para verificar?) 2. Como se afrouxou, tão apertado.
Uma causa engraçada do erro interno do compilador (função utilizada no indicador):
...A cura é óbvia, mas concordo - uma falha muito engraçada. :)))
Escreveu-te uma mensagem privada.
Dmitri Custurov:
Здравствуйте. Не получается написать код, который открывал бы позицию через n-количество баров после открытия предыдущей позиции. Пробовал использовать Time[i], iBarShift, iTime. Все безуспешно. В программировании новичок. Поиск ничего не дал.
Aqui está o código:
se ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==Falso)&&(Signal===1)))Temporizador=Tempo[0];}
TimerNull=iBarShift(NULL,0,Timer,false);
se ((TimerNull>=n)&&(z===1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
Também tentei desta forma:
Temporizador=Tempo[0];}
TimerNull=Time[0];
if ((TimerNull>=(Timer+2700))&&(z==1)) //as um exemplo aqui coloquei 2700 segundos em vez de n, o que em testes significou 3 velas de 15 minutos) {int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
E assim também:
Temporizador=Tempo[0];}
TimerNull=Time[0];
if ((CurrentTime()>=(Timer+2700))&&(z===1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); // Neste caso, quando removi 2700 a segunda transacção foi aberta logo após a primeira no mesmo bar, faz sentido. E mesmo quando coloquei qualquer valor até 600 em vez de 2700, o segundo negócio foi aberto no mesmo bar. Com um valor superior a 600, o segundo comércio nunca abriu. Não consigo compreender qual é o problema. Ficar-lhe-ia muito grato pela sua ajuda.
Os parâmetros Timer e TimerNull estão no formato de data/hora.
no seu exemplo não há enumeração de, por exemplo, posições
se ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==Falso)&&(Signal===1)))
por conseguinte, selecciona sempre a posição 0.
Tudo isto faz sentido. Fez uma indulgência para a eliminação normal.
Quando se fecha o terminal, será difícil. Não mais do que 3 segundos.
E não tenho a certeza se vamos escrever isto na documentação, 1. de modo a não nos entregarmos a escrever indicadores tão imprudentes (escreveu isto para verificar?) 2. À medida que o afrouxamos, apertemo-lo.
Por isso, aperte-o já, ou fixe a referência. Não ceder a ceder não é uma conversa séria. O que os programadores esperam de si não é "codificar", mas um software claro e bem documentado.
É claro que este código não tem outro objectivo que não seja uma demonstração, que você mesmo pediu. E é bastante inofensivo, inofensivo funcionaria se o Sono fosse removido e o Comentário substituído por Impressão. Não existe protecção contra o spamming de gigabytes de impressão no log in do Quarteto ou do Quarteto 5.
Aqui está o código:
se ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==Falso)&&(Signal===1)))Temporizador=Tempo[0];}
TimerNull=iBarShift(NULL,0,Timer,false);
se ((TimerNull>=n)&&(z===1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
Também tentei desta forma:
Temporizador=Tempo[0];}
TimerNull=Time[0];
if ((TimerNull>=(Timer+2700))&&(z==1)) //as um exemplo aqui coloquei 2700 segundos em vez de n, o que em testes significou 3 velas de 15 minutos) {int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
E assim também:
Temporizador=Tempo[0];}
TimerNull=Time[0];
if ((CurrentTime()>=(Timer+2700))&&(z===1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); // Neste caso, quando removi 2700 a segunda transacção foi aberta logo a seguir à primeira no mesmo bar, faz sentido. E mesmo quando coloquei qualquer valor até 600 em vez de 2700, o segundo negócio foi aberto no mesmo bar. Com um valor superior a 600, o segundo comércio nunca abriu. Não consigo compreender qual é o problema. Ficar-lhe-ia muito grato pela sua ajuda.
Os parâmetros Timer e TimerNull estão no formato de data/hora.
Esta é uma das implementações possíveis. Esta EA deve abrir uma ordem após o número especificado de barras. E aprender como inserir correctamente o código EA, o botão SRC na barra de mensagens.
111
A questão é provavelmente para os criadores do website ou para os administradores de serviços Freelance
---
Costumava ser: 568 empregos concluídos, 75% pessoais
Acrescentou 13 postos de trabalho (todos pessoais) e tornou-se: concluído 581, 75% pessoal
---
Portanto a questão: decifrar por favor, o que significa 75%?