Нужна помощь!

[Удален]  

Уважаемые програмисты!Помогите пожалуйсто Разобраться в этом советнике! иправить ошибки и дописать! У самого ничего не получается мало опыта в MQL, вернее только обучаюсь . Заранее огромное спасибо всем кто поможет новичку! Ведь все мы когда-то с чего-то начинали!

Файлы:
 
'не могу выложить советника ' - тут написано, как правильно вставить код
[Удален]  
//+------------------------------------------------------------------+
//|                                                          444.mq4 |
//|                                                                  |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property link      "https://www.metaquotes.net/"
//---- input parameters
extern int       StartBar=0;                             // начальный бар, с которого идет отсчет двух одинаковых палок                           
extern int       TakeProfit=20;                          //Величина Тейк Профита
extern int       StopLoss=0;                             //Величина Стоп Лоса
extern int       Trailing=20;                            // Величина трейлинга
extern int       MaxOrders=10;                           // максимальное количество одновремено открытых ордеров
extern int       MA1_Period=5;                           // Период 1-й МА
extern int       MA2_Period=34;                          // Период 2-й МА
extern int       MA1_Method=1;                           // Метод вычисления МА1 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int       MA2_Method=1;                           // Метод вычисления МА2 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int       MA1_Price=0;                            // Метод вычисления цены МА1
extern int       MA2_Price=0;                            // Метод вычисления цены МА2
extern int       MA1_Shift=1;                            // Временной сдвиг МА1
extern int       MA2_Shift=1;                            // Временной сдвиг МА2
extern double    Lot=0.01;                               // Фиксированный лот
extern int       Slippage=0;                             // Отклонение цены для рыночных ордеров 
int New_Bar;                                             // 0/1 Факт образования нового бара
int Time_0;                                              // Время начала нового бара
int PosOpen;                                             // Направление пересечения
int PosClose;                                            // Направление пересечения
int total;                                               // Количество открытых ордеров
double MA1_0;                                            // Текущее значение 1-й МА (розов)
double MA1_1;                                            // Предыдущее значение 1-й МА (розов)
double MA2_0;                                            // Текущее значение 2-й МА (голубая)
double MA2_1;                                            // Предыдущее значение 2-й МА (голубая)
int orderBuy;                                            // 1 = факт налиия ордера Buy
int orderSell;                                           // 1 = факт налиия ордера Sell 
datetime last;
//============================================================================================
int start()
   {
double a; 
int b; 
int  total, ticket,cnt;
if(Bars<100)                                                  // Это условие проверяет, есть ли в истории графиков более 100 свечей.
{
Print("bars less than 100");
return(0); 
} 
if(TakeProfit<10) 
{
Print("TakeProfit less than 10");
return(0); 
}
total=OrdersTotal();
if(total<1)
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0); 
}
   {
   orderBuy=0;
   orderSell=0; 
   double price;  
   int openOrders=0;
            {
      if(OrderSelect(SELECT_BY_POS,MODE_TRADES)==true)       // Выбираем ордер                                        
            }
         if(OrderType()==OP_BUY)                             // Если стоит ордер на покупку
            {
            orderBuy=1;
            }
         if(OrderType()==OP_SELL)                            // Если стоит ордер на продажу
            {
            orderSell=1;
            }
   New_Bar=0;                                                // Для начала обнулимся
   if (Time_0 != Time[0])                                    // Если уже другое время начала бара
      {
      New_Bar= 1;                                            // Новый бар
      Time_0 = Time[0];                                      // Запомним время начала нового бара
      } 
   MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0);    // Текущее    значение 1-й МА   
   MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1);    // Предыдущее значение 1-й МА
   MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0);    // Текущее    значение 2-й МА
   MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1);    // Предыдущее значение 2-й МА                                                                    
                                                               
                                  
   if (PositionOpen()==1 && New_Bar==1)                 // Движение снизу вверх = откр. Buy
      {
      OpenBuy();
      }      
   if (PositionOpen()==2 && New_Bar==1)                 // Движение сверху вниз = откр. Sell
      {
      OpenSell();
      }                                        
