Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 543

 
edutak:

Lamento, mas não compreendo bem. O preço de fecho da vela deve ser maior do que o nível 70 do indicador.

E nível 70=70. A que deve ser igual?

Close[1] refere-se ao preço do instrumento. Neste caso, é o preço de fecho na 1ª barra. Mas não para o indicador. O indicador é um derivado do preço.

No seu caso, o RSI varia de 0 a 100, enquanto o preço é 1,43406. Que está muito abaixo dos 70.

O nível de 70 é o valor do indicador. E Close[1] é o preço de fecho na 1ª barra. São coisas completamente diferentes e não podem ser comparadas. Como quilos com metros.

 
Vitalii Ananev:

Close[1] refere-se ao preço do instrumento. Neste caso, o preço de fecho na 1ª barra. Mas não para o indicador. O indicador é um derivado do preço.

No seu caso, o RSI varia de 0 a 100, mas o preço é como na imagem 1.43406. Que está muito abaixo dos 70.

Estou a ver, obrigado, tão refeito, parece tê-lo aberto correctamente, mas porque é que o indicador de nível 50 não é reflectido?

void OnTick()
  {
   int kolpos=0;
   double rsi=0,uroven70=70,uroven30=30,uroven50=50;
   rsi=iRSI(Symbol(),0,10,PRICE_CLOSE,1);
   for(int pos=0; pos<OrdersTotal(); pos++) 
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;
     }
   if(kolpos==0)
     {
      if((rsi>uroven70) &&   (Open[1]<uroven70) && Volume[0]<3)
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if((rsi<uroven30) &&   (Open[1]>uroven30) && Volume[0]<3)
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
 

Será isto correcto? O conselheiro irá trabalhar correctamente?

void OnTick()
  {
   int kolpos=0;
   double rsi=0,uroven70=70,uroven30=30,uroven50=50;
   rsi=iRSI(Symbol(),0,10,PRICE_CLOSE,1);
   for(int pos=0; pos<OrdersTotal(); pos++) 
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;
     }
   if(kolpos==0)
     {
      if (rsi>uroven70)// && Volume[0]<3)
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if (rsi<uroven30)// &&   (Open[1]>uroven30) && Volume[0]<3)
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
 
edutak:

Estou a ver, Obrigado, tão refeito, parece tê-lo aberto correctamente, mas porque é que o indicador de nível 50 não é reflectido?

Não vejo o que acabaste de me mudar > para <. O que você refez, um completo disparate. Nem sequer pense em colocá-lo no real.

O nível de 50 é fixado no próprio indicador. O Conselheiro Especialista sabe onde este nível está no indicador.

 
edutak:

Será isto correcto? O conselheiro irá trabalhar correctamente?

Assim é melhor. Deve também criar um filtro. Só abriria negócios de compra se houvesse uma tendência de alta e só venderia negócios se houvesse uma tendência de baixa.
 
Vitalii Ananev:

Não vejo o que acabaste de me mudar > para <. O que mudou é um completo disparate. Nem penses em pô-lo a sério.

O nível 50 é definido no próprio indicador. O Conselheiro Especialista sabe onde este nível está no indicador.

Aqui, penso que o abri correctamente, mas o nível 50 não é visível, enquanto que 30 e 70 são.
Arquivos anexados:
 
Vitalii Ananev:
Assim é melhor. Fazer outro filtro. Abriria comércios de compra apenas se houvesse uma tendência de subida e venderia comércios apenas se houvesse uma tendência de descida.

Aqui está a tendência. Certo?

if (rsi>uroven70)

if (rsi<uroven30)
 
edutak:
Aqui, acho que o abri correctamente, mas não consigo ver o nível 50. 30 e 70 estão lá.
O nível tem de ser definido manualmente nas definições do indicador. Por defeito, não há nível 50. Eu mostrei na fotografia acima.
 
edutak:

Aqui está a tendência. Certo?

O RSI é um oscilador, não mostra uma tendência.

Acrescentar outro indicador de tendência como o MA.

double MA = iMA(......)

if (rsi>uroven70 && Close[1]<MA)
{
 ///SELLL
 
}

if (rsi<uroven30 && Close[1]>MA)
{
///BUY

}
 
Por favor, informe o que fazer se as negociações não forem automaticamente copiadas com o tamanho do lote que o comerciante posicionou, mas com volumes maiores?