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

 
edutak:

Извините, не очень понял. Цена закрытия свечи должна быть больше уровня 70 индикатора. 

А уровень 70=70. а чему он должен ровняться? 

Close[1] имеет отношение к цене инструмента. В данном случае цене закрытия на 1-ом баре. Но не к индикатору. Индикатор это производная от цены.

В вашем случае индикатор RSI колеблется от 0 до 100, а цена к примеру как на вашей картинке 1.43406. Что намного меньше 70-ти. 

Уровень 70 это значение индикатора. А Close[1] это значения цены закрытия на 1-ом баре. Это совсем разные вещи их нельзя сравнивать. Как к примеру килограммы с метрами. 

 
Vitalii Ananev:

Close[1] имеет отношение к цене инструмента. В данном случае цене закрытия на 1-ом баре. Но не к индикатору. Индикатор это производная от цены.

В вашем случае индикатор RSI колеблется от 0 до 100, а цена к примеру как на вашей картинке 1.43406. Что намного меньше 70-ти. 

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

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

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

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

}
 
Подскажите, пожалуйста, что делать если сделки автоматически копируются не с тем объемом лота, который позиционирует трейдер, а большими объемами?
Причина обращения: