Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 543

[Удален]  

А так правильно? Советник будет корректно работать?

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:

Понятно, Спасибо, так переделал, вроде правильно открыл, а почему уровень 50 индикатора не отражается?

Не вижу, что вы меня поняли просто поменяли > на <. Что вы переделали, полный бред. Не думайте даже на реал ставить.

Уровень 50 настраивается в самом индикаторе. Советник и так знает где у индикатора этот уровень.

 

 
edutak:

А так правильно? Советник будет корректно работать?

Вот так уже лучше. Еще сделайте фильтр. Что бы открывал сделки на покупку только при наличии восходящего тренда, а на продажу только при наличии нисходящего.
[Удален]  
Vitalii Ananev:

Не вижу, что вы меня поняли просто поменяли > на <. Что вы переделали, полный бред. Не думайте даже на реал ставить.

Уровень 50 настраивается в самом индикаторе. Советник и так знает где у индикатора этот уровень.

 

Вот, вроде правильно открыл, но уровень 50 не видно. а 30 и 70 есть.
[Удален]  
Vitalii Ananev:
Вот так уже лучше. Еще сделайте фильтр. Что бы открывал сделки на покупку только при наличии восходящего тренда, а на продажу только при наличии нисходящего.

Вот по тренду. Правильно?

if (rsi>uroven70)

if (rsi<uroven30)
 
edutak:
Вот, вроде правильно открыл, но уровень 50 не видно. а 30 и 70 есть.
Уровень надо самому задать в настройках индикатора в ручную. По умолчанию уровня 50 нет. Я показывал на картинке выше.
 
edutak:

Вот по тренду. Правильно?

RSI это осциллятор он не показывает тренд.

Добавьте еще  какой нибудь трендовый индикатор например МА

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

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

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

}
 
Подскажите, пожалуйста, что делать если сделки автоматически копируются не с тем объемом лота, который позиционирует трейдер, а большими объемами?
[Удален]  
Vitalii Ananev:
Уровень надо самому задать в настройках индикатора в ручную. По умолчанию уровня 50 нет. Я показывал на картинке выше.

Так сделал, но не отражается. Наверно снова не понял(

extern double RSI          = 10;
extern double RSI_uroven_1 = 70;
extern double RSI_uroven_2 = 30;
extern double RSI_uroven_3 = 50;
extern double Lots         = 0.01;
extern int    Slip         = 30;
extern int    Magic        = 125;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
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) 
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if (rsi<uroven30) 
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
[Удален]  
Vitalii Ananev:

RSI это осциллятор он не показывает тренд.

Добавьте еще  какой нибудь трендовый индикатор например МА

Понимаю о чем вы говорите, но я пока без мувинга - запутаюсь. 

Для меня главное, логически и технически правильно составить алгоритм 

Буду просто открывать: ниже 30 - Селл, выше 70 - Бай.