E-news-lucky$_v1





//+------------------------------------------------------------------+
//|   e-News-Lucky$.mq4                                              |
//|   Lucky$ & KimIV                                                 |
//|   http://www.kimiv.ru                                            |
//|                                                                  |
//|   24.10.2005                                                     |
//|   Âûñòàâëåíèå îðäåðîâ â îïðåäåë¸ííîå âðåìÿ íà ïðîáîé äèàïàçîíà.  |
//|   Åñëè íè îäèí îðäåð íå ñðàáîòàë, òî ìîäèôèêàöèÿ íà êàæäîì áàðå. |
//+------------------------------------------------------------------+
#property copyright "Lucky$ & KimIV"
#property link      "http://www.kimiv.ru"
//----
#define   MAGIC     20051024
//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern string _Parameters_Trade="----- Ïàðàìåòðû òîðãîâëè";
extern double Lots          =0.1;     // Ðàçìåð òîðãóåìîãî ëîòà
extern int    StopLoss      =15;      // Ðàçìåð ôèêñèðîâàííîãî ñòîïà
extern int    TakeProfit    =0;       // Ðàçìåð ôèêñèðîâàííîãî òýéêà
extern string TimeSetOrders ="10:30"; // Âðåìÿ óñòàíîâêè îðäåðîâ
extern string TimeDelOrders ="22:30"; // Âðåìÿ óäàëåíèÿ îðäåðîâ
extern int    DistanceSet   =20;      // Ðàññòîÿíèå îò ðûíêà
extern bool   UseTrailing   =True;    // Èñïîëüçîâàòü òðàë
extern bool   ProfitTrailing=True;    // Òðàëèòü òîëüêî ïðîôèò
extern int    TrailingStop  =25;      // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int    TrailingStep  =5;       // Øàã òðàëà
extern int    Slippage      =3;       // Ïðîñêàëüçûâàíèå öåíû
//----
extern string _Parameters_Expert="----- Ïàðàìåòðû ñîâåòíèêà";
extern bool   UseOneAccount=False;        // Òîðãîâàòü òîëüêî íà îäíîì ñ÷¸òå
extern int    NumberAccount=11111;        // Íîìåð òîðãîâîãî ñ÷¸òà
extern string Name_Expert  ="e-News-Lucky$";
extern bool   UseSound     =True;         // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound="expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
extern color  clOpenBuy    =LightBlue;    // Öâåò îòêðûòèÿ ïîêóïêè
extern color  clOpenSell   =LightCoral;   // Öâåò îòêðûòèÿ ïðîäàæè
extern color  clModifyBuy  =Aqua;         // Öâåò ìîäèôèêàöèè ïîêóïêè
extern color  clModifySell =Tomato;       // Öâåò ìîäèôèêàöèè ïðîäàæè
extern color  clCloseBuy   =Blue;         // Öâåò çàêðûòèÿ ïîêóïêè
extern color  clCloseSell  =Red;          // Öâåò çàêðûòèÿ ïðîäàæè
//---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------
int prevBar;
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
  void deinit() 
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
  void start() 
  {
   if (TimeToStr(CurTime(), TIME_MINUTES)==TimeSetOrders) SetOrders();
   if (prevBar!=Bars && ExistOrder(1) && ExistOrder(2)) ModifyOrders();
   DeleteOppositeOrders();
   TrailingPositions();
     if (TimeToStr(CurTime(), TIME_MINUTES)==TimeDelOrders) 
     {
      DeleteAllOrders();
      CloseAllPositions();
     }
   prevBar=Bars;
  }
//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðîâ                                                |
//+------------------------------------------------------------------+
   void SetOrders() 
   {
   double ldStop=0, ldTake=0;
   int    spr=MarketInfo(Symbol(), MODE_SPREAD);
   double pAsk=Ask+(DistanceSet+spr)*Point;
   double pBid=Bid-DistanceSet*Point;
//----
     if (!ExistOrder(1)) 
     {
      if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
      if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
      SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
     }
     if (!ExistOrder(2)) 
     {
      if (StopLoss!=0) ldStop=pBid+StopLoss*Point;
      if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
      SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
     }
  }
//+------------------------------------------------------------------+
//| Ìîäèôèêàöèÿ îðäåðîâ                                              |
//+------------------------------------------------------------------+
  void ModifyOrders() 
  {
   bool   fm;
   double ldStop=0, ldTake=0;
   int    spr=MarketInfo(Symbol(), MODE_SPREAD);
   double pAsk=Ask+(DistanceSet+spr)*Point;
   double pBid=Bid-DistanceSet*Point;
//----
     for(int i=0; i<OrdersTotal(); i++) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+1) 
           {
            if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
            if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
            OrderModify(OrderTicket(), pAsk, ldStop, ldTake, 0, clModifyBuy);
           }
           if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+2) 
           {
            if (StopLoss!=0) ldStop=pBid+StopLoss*Point;
            if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
            OrderModify(OrderTicket(), pBid, ldStop, ldTake, 0, clModifySell);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îðäåðà èëè ïîçèöèè ïî íîìåðó       |
//+------------------------------------------------------------------+
  bool ExistOrder(int mn) 
  {
   bool Exist=False;
     for(int i=0; i<OrdersTotal(); i++) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) 
           {
            Exist=True; break;
           }
        }
     }
   return(Exist);
  }
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèè ïî íîìåðó                  |
//+------------------------------------------------------------------+
  bool ExistPosition(int mn) 
  {
   bool Exist=False;
     for(int i=0; i<OrdersTotal(); i++) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) 
           {
              if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
              {
               Exist=True; break;
              }
           }
        }
     }
   return(Exist);
  }
