Помоги-и-и-те!!!

 

Я начинающий программист на MQL4/

Прошу по силе и возможности помочь мне разобраться в нюансах синтаксиса MQL4 или увидеть ошибку в написании определенного эксперта. Дело в том, что приклепленный к данному сообщению разрабатываемый мною эксперт точно по алгоритау выполнят действия 1, 2 и 3, а вот действия 4 и 5 не выполняет. Уже целую неделю потратил на проработку различного рода комбинации с кодом, прочитал уйму литературы, а так и не смог добиться, чтобы функции и операторы в пп. 4 и 5 заработали. Прошу помочь не потерять надежду на успех, а то "чайник" уже "кипит", а результата нет, просто руки опускаются от безисходности. Заранее премного благодарен!!!!

//+------------------------------------------------------------------+
//|                                                        Robot.mq4 |
//+------------------------------------------------------------------+

//-------------------------------------------------------------------+
extern double StopLoss   =17;     //SL ордера
extern double TakeProfit =15;     //TP ордера
extern double Lots        =0.01;     //стоимость ордера
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()                                                                                                                   //Открытие функции int start() 
  {
  int total=OrdersTotal();                                                                                                    //Определение переменной количества открытых ордеров
  if(total<1)                                                                                                                 //Условие: отсутствуют отложенные и открытые ордера
  {
   int order1=OrderSend(Symbol(), OP_SELLLIMIT, Lots, Ask+10*Point,3, Ask+(StopLoss+10)*Point, Ask-(TakeProfit-10)*Point);    //Открытие ордера order1: SELLLIMIT

   int order2=OrderSend(Symbol(), OP_BUYLIMIT, Lots, Ask-10*Point,3, Ask-(StopLoss+10)*Point, Ask+(TakeProfit-10)*Point);     //Открытие ордера order2: BUYLIMIT


//-------------------------------------------------------------------  1
  
   OrderSelect(order1, SELECT_BY_TICKET, MODE_TRADES);                                                                        //вызывается ордер1
   double cena1=OrderOpenPrice();                                                                                             //Определяется цена открытия ордера1
   int order3=OrderSend(Symbol(), OP_BUYSTOP, Lots, cena1+5*Point,3, cena1+(5-StopLoss)*Point, cena1+(5+TakeProfit)*Point);   //Открытие ордера order3: BUYSTOP

  
//-------------------------------------------------------------------  2
  
   OrderSelect(order2, SELECT_BY_TICKET, MODE_TRADES);                                                                         //Вызывается ордер2
   double cena2=OrderOpenPrice();                                                                                              //Определяется цена открытия ордера2
   int order4=OrderSend(Symbol(), OP_SELLSTOP, Lots, cena2-5*Point,3, cena2+(StopLoss-5)*Point, cena2-(TakeProfit+5)*Point);   //Открытие ордера order4: SELLSTOP


  return(0);                                                                                                                   //Прекращение исполнения 1-ой функции
  }
//-------------------------------------------------------------------  3
  
  OrderSelect(order2, SELECT_BY_TICKET, MODE_TRADES);                                                                          //Вызывается ордер2
  double cena3=OrderOpenPrice();                                                                                               //Определяется цена открытия ордера2
  if(Ask<cena3+5*Point)                                                                                                        //Условие: Ask меньше чем цена открытия ордера2 плюс 5 пунктов
  {
   OrderModify(order1, cena3+TakeProfit*Point, cena3+(TakeProfit+StopLoss)*Point, cena3, 0);                                   //Модификация ордера1 относительно цены открытия ордера2
  
  return(0);                                                                                                                   //Прекращение исполнения 2-ой функции
  }
//-------------------------------------------------------------------  4
  
   OrderSelect(order1, SELECT_BY_TICKET, MODE_TRADES);                                                                         //Вызывается ордер1
   double cena4=OrderOpenPrice();                                                                                              //Определяется цена открытия ордера1
   if(Ask>cena4-5*Point)                                                                                                       //Условие: Ask ,больше чем цена открытия ордера1 минус 5 пунктов
  {
   OrderModify(order2, cena4-TakeProfit*Point, cena4-(TakeProfit+StopLoss)*Point, cena4, 0);                                   //Модификация ордера2 относительно цены открытия ордера1

  return(0);                                                                                                                   //Прекращение исполнения 3-ей функции
  }
//-------------------------------------------------------------------  5
  return(0);                                                                                                                   //Закрытие функции int start()
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  { return(0); }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  { return(0); }
 
Блин ну сказал же в другой ветке - ретурны лишние убери, зачем плодить топики?
 
xrust писал(а) >>
Блин ну сказал же в другой ветке - ретурны лишние убери, зачем плодить топики?

Понял про ретурны, надо оставить только три последних?

 
logomoris писал(а) >>

Понял про ретурны, надо оставить только три последних?

да, неиспользуемые блоки инит и деинит можеш совсем убрать

 
xrust писал(а) >>

да, неиспользуемые блоки инит и деинит можеш совсем убрать

Удалил, тестирую...

 
xrust писал(а) >>

да, неиспользуемые блоки инит и деинит можеш совсем убрать

Увы пп. 4 и 5 не срабатывают...?

 
logomoris писал(а) >>

Увы пп. 4 и 5 не срабатывают...?

Ответил в другой ветки, не надо их так плодить.

 
пробуй!
Файлы:
robot_1.mq4  3 kb
 

Любовь - как сыр! Ах, образ сколь чудесный!
Корову нужно прежде подоить!
Затем - процесс всем, право же, известный! -
Нам нужно будет творог получить!

Потом уже, конечно, к сыровару!
Вновь подождать! - с тем, чтобы сыр созрел!
А после уж! - Спасибо, - скажем дару,
Что подарить вкус дивный нам сумел!

Любовь! - Едим тебя! Полны тобою! -
Когда зовешь на свой роскошный пир!
Но если не дана ты нам судьбою,
Ты - как для мышки вожделенный сыр... 



 
у вас переменные order1, order2 - внутренние. после нового тика их значения обнуляются.
Причина обращения: