Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Aibek Mugiynov
3478
Aibek Mugiynov  

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

//+------------------------------------------------------------------+
//|                                                     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))
{}}}}
Дмитрий
1046
Дмитрий  
тут гляньте https://www.mql5.com/ru/code/10854/page2#47506
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий