Questions des débutants MQL5 MT5 MetaTrader 5 - page 543

 
edutak:

Je suis désolé, je ne comprends pas vraiment. Le prix de clôture de la bougie doit être supérieur au niveau 70 de l'indicateur.

Et le niveau 70=70. A quoi devrait-il être égal ?

Close[1] fait référence au prix de l'instrument. Dans ce cas, il s'agit du prix de clôture de la première barre. Mais pas à l'indicateur. L'indicateur est un dérivé du prix.

Dans votre cas, le RSI va de 0 à 100, alors que le prix est de 1,43406. Ce qui est bien en dessous de 70.

Le niveau de 70 est la valeur de l'indicateur. Et Close[1] est le prix de clôture de la 1ère barre. Ce sont des choses complètement différentes et ne peuvent être comparées. Comme les kilogrammes avec les mètres.

 
Vitalii Ananev:

Close[1] fait référence au prix de l'instrument. Dans ce cas, le prix de clôture de la première barre. Mais pas à l'indicateur. L'indicateur est un dérivé du prix.

Dans votre cas, le RSI va de 0 à 100, mais le prix est comme dans l'image 1.43406. Ce qui est bien en dessous de 70.

Je vois, merci, donc refait, semble l'avoir ouvert correctement, mais pourquoi l'indicateur de niveau 50 ne se reflète pas ?

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);
     }
 }
 

Est-ce correct ? Le conseiller fonctionnera-t-il correctement ?

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:

Je vois, merci, donc refait, semble l'avoir ouvert correctement, mais pourquoi l'indicateur de niveau 50 n'est pas reflété ?

Je ne vois pas ce que tu as, j'ai juste changé > en <. Ce que vous avez refait, c'est une absurdité totale. Ne pensez même pas à le mettre sur le réel.

Le niveau de 50 est fixé dans l'indicateur lui-même. Le conseiller expert sait où se trouve ce niveau dans l'indicateur.

 
edutak:

Est-ce correct ? Le conseiller fonctionnera-t-il correctement ?

C'est mieux. Vous devez également créer un filtre. Il n'ouvrirait des opérations d'achat que si la tendance est à la hausse et des opérations de vente que si la tendance est à la baisse.
 
Vitalii Ananev:

Je ne vois pas ce que tu as, j'ai juste changé > en <. Ce que vous avez refait est complètement absurde. Ne pense même pas à le mettre en vrai.

Le niveau 50 est défini dans l'indicateur lui-même. Le conseiller expert sait où se trouve ce niveau dans l'indicateur.

Ici, je pense l'avoir ouvert correctement, mais je ne vois pas le niveau 50, alors que 30 et 70 sont là.
 
Vitalii Ananev:
C'est mieux. Faites un autre filtre. Il n'ouvrirait des transactions d'achat qu'en cas de tendance à la hausse et des transactions de vente qu'en cas de tendance à la baisse.

Voici la tendance. N'est-ce pas ?

if (rsi>uroven70)

if (rsi<uroven30)
 
edutak:
Ici, je pense l'avoir ouvert correctement, mais je ne vois pas le niveau 50. Le 30 et le 70 sont là.
Le niveau doit être réglé manuellement dans les paramètres de l'indicateur. Par défaut, il n'y a pas de niveau 50. Je l'ai montré sur la photo ci-dessus.
 
edutak:

Voici la tendance. N'est-ce pas ?

Le RSI est un oscillateur, il ne montre pas de tendance.

Ajoutez un autre indicateur de tendance comme le MA.

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

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

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

}
 
Veuillez indiquer ce qu'il faut faire si les transactions ne sont pas automatiquement copiées avec la taille de lot que le trader a positionné, mais avec des volumes plus importants ?
Raison: