проблема при написании советника.

 

Ув. друзья, решил я значит попробовать написать  свой простенький советник и тут же столкнулся с такой проблемой. Этот советник компилируется без проблем, но не хочет торговать, при прогонке в тесте тоже безрезультатно. В чём проблема?


void CheckForOpen()
  { double r0, r1, b0, b1;
    int ticket;
    
  
    r0=iMA(NULL,5,5,0,MODE_SMMA,PRICE_CLOSE,0);
    r1=iMA(NULL,5,5,0,MODE_SMMA,PRICE_c,1);
    b0=iMA(NULL,5,2,0,MODE_SMMA,PRICE_CLOSE,0);
    b1=iMA(NULL,5,2,0,MODE_SMMA,PRICE_CLOSE,1);
    
    if(r0==b0 && r0<r1 && b0>b1)
      {ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,Ask+20*Point);
       return;
      }
      
    if(r0==b0 && r0>r1 && b0<b1)
      {ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,Bid-20*Point);
       return;
      }

     }



//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
     CheckForOpen();
 
 
   return(0);
  }
 
leone9:

Ув. друзья, решил я значит попробовать написать  свой простенький советник и тут же столкнулся с такой проблемой. Этот советник компилируется без проблем, но не хочет торговать, при прогонке в тесте тоже безрезультатно. В чём проблема?

Ув.друг! А что Вы сделали, чтобы самому разобраться, или по-крайней мере получить ожидаемое (факт торговой активности написанного)?

Самый простой способ познания "метод тыка" - предлагаю начать с удаления условия (r==b).

P.S. Про почитать учебник или поискать по форуму по фразе "пересечение МА" или "сравнение чисел" я молчу...

 
leone9:

Ув. друзья, решил я значит попробовать написать  свой простенький советник и тут же столкнулся с такой проблемой. Этот советник компилируется без проблем, но не хочет торговать, при прогонке в тесте тоже безрезультатно. В чём проблема?



Я бы ifы сделал так:

   double Erunda=3*Point;// приблизительно 3 для четырехзнака, 30 - для пятизнака
   if(MathAbs(r0-b0)<=Erunda && (r1-r0)<Erunda && (b0-b1)<Erunda) // первый if
 
TarasBY:

Ув.друг! А что Вы сделали, чтобы самому разобраться, или по-крайней мере получить ожидаемое (факт торговой активности написанного)?

Самый простой способ познания "метод тыка" - предлагаю начать с удаления условия (r==b).

P.S. Про почитать учебник или поискать по форуму по фразе "пересечение МА" или "сравнение чисел" я молчу...


Ув. Тарас! Спасибо вам за ваш отзыв. Правильно делаете, что молчите об учебниках - определение пересечения линий МА мной взято из учебника, скачанного с этого сайта. А топ на форуме создал именно потому, что чего-то не понимаю или не вижу и нуждаюсь во взгляде со стороны. Надеюсь на ещё, более конструктивные, отзывы.
Sepulca:


Я бы ifы сделал так:

 


если я правильно понял, вы предлагаете вместо точного совпадения значений использовать погрешность? думаете, проблема в этом?



 
leone9:

Ув. Тарас! Спасибо вам за ваш отзыв. Правильно делаете, что молчите об учебниках - определение пересечения линий МА мной взято из учебника, скачанного с этого сайта. А топ на форуме создал именно потому, что чего-то не понимаю или не вижу и нуждаюсь во взгляде со стороны. Надеюсь на ещё, более конструктивные, отзывы.

если я правильно понял, вы предлагаете вместо точного совпадения значений использовать погрешность? думаете, проблема в этом?

Добавьте = после > и <, а только == никогда не выполнится! Прислушивайтесь к советам опытных! Это реальность, а не погрешность!
 
leone9:

Ув. друзья, решил я значит попробовать написать  свой простенький советник и тут же столкнулся с такой проблемой. Этот советник компилируется без проблем, но не хочет торговать, при прогонке в тесте тоже безрезультатно. В чём проблема?



Посмотрите здесь
 
Спасибо всем участникам, проблема решена.
Причина обращения: