[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 189

 

Necessidade de conhecer o menor e o maior fractal para os últimos n bares, o que há de errado aqui? Por favor, ajude!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }

 
solnce600:

Decidi tomar o que pensava ser um caminho mais simples.

Não para apagar a ordem pendente - mas para colocar uma ordem pendente somente se uma vela de cinco minutos não tiver terminado

Ou seja, o pedido pendente deve ser feito somente quando duas condições forem cumpridas. Se a primeira condição for cumprida

- Eu verifiquei, o pedido está pronto.

É claro que é porque esta condição é SEMPRE verdadeira, simplesmente não pode ser falsa. Simplesmente não pode ser falso, pois significa que a barra zero existe de forma alguma.

Como devemos definir a segunda condição, ou seja, a ordem pendente é definida apenas se não tiverem decorrido 5 minutos. se (---------- && ?????????)

Por favor, indique claramente a condição em palavras. Ainda não está claro se você quer colocar a ordem pendente no início de um novo castiçal ou o quê?
 
belozad:

Necessidade de conhecer o menor e o maior fractal para os últimos n bares, o que há de errado aqui? Por favor, ajude!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }



como é declarada a variável i, podemos dar uma olhada?
 
alsu:

a variável i como declarada, posso dar uma olhada?


int ii;

double i;

 
belozad:


Deveria funcionar desta forma:

   int ii;
   double i;
   double StopLos_L,StopLos_H;

   for (ii = 0; ii <= n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L || ii==0) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H || ii==0) StopLos_H = i;
      } 
 
alsu:

Deveria funcionar desta forma:


Raios, é óbvio.
ii <=n


alsu - muito, muito obrigado =)

 
artmedia70:
Você pode

Você pode me dizer se é possível pintar o corpo de uma vela desejada em um EA?
Onde posso ver como fazer isso, eu realmente preciso disso.
 
beginner:
Você pode me dizer se é possível pintar o corpo da vela desejada na EA?
Onde posso ver como fazer isso, eu realmente preciso disso.

https://www.mql5.com/ru/code/7835 Somente ele é um indicador. Você tem que usar objetos no EA
 
alsu:

Claro que é, porque esta condição é SEMPRE verdadeira, simplesmente não pode ser falsa. Como isso significa que a barra zero existe de forma alguma.

Por favor, indique claramente a condição em palavras. Ainda não está claro, você quer colocar o pedido pendente no início de um novo castiçal ou o quê?

Desculpe, estou um pouco confuso. Neste caso eu não deveria colocar uma ordem pendente, mas uma ordem de mercado na Open[0]+30 pips.

Mas só devemos estabelecer a ordem do mercado desde o início da formação de uma vela zero até a próxima seguinte.

Isto é, não estabelecer uma ordem de mercado dentro de 5 minutos, de acordo com minha idéia, é equivalente ao cancelamento de uma ordem pendente se ela não for aberta dentro de 5 minutos.

Como devo escrever a segunda condição?

E eu defini corretamente o preço de abertura da ordem de mercado?

Obrigado.

 int start()

  {
 double Price=Open[0]+300*Point;        
 double SL=Price-300*Point;     
 double TP=Price+150*Point;
 if (Time[0]&& ???????)                         
 int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP );
 
solnce600:

Desculpe, estou um pouco confuso. Neste caso eu não deveria estabelecer uma ordem pendente, mas uma ordem de mercado em Open[0]+30 pips.

Mas só devemos estabelecer a ordem do mercado desde o início de uma vela zero até a próxima seguinte.

Isto é, não estabelecer uma ordem de mercado dentro de 5 minutos, de acordo com minha idéia, é equivalente ao cancelamento de uma ordem pendente se ela não for aberta dentro de 5 minutos.

Como devo escrever a segunda condição?

E eu defini corretamente o preço de abertura da ordem de mercado?

Obrigado.


Pronto, já o tenho. Se o preço da barra atual atingir Open[0] + 30, nós abrimos. Se a barra terminou, Open[0] mudou e o nível de abertura é deslocado de acordo. Deve haver apenas um comércio no mercado, certo?

Então é assim:

int start()

{

 double Price=Open[0]+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 if (OrdesTotal()==0 && Close[0]>=Price)                         
    int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}

Não há necessidade de rastrear a nova barra, pois quando ela for formada, o sistema automaticamente adicionará um novo valor ao Open[0] e isto significa que o novo nível será calculado corretamente. Favor observar que o negócio de COMPRA é aberto ao preço Ask atual, enquanto é fechado (TP e SL) ao preço Bid. Além disso, os valores dos preços devem ser normalizados.