[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 398

 
solnce600:

Acho que fiz tudo certo .... Ainda não abre (no testador)

Também não há informações de erro no diário de bordo http://clip2net.com/s/5aLodh

Eu não consigo entender - o que está acontecendo?

Precisamos normalizar o preço.

double Price=NormalizeDouble(0.9022, Digits);
 
PapaYozh:

Precisamos normalizar o preço.

Papai! Muito obrigado..... e mais uma pequena pergunta....

Quero abrir um pedido somente se

1. A distância entre o preço de abertura da vela N 30 e o máximo da vela N 1 é superior a 150 p.


2. O tempo de abertura de uma velaN 30 é igual a - QUALQUER HORA, QUALQUER DATA, mas o valor dos minutos deve ser igual a 15 ( ou seja,0:15;1:15;.... 23:15)

if ((Alto[1]-Abrir[30])> 1500*Point) && (??????????????????)

// pedido aberto

Eu queria criar a segunda condição usando a função Tempo [30], mas esta função retorna valores não apenas em minutos, mas também em horas, dias e anos.

para a vela que eu preciso. A função Minuto( ) também não me serve, pois retorna o valor de minutos somente para o castiçal zero.

Por favor, informe qual a melhor maneira de codificar este ponto.



 
solnce600:

Papai! Muito obrigado..... e mais uma pequena pergunta....

Quero abrir um pedido somente se

1. A distância entre o preço de abertura da vela N 30 e o máximo da vela N 1 é superior a 150 p.


2. O tempo de abertura de uma vela N 30 é igual a - QUALQUER HORA, QUALQUER DATA, mas o valor dos minutos DEVE ser igual a 15 (ou seja,0:15;1:15;.... 23:15)

if ((Alto[1]-Abrir[30])> 1500*Point) && (??????????????????)

// pedido aberto

Eu queria criar a segunda condição usando a função Tempo [30], mas esta função retorna valores não apenas em minutos, mas também em horas, dias e anos.

para a vela que eu preciso. A função Minuto( ) também não me serve, pois retorna o valor de minutos somente para vela zero.

Por favor, informe como codificá-lo melhor.

https://docs.mql4.com/ru/dateandtime/TimeMinute

 
PapaYozh:

Precisamos normalizar o preço.

Normalizado. Ainda não abre...

Embora o outro código abra sem normalização....

int start()
 {
 double Price=NormalizeDouble(0.9022, Digits); 
 if  ((iTime( NULL,0, 0) )== D'14.08.2000 14 00')
 if (Bid == Price)
if(NormalizeDouble (MathAbs (Bid - Price ), Digits) <= 0.0005)  
 int Ticket= OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1490*Point,Ask-110*Point,"jfh",123 );
}
return(0);
 
 
solnce600:

Normalizado. Ainda não abre...

Embora outro código abra sem normalização....

Use Print() e veja qual condição falha.
 
Boa tarde a todos. Por favor, dê uma olhada neste indicador. Será mesmo possível fazê-lo funcionar corretamente?
Quando o preço desce, já existe uma linha azul além da vermelha (as vermelhas são adicionadas, ver anexos). Depois uma mudança de tendência, e aqui tudo está correto - apenas azul.

obrigado de antemão


/* Descompilado excluído /*


 
solnce600:

Papai! Muito obrigado..... e mais uma pequena pergunta....

Quero abrir um pedido somente se

1. A distância entre o preço de abertura da vela N 30 e o máximo da vela N 1 é superior a 150 p.


2. O tempo de abertura de uma vela N 30 é igual a - QUALQUER HORA, QUALQUER DATA, mas o valor de MINUTOS DEVE ser 15 (ou seja,0:15;1:15;.... 23:15)

if ((Alto[1]-Abrir[30])> 1500*Point) && (??????????????????)

// pedido aberto

Eu queria criar a segunda condição usando a função Tempo [30], mas esta função retorna valores não apenas em minutos, mas também em horas, dias e anos.

para a vela que eu preciso. Função Minuto( ) também não me serve, pois retorna o valor de minutos somente para vela zero.

Por favor, diga-me a melhor maneira de codificar este ponto.

Para fixar (incluir nos cálculos) o tempo desde o início (de QUALQUER vela), é conveniente usar iBarShift (Símbolo(), 1, ponto de oscilação). E o ponto de conciliação é o início da barra do período que está sendo rastreado. No seu caso:

    if (iBarShift (Symbol(), 1, iOpen (Symbol(), PERIOD_M30, 0)) == 15) //что-то делаем

Tendo dado uma olhada em uma parte de seu código, posso dizer que você não pensa nada sobre o que está escrevendo. Tente pensar sobre isso (trecho):

if((Minute( ) ==45)&&(Minute( ) <50))

...

 
TarasBY:


Tendo vislumbrado um pedaço de seu código, posso dizer que você não pensa no que está escrevendo. Tente pensar sobre isso (fragmento):

...


Obrigado por sua resposta. Desculpe por enviar seu código sem comentários.

O que você acha que não faz sentido faz sentido, e funciona

if(Bid==Preço) // se o tempo for igual ao tempo de abertura da vela.é formado um novo castiçal

if((Minute( ) ==45)&&(Minute( ) <50)) // se o valor minuto na abertura de uma vela nova estiver entre 45 e 50(a coisa é, algumas velas abrem-se aos 45 minutos, e não exatamente aos 45 minutos. Por isso uso &&(Minuto( ) <50) para evitar a falta de castiçais que abrem aos 45 min. mas abrem 1,2,3,4 min. depois)

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point, "jfh",123 );

}

retornar;

Assim, o pedido abre no início de cada vela de 15 ou 5 ou 1 minuto, que tecnicamente se abre aos 45 minutos (+ não mais que 4 minutos, ou seja, com um atraso).
 
solnce600:

Estou tentando fazer você entender um pequeno ponto. Um ponto muito IMPORTANTE: "o que você queria prescrever" e "o que você prescreveu" são coisas completamente DIFERENTES! Se estiver no estado:

if((Minute( ) ==45)&&(Minute( ) <50))

Minuto() == 46, então a condição GERAL NÃO TRABALHA!!! Que tal isso?

if ((Minute() >= 45) && (Minute() < 50))

??? :-[