//============================================================================================







[Удален]  
int PositionOpen()
   {
   PosOpen=0;                                                 
   if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0))   // Пересечение снизу вверх  
      {
      PosOpen=1;
      }                  
   if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0))   // Пересечение сверху вниз
      {
      PosOpen=2;
      }             
   return(PosOpen);                                                      // Возвращаем направление пересечен.
   }               
//============================================================================================
int OpenBuy() 
   {
   if (total==1)
      {
      OrderSelect(0, SELECT_BY_POS,MODE_TRADES);                        // Выделим ордер
      if (OrderType()==OP_BUY) return;                                  
      }
   OrderSend(Symbol(),OP_BUY, Ask, 0, 0, "Buy", 1, 0, CLR_NONE);        // Открываемся
   return;
  }
//============================================================================================
int OpenSell() 
   {
   if (total==1)
      {
      OrderSelect(0, SELECT_BY_POS,MODE_TRADES);                        // Выделим ордер
      if (OrderType()==OP_SELL) return;                                 
      }
   OrderSend(Symbol(),OP_SELL, Bid,3, 0, "Sell", 2, 0, CLR_NONE);        // Открываемся
   return;
   }
//============================================================================================
int MAMethod(int MA_Method)
   {
      switch(MA_Method)
        {
         case 0: return(0);                                   // Возвращает MODE_SMA=0
         case 1: return(1);                                   // Возвращает MODE_EMA=1
         case 2: return(2);                                   // Возвращает MODE_SMMA=2
         case 3: return(3);                                   // Возвращает MODE_LWMA=3
        }
   }
//============================================================================================
int MAPrice(int MA_Price)
   {
      switch(MA_Price)
        {
         case 0: return(PRICE_CLOSE);                         // Возвращает PRICE_CLOSE=0        
         case 1: return(PRICE_OPEN);                          // Возвращает PRICE_OPEN=1
         case 2: return(PRICE_HIGH);                          // Возвращает PRICE_HIGH=2
         case 3: return(PRICE_LOW);                           // Возвращает PRICE_LOW=3
         case 4: return(PRICE_MEDIAN);                        // Возвращает PRICE_MEDIAN=4
         case 5: return(PRICE_TYPICAL);                       // Возвращает PRICE_TYPICAL=5
         case 6: return(PRICE_WEIGHTED);                      // Возвращает PRICE_WEIGHTED=6
        }
       }
//============================================================================================
if  iAO ,Symbol(), 0, 2;
{
double ao1,ao2,ao3;

if(OrdersTotal()>0) TrailingControl();

{
if((Time[0]-last)>=Period()*60)
   {
   ao1=iAO(Symbol(),0,StartBar);
   ao2=iAO(Symbol(),0,StartBar+1);
   ao3=iAO(Symbol(),0,StartBar+2);
   last=Time[0];
   }
  }
}
return(0);
int OrderCl(int ord)
{
   int cnt;
   for(cnt=OrdersTotal();cnt>0;cnt--)
   {
      OrderSelect(cnt-1, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY  && ord==OP_BUY)  OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
      if(OrderType()==OP_SELL && ord==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
   }
}
int TrailingControl()
{
   int total=OrdersTotal(),cnt;
   
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)
           {
            if(Trailing>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*Trailing)
                 {
                  if(OrderStopLoss()<Bid-Point*Trailing)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0);
                     return(0);
                    }
                 }
              }
           }
         else
           {
            if(Trailing>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*Trailing))
                 {
                  if(OrderStopLoss()>(Ask+Point*Trailing))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*Trailing,OrderTakeProfit(),0);
                     return(0);
                    }
                 }
              }
           }
        }
     }


}