Помогите для начинающего!

 

Всем привет, хочу написать сову на основе трендовых линии! Чтобы при пересечении линии тренда открывался ордер! Вроде как бы сделал сову но что то не работает)) Помогите! Заранее спасибо

//+------------------------------------------------------------------+
//|                                                     AibekuS .mq4 |
//|                                                    Мугинов Айбек |
//|                                              aibekus92@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Мугинов Айбек"
#property link      "aibekus92@gmail.com"
extern double Lot=0.1;
extern int    TP=50;
extern int    SL=50;
extern int    Tral=20;
extern int    Magic=123;
int D;
int init()
  {D=1;
  if (Digits==5 || Digits==3)D=10;
  return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {Trail();
//----
double bsl,btp,ssl,stp;  
if(SL!=0) {bsl=Ask+SL*Point;ssl=Bid-SL*Point;}
if(TP!=0) {btp=Ask-TP*Point;stp=Bid+TP*Point;}
//----
   ObjectCreate("TrendLine 1", OBJ_TREND, 0, Time[12], Bid+25*Point , Time[0]+3600, Bid+25*Point );
   ObjectSet("TrendLine 1", OBJPROP_COLOR, Red);                                                      
   if(ObjectFind("1")==-1){ ObjectCreate("1",OBJ_TEXT, 0, 0, 0);} 
   ObjectSetText("1",DoubleToStr(MathAbs((NormalizeDouble(Bid,Digits)-NormalizeDouble
  (ObjectGetValueByShift("Trendline "+1,0),Digits))*MathPow(10,Digits)),0),8,"Arial",Red); 
   ObjectSet("1",OBJPROP_PRICE1,NormalizeDouble(ObjectGetValueByShift("Trendline "+1,0),Digits)); 
   ObjectSet("1",OBJPROP_TIME1,Time[0]) ; 
//----
  double val1=ObjectGetValueByShift("Trendline 1", 0);
//----
if(Count()==0 && LastTime()<Time[0])
if(Bid-Red*Point <= val1 && Bid+Red*Point >= val1)OrderSend(Symbol(),1,Lot,Ask,3,bsl,btp,"Aibek",Magic);
 return(0);
  }
//+------------------------------------------------------------------+
int Count(int type=-1)
{int count=0;
 for(int i=OrdersTotal()-1;i>=0;i--)
 {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  {if(Symbol()==OrderSymbol() && OrderMagicNumber()==Magic && (type==-1 || OrderType()==type)) count++;}}
   return(count);}
//+------------------------------------------------------------------+
int LastTime()
{int dt=0;
 for(int i=OrdersHistoryTotal()-1;i>=0;i--)
 {if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
  {if(Symbol()==OrderSymbol() && OrderMagicNumber()==Magic && OrderOpenTime()>dt) dt=OrderOpenTime();}}
   return(dt);}
 //--------------------------Трейлинг стоп------------------------------+
void Trail()
{for(int i=0; i<OrdersTotal(); i++)
if (OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{if(Tral!=0){
if (OrderType()==OP_BUY && Bid>MathMax(OrderOpenPrice(),OrderStopLoss())+Tral*Point)
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Tral*Point,OrderTakeProfit(),0))
{}
if (OrderType()==OP_SELL && ((Ask<MathMin(OrderOpenPrice(),OrderStopLoss())-Tral*Point && 
OrderStopLoss()!=0)||(Ask<OrderOpenPrice()-Tral*Point && OrderStopLoss()==0)))
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Tral*Point,OrderTakeProfit(),0))
{}}}}
 
тут гляньте https://www.mql5.com/ru/code/10854/page2#47506