//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðà                                                 |
//| Ïàðàìåòðû:                                                       |
//|   op     - îïåðàöèÿ                                              |
//|   pp     - öåíà                                                  |
//|   ldStop - óðîâåíü ñòîï                                          |
//|   ldTake - óðîâåíü òåéê                                          |
//|   mn     - äîáàâèòü ê MAGIC                                      |
//+------------------------------------------------------------------+
  void SetOrder(int op, double pp, double ldStop, double ldTake, int mn) 
  {
   color  clOpen;
   string lsComm=GetCommentForOrder();
//----
   if (op==OP_BUYSTOP) clOpen=clOpenBuy;
   else clOpen=clOpenSell;
   OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,lsComm,MAGIC+mn,0,clOpen);
   if (UseSound) PlaySound(NameFileSound);
  }
//+------------------------------------------------------------------+
//| Ãåíåðèðóåò è âîçâðàùàåò ñòðîêó êîìåíòàðèÿ äëÿ îðäåðà èëè ïîçèöèè |
//+------------------------------------------------------------------+
  string GetCommentForOrder() 
  {
   return(Name_Expert);
  }
//+------------------------------------------------------------------+
//| Óäàëåíèå âñåõ îðäåðîâ                                            |
//+------------------------------------------------------------------+
  void DeleteAllOrders() 
  {
   bool fd;
     for(int i=OrdersTotal()-1; i>=0; i--) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+2) 
           {
              if (OrderSymbol()==Symbol()) 
              {
                 if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) 
                 {
                  fd=OrderDelete(OrderTicket());
                  if (fd && UseSound) PlaySound(NameFileSound);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Çàêðûòèå âñåõ ïîçèöèé ïî ðûíî÷íîé öåíå                           |
//+------------------------------------------------------------------+
  void CloseAllPositions() 
  {
   bool fc;
     for(int i=OrdersTotal()-1; i>=0; i--) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+2) 
           {
              if (OrderSymbol()==Symbol()) 
              {
               fc=False;
                 if (OrderType()==OP_BUY) 
                 {
                  fc=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
                 }
                 if (OrderType()==OP_SELL) 
                 {
                  fc=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
                 }
               if (fc && UseSound) PlaySound(NameFileSound);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Óäàëåíèå ïðîòèâîïîëîæíûõ îðäåðîâ                                 |
//+------------------------------------------------------------------+
  void DeleteOppositeOrders() 
  {
   bool fd, fep1, fep2;
//----
   fep1=ExistPosition(1);
   fep2=ExistPosition(2);
//----
     for(int i=OrdersTotal()-1; i>=0; i--) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (OrderSymbol()==Symbol()) 
           {
            fd=False;
              if (OrderType()==OP_BUYSTOP && OrderMagicNumber()==MAGIC+1) 
              {
               if (fep2) fd=OrderDelete(OrderTicket());
              }
              if (OrderType()==OP_SELLSTOP && OrderMagicNumber()==MAGIC+2) 
              {
               if (fep1) fd=OrderDelete(OrderTicket());
              }
            if (fd && UseSound) PlaySound(NameFileSound);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
  void TrailingPositions() 
  {
     for(int i=0; i<OrdersTotal(); i++) 
     {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
           if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+2) 
           {
              if (OrderSymbol()==Symbol()) 
              {
                 if (OrderType()==OP_BUY) 
                 {
                    if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*Point) 
                    {
                       if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) 
                       {
                        ModifyStopLoss(Bid-TrailingStop*Point, clModifyBuy);
                       }
                    }
                 }
                 if (OrderType()==OP_SELL) 
                 {
                    if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*Point) 
                    {
                       if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) 
                       {
                        ModifyStopLoss(Ask+TrailingStop*Point, clModifySell);
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//|   clModify   - öâåò ìîäèôèêàöèè                                  |
//+------------------------------------------------------------------+
  void ModifyStopLoss(double ldStop, color clModify) 
  {
   bool   fm;
   double ldOpen=OrderOpenPrice();
   double ldTake=OrderTakeProfit();
//----
   fm=OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, clModify);
   if (fm && UseSound) PlaySound(NameFileSound);
  }
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached
It Closes Orders by itself

Other Features:

It plays sound alerts

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for E-news-lucky$_v1


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: