Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 100

 
trader781:

Não entendo onde colocá-lo e porque não (-1)

há um parâmetro de entrada bool

nulo OnTick

{análise da abertura do pedido, parada de retaguarda}

Parada de trilha vazia

{corresponde a condições de fechamento

se sim, cobrimos tudo o que existe

}

Na verdade, retornar; é um vazio

Eu não sei que lógica você tem aí. Como você espera que eu adivinhe o que você tem aí?
 
trader781:

por três pontos

1 ponto externo onde definimos se queremos abrir o segundo ou mais pedidos

2) uma condição em que temos que abrir a primeira encomenda

3) fechar ponto de ordem

Posso enviar-lhe o código, mas é o mesmo para todos

Então, por que você deita o fio se não precisa de ajuda?

Você não encontrará mensagens úteis em mil páginas inúteis

P.S. Ou seu objetivo é encher ao máximo seus postos?
 
trader781:
Em seguida, peço um diagrama do interruptor nestes três pontos. Então eu apagarei meus postos se você considerar isso uma bobagem.

Qual é este ponto?

1 ponto externo onde definimos se queremos abrir o segundo ou mais pedidos

2) uma condição em que temos que abrir a primeira encomenda

3) fechamento do ponto de ordem

Você sabe ao menos o que quer?

Você não pode estabelecer uma ordem no ponto 2, não pode fechá-la, e ela só pode ser apagada. Em geral, tudo o que você tem é de alguma forma logicamente incoerente e vago, você precisa ser um deputado.

 

Há esta parte do código:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Pergunta:Período() retorna um valor são até M30, de H1 um conjunto de dígitos, e o marcador não pode mais ser deslocado desta forma.

Como mudar por N - candelabros independentemente do período? Eu não tenho que escrever uma função separada, tenho?

 
Vitaly Muzichenko:

Há esta parte do código:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Pergunta:Período() retorna um valor são até M30, de H1 um conjunto de dígitos, e não é mais possível compensar a marca desta forma.

Como mudar por N - candelabros independentemente do período? Eu não tenho que escrever uma função separada, tenho?

PeriodSeconds(PERIOD_CURRENT)*3
 
Artyom Trishkin:
PeriodSeconds(PERIOD_CURRENT)*3

Obrigado!

A questão é: quão correto é este registro, ele está no início do programa, enquanto que em todo o programa muito Tempo[0] e Tempo[1] são usados, e não devem ser chamados todas as vezes, ele está escrito em uma variável. Parece não haver erros fora da matriz, mas tudo está definido superficialmente:

datetime TM[], TIME0, TIME1;

//------------
void OnTimer()

ArraySetAsSeries(TM, true);
  if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, TM)==-1) return;
   TIME0 = TM[0];
   TIME1 = TM[1];

Obrigado!

 
Vitaly Muzichenko:

Qual é este ponto?

1 ponto externo onde definimos se queremos abrir o segundo ou mais pedidos

2) uma condição em que temos que abrir a primeira encomenda

3) fechamento do ponto de ordem

Você sabe ao menos o que quer?

Você não pode estabelecer uma ordem no ponto 2, não pode fechá-la, e ela só pode ser apagada. Em geral, você é sempre, de alguma forma lógica, incoerente e vago, você precisa ser um deputado.

por favor. Aqui está o parâmetro de bool externo OpenOrders=false;//+---open order

Preciso dele para abrir pedidos, fechá-los e depois ficar na tabela sem consumir recursos

no momento em que é auto-serrado (funciona, mas inaceitável para um elemento do painel)

Arquivos anexados:
 
trader781:

por favor. Aqui está o parâmetro de bool externo OpenOrders=false;//+---open order

Eu preciso dele para abrir um pedido, fechá-lo e depois ficar pendurado na tabela sem comer recursos

no momento em que é auto-serrado (funciona, mas inaceitável para um elemento do painel)

Eu o teria feito. Acrescentar "Deficiente" ao código

P.S. Substitua a linha 72 por "se(! Deficiente) retorno;". Eu acho que a lógica da bandeira é clara.
Arquivos anexados:
 
Vitaly Muzichenko:

Eu faria o seguinte. Acrescentar "Deficiente" ao código.

P.S. Substitua a linha 72 por "se(! Deficiente) retorno;". Eu acho que a lógica da bandeira é clara.

Não, não está claro. Voltando para o lugar de onde viemos.

1) Deficiente=verdadeiro

inicializar-se ao verdadeiro inite

passar para ontik if(!Disabled) return;

abrir fechar

Deficiente=falso; saída. Tudo está bem.

2) Deficiente=falso

inicializar ontik a verdadeiro

passar ao ôntico se(!Deficiente) retornar;

abrir fechar

Deficiente=falso; saída. Onde devo abrir o próximo pedido? Algumas variantes deveriam permitir isso.

Agora você entende porque eu lhe pedi para descrever a lógica?

Eu também tenho a opção de 2 EAs.

 
trader781:

Não, eu não entendo. De volta ao lugar de onde viemos.

1) Deficiente=verdadeiro

Inicializar-se no inite para true

passar para ontik if(!Disabled) return;

abrir fechar

Deficiente=falso; saída. Tudo está bem.

2) Deficiente=falso

inicializar ontik a verdadeiro

passar ao ôntico se(!Deficiente) retornar;

abrir fechar

Deficiente=falso; saída. Onde devo abrir o próximo pedido? Algumas variantes deveriam permitir isso.

Agora você entende porque eu lhe pedi para descrever a lógica?

Eu também tenho a opção de 2 EAs.

Não está claro. Se você precisar parar a EA, então a variante sugerida lida com isso, se não houver necessidade de pará-la, então deixe-a negociar e não a limite de forma alguma. Se você quiser negociar sob demanda após a parada, é suficiente trocar o tempo, Deficiente se tornará realidade e o programa continuará a funcionar