Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 543

 
edutak:

Mi dispiace, non capisco bene. Il prezzo di chiusura della candela deve essere maggiore del livello 70 dell'indicatore.

E il livello 70=70. A cosa dovrebbe corrispondere?

Close[1] si riferisce al prezzo dello strumento. In questo caso, è il prezzo di chiusura della prima barra. Ma non all'indicatore. L'indicatore è un derivato del prezzo.

Nel tuo caso, l'RSI va da 0 a 100, mentre il prezzo è 1,43406. Che è molto al di sotto di 70.

Il livello di 70 è il valore dell'indicatore. E Close[1] è il prezzo di chiusura della prima barra. Sono cose completamente diverse e non possono essere paragonate. Come i chilogrammi con i metri.

 
Vitalii Ananev:

Close[1] si riferisce al prezzo dello strumento. In questo caso il prezzo di chiusura della prima barra. Ma non all'indicatore. L'indicatore è un derivato del prezzo.

Nel tuo caso, l'RSI va da 0 a 100, ma il prezzo è come nell'immagine 1,43406. Che è molto al di sotto di 70.

Vedo, grazie, quindi rifatto, sembra averlo aperto correttamente, ma perché l'indicatore di livello 50 non si riflette?

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

È corretto? Il consulente funzionerà correttamente?

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:

Capisco, grazie, quindi rifatto, sembra averlo aperto correttamente, ma perché l'indicatore del livello 50 non si riflette?

Non vedo cosa mi hai preso, ho solo cambiato > in <. Quello che avete rifatto è una totale assurdità. Non pensate nemmeno di metterlo sul reale.

Il livello di 50 è impostato nell'indicatore stesso. L'Expert Advisor sa dove si trova questo livello nell'indicatore.

 
edutak:

È corretto? Il consulente funzionerà correttamente?

Così va meglio. Dovresti anche creare un filtro. Aprirebbe operazioni di acquisto solo se c'è una tendenza al rialzo e di vendita solo se c'è una tendenza al ribasso.
 
Vitalii Ananev:

Non vedo cosa mi hai preso, ho solo cambiato > in <. Quello che avete rifatto è una completa assurdità. Non pensare nemmeno a metterlo sul serio.

Il livello 50 è impostato nell'indicatore stesso. L'Expert Advisor sa dove si trova questo livello nell'indicatore.

Qui, penso di averlo aperto correttamente, ma non riesco a vedere il livello 50, mentre il 30 e il 70 ci sono.
 
Vitalii Ananev:
Così va meglio. Fare un altro filtro. Aprirebbe operazioni di acquisto solo se c'è una tendenza al rialzo e operazioni di vendita solo se c'è una tendenza al ribasso.

Ecco la tendenza. Giusto?

if (rsi>uroven70)

if (rsi<uroven30)
 
edutak:
Ecco, credo di averlo aperto correttamente, ma non vedo il livello 50. Il 30 e il 70 ci sono.
Il livello deve essere impostato manualmente nelle impostazioni dell'indicatore. Di default non c'è il livello 50. L'ho mostrato nella foto qui sopra.
 
edutak:

Ecco la tendenza. Giusto?

L'RSI è un oscillatore, non mostra una tendenza.

Aggiungete un altro indicatore di tendenza come il MA.

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

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

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

}
 
Cosa fare se le operazioni non vengono copiate automaticamente con la dimensione del lotto che il trader ha posizionato, ma con volumi maggiori?
Motivazione: