Перебор баров под условие

 

Всем привет, у меня достаточно простой вопрос. Я хочу чтобы алгоритм перебирал предидущие значения рсх по каждому бару и открывал сделку по выполнению этого условия. Вот кусок кода:

{
   double rsx[20];
   for (int i=0; i<=iBAR; i++)
   {
      rsx[i]=iCustom(NULL,0,"rsxsimple",Length,Price,levelOs,levelOb,3,i);
   }
   {
      if (rsx[0]>SellLevel)
      SellSignal=1;
      printf(rsx[0]);
         {
         for(int n=0; n<=iBAR;n++)
            {
            if(OrderSell<1 && SellSignal==1 && rsx[n]<rsx[n+1])
               OPSELL();
               SellSignal=0;
            }
         }
      if (rsx[0]<BuyLevel)
      BuySignal=1;
         {
         for(int m=0; m<=iBAR;m++)
         {
            if(OrderBuy<1 && BuySignal==1 && rsx[m]>rsx[m+1]) 
               OPBUY();
               BuySignal=0;
         }
       }   

Советник ведёт себя очень странно. В чём может быть проблема. Правильно ли записан алгоритм идеи?

 
Так ведь и алгоритм странный. Неудивительно.
 
Dmitry Fedoseev:
Так ведь и алгоритм странный. Неудивительно.

Смысл такой. Если попадаем в зону выше SellLevel, ждём когда рсх начнёт снижаться, и проверяем разницу между барами. На данный момент сделка открывается сразу как только текущее значение рсх становится меньше или больше предидущего. Что не так с кодом?

 
Igor Polushkin:

Смысл такой. Если попадаем в зону выше SellLevel, ждём когда рсх начнёт снижаться, и проверяем разницу между барами. На данный момент сделка открывается сразу как только текущее значение рсх становится меньше или больше предидущего. Что не так с кодом?

Проверяем разницу между барами и что? Как проверяем, между какими барами? 

 
Igor Polushkin:

Всем привет, у меня достаточно простой вопрос. Я хочу чтобы алгоритм перебирал предидущие значения рсх по каждому бару и открывал сделку по выполнению этого условия. Вот кусок кода:

Советник ведёт себя очень странно. В чём может быть проблема. Правильно ли записан алгоритм идеи?

   for (int i=0; i<=iBAR; i++)
   {
      rsx[i]=iCustom(NULL,0,"rsxsimple",Length,Price,levelOs,levelOb,3,i);
   }
   {

эти две скобки нужны?

 

Может так?

if(rsx[1]<rsx[2] && rsx[2]>SellLevel)OPSELL();
 
Dmitry Fedoseev:

Проверяем разницу между барами и что? Как проверяем, между какими барами? 

Изначально проверял разницу между текущим баром и предидущим. Хотел сделать так, чтобы брал разницу между 0 и 1, 1 и 2 и т.д. и проверял чтобы значение рсх падало. Я понимаю что вопрос элементарный, но и я не претендую на звание программиста, поэтому и обратился с вопросом.

 
Dmitry Fedoseev:

Может так?

А как допустим сделать дополнительно rsx[3] < rsx [4] и т.д.? Чтобы это задавалось через цикл for? 

Наверное так правильнее, как Вы написали, т.к. продажа совершается в любом случае, если мы находимся выше уровня продаж. Спасибо за подсказку.

 
Igor Polushkin:

Изначально проверял разницу между текущим баром и предидущим. Хотел сделать так, чтобы брал разницу между 0 и 1, 1 и 2 и т.д. и проверял чтобы значение рсх падало. Я понимаю что вопрос элементарный, но и я не претендую на звание программиста, поэтому и обратился с вопросом.

Вам могут помочь, только не забывайте просить исходники:

https://www.mql5.com/ru/job

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
Существующий советник нужно исправить и дополнить. Я не программист, поэтому на вопросы: по какому индикатору открывать, на какой свече закрывать и т.д. мне не задавайте. Я написал, что мне нужно, а как это сделать это уже работа программиста. Обязательное условие: быть на связи в скайпе или телеграмме. ТЗ прилагаю Добрый день! Нужен скрипт...
 
Renat Akhtyamov:

   for (int i=0; i<=iBAR; i++)
   {
      rsx[i]=iCustom(NULL,0,"rsxsimple",Length,Price,levelOs,levelOb,3,i);
   }
   {

эти две скобки нужны?

Это случайно, код компилируется.

 
Renat Akhtyamov:

Вам могут помочь:

https://www.mql5.com/ru/job

Нет, так неинтересно :)

Причина обращения: