Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Написал робота? Опубликуй его в Маркете и получай доход!
Aibek Mugiynov
1266
Aibek Mugiynov 2012.11.22 14:10 

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

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