[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 411

 
kolyango:

Como fazer:

se a Condição1 for cumprida, então não a verifique mais a cada tique-taque, e no próximo tique-taque verifique também a Condição2 e depois a Condição3 também até que declaremos todas as bandeiras falsas?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

leia o código várias vezes até ficar claro o que está escrito, e você ficará feliz.

 
costy_:

ele lê os dados da barra que já estabeleceu (anterior) i+1 remover. Mas o algoritmo do criador será quebrado (ele sabe melhor, eu também trabalho com dados abertos e gerados +1)


Como diz o criador, i+1 é apenas para alimentar dados de outro indicador, então a condição de desagregação é verificada, mas todos os cálculos adicionais são feitos em i.

O problema é que o indicador não é atualizado automaticamente, apenas com recarga (mudança de TF, mudança de propriedades).

Eu não entendo qual é a razão.

Tentei usar apenas i, empurrando o cálculo de dados do indicador requerido na barra anterior, no final do ciclo, mas isso não ajudou.

 
costy_:

Ainda não entendi.

É provavelmente mais fácil de explicar em uma foto.


Sim, obrigado! Onde você a tem destacada em azul, você precisa encontrar a vela que fechou acima do alto em D1.
 
costy_:

Leia o código várias vezes até que fique claro o que está escrito, e você ficará feliz.


Mais uma vez, obrigado!
 
LOA:


Como criador, digo que i+1 é apenas para alimentar dados de outro indicador, então ele verifica a condição de desagregação, mas todos os cálculos posteriores sobre i.

O problema é que o indicador não se atualiza automaticamente, apenas com recarga (mudança de TF, exibição de propriedades).

Eu não entendo a razão.

Tentei usar apenas i, empurrando o cálculo dos dados do indicador requerido na barra anterior, para o final do ciclo, mas não ajudou.

você tem

           int  proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 

Suspeito que deveria ser assim.

           double proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 
 
costy_:

Você tem

Suspeito que deveria ser assim.


no.... Não tomamos o valor do preço, mas a leitura do indicador (histograma), cujo valor pode ser 1 ou -1.
 
costy_:

Leia o código várias vezes até que fique claro o que está escrito, e você ficará feliz.


Como você reescreve as condições de tal código, eu não o entendo?

static bool Val_max, Cl_dn, Val_min; //static or global
                                        |
//+------------------------------------------------------------------+
int start()
  {
   int j;
   double bid;                                         
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1=Open[1];
double Close_1=Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "Название Польз. Индикатора",0,0);   // Присваиваем пер. Val значение польз. индикатора
if (Условие1)
{
 Val_max=true;                  // 
 Alert("Значение инд. >= Value_max (исп. 1-е усл.)");
}
if (Условие2)
{
 Cl_dn=true;
 Alert("1 бар закрылся падением (исп. 2-е усл.)");
}
if (Условие3 && Cl_dn==true)
{
 Val_min=true;
 Alert("Значение инд. <= Value_min (исп. 3-е усл.)");
}
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }
   
   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 
LOA:

no.... Não tomamos o valor do preço, mas o indicador (histograma), que pode ter um valor de 1 ou -1.

Eu ainda não posso responder, onde estão os inds invocados que eles retornam int duplo, eles podem realmente ser >1 para que int é atribuído >0 e vice versa (pelo menos *.ex4)?

ME_Proboy_F5_For_EX

ME_Ordem_ATR_For_EX

2011.12.07 18:10:42 Não é possível abrir o arquivo \\\ME_Proboy_F5_For_EX.ex4' no AUDUSD,M30

Substituindo tudo por MACD, tudo funciona!

Arquivos anexados:
temp_1.mq4  14 kb
 
kolyango:


Como reescrevo as condições de tal código, não o entendo?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

Leia o código várias vezes até que fique claro o que está escrito, e você ficará feliz.

Por que você precisa de bandeiras?) Você pode passar sem elas.

   if(Close[i+3]>Open[i+3]&&Close[i+2]>Open[i+3]&&Close[i+2]<Close[i+3]&&Close[i]>Close[i+3]) //открываем бай

 
costy_:

Eu ainda não posso responder, onde estão os inds invocados que eles retornam int duplo, eles podem realmente ser >1 para que int é atribuído >0 e vice versa (pelo menos *.ex4)?

ME_Proboy_F5_For_EX

ME_Ordem_ATR_For_EX

2011.12.07 18:10:42 Não é possível abrir o arquivo \\\ME_Proboy_F5_For_EX.ex4' no AUDUSD,M30

Substituiu tudo pelo MACD, tudo funciona!


Sim, o indicador no histórico funciona com qualquer indicador acionado. Não funciona na vida real, verificado no M1.

Se entendi bem, tentarei substituir nas condições >0, <0 por ==1 ou ==-1.