Inserir o texto no OnCalculate do indicador padrão criado no redactor. Coloque-o em qualquer gráfico. Verá o funcionamento do indicador no canto superior esquerdo da janela do gráfico. Após seleccionar "Eliminar" da lista de indicadores, não deixará de funcionar, vê-lo-á no canto superior esquerdo. Continuará mesmo depois de a janela estar fechada. Depois de abrir uma nova janela, ela continuará na nova janela. Esta janela não tem necessariamente o mesmo símbolo que a que tinha no início :)
O trabalho do indicador só pára quando o terminal está fechado. E não sei se pára ou não - só tive de remover manualmente o terminal através do Gestor de Tarefas para o reiniciar...
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.
Olá. Não consigo escrever um código que abra uma posição em n-números debarras depois de a posição anterior ter sido aberta. Tentei usar Time[i], iBarShift, iTime. Não tive sorte com tudo isto. Sou principiante em programação. A pesquisa não rendeu nada.
Dmitri Custurov: Здравствуйте. Не получается написать код, который открывал бы позицию через n-количество баров после открытия предыдущей позиции. Пробовал использовать Time[i], iBarShift, iTime. Все безуспешно. В программировании новичок. Поиск ничего не дал.
Saudações, para que possa obter ajuda para encontrar o erro - precisa de anexar pelo menos o código. Ninguém aqui escreverá por si - é costume aqui ajudá-lo a encontrar o erro e a corrigi-lo com conselhos. Ou - contactar um freelancer.
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:
se ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==Falso)&&(Signal===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.
Ainda estou a escrever um rascunho para que a lógica básica funcione. Depois disso, vou aperfeiçoá-lo. Neste caso, posso estar errado, o problema está na segunda parte do código.
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.
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:
se ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==Falso)&&(Signal===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.
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%?