novosti_v01_160





//+------------------------------------------------------------------+
//|                                               Set2StopOrders.mq4 |
//|                                                                  |
//|                                                                  |
//|                                                                  |
//|  10.01.2006 Ñêðèïò âûñòàâëÿåò 2 ïðîòèâîïîëîæíûõ ñòîïîâûõ îðäåðà. |
//+------------------------------------------------------------------+
  
#property show_inputs

//------- Âíåøíèå ïàðàìåòðû  ----------------------------------
extern string _P_Trade = "---------- Ïàðàìåòðû òîðãîâëè";
extern double Lots        = 0.1;     // Ðàçìåð òîðãóåìîãî ëîòà
extern int    StopLoss    = 30;      // Ðàçìåð ôèêñèðîâàííîãî ñòîïà
extern int    TakeProfit  = 60;       // Ðàçìåð ôèêñèðîâàííîãî òýéêà
extern int    DistanceSet = 20;      // Ðàññòîÿíèå îò ðûíêà
extern int    Slippage    = 3;       // Ïðîñêàëüçûâàíèå öåíû

//------- Ãëîáàëüíûå ïåðåìåííûå ñêðèïòà ------------------------------
string Name_Expert   = "Set2StopOrders";
bool   UseSound      = True;         // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
color  clOpenBuy     = LightBlue;    // Öâåò îðäåðà BuyStop
color  clOpenSell    = LightCoral;   // Öâåò îðäåðà SellStop


extern string _expiration ="Ñðîê óäàëåíèÿ îðäåðà â ìèíóòàõ";
extern int    expirat  =1800;       //Ñðîê óäàëåíèÿ îðäåðà â ñåêóíäàõ



extern string _DayTrade   ="Äåíü íåäåëè ïî ñðåäíå åâðîâåéñêîìó _ îò è äî  (âîñêðåñåíüå-0,1,2,3,4,5,6)";
extern int    FromDayTrade = 1;
extern int    ToDayTrade = 5;
extern string _HourTrade   ="×àñ ïî ñðåäíå åâðîâåéñêîìó _ îò è äî";
extern int    FromHourTrade = 14;
extern int    ToHourTrade = 14;
extern string _MinuteTrade   ="Ìèíóòû îò è äî";
extern int    FromMinuteTrade = 25;
extern int    ToMinuteTrade = 29;
extern int CloseHour=14;
extern int CloseMinute=35;
int LastTradeTime;


//------- Âíåøíèå ïàðàìåòðû ------------------------------------------
extern bool   AllPositions   = False; // Óïðàâëÿòü âñåìè ïîçèöèÿìè
extern bool   ProfitTrailing = True;  // Òðàëèòü òîëüêî ïðîôèò
extern int    TrailingStop   = 15;    // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int    TrailingStep   = 2;     // Øàã òðàëà
//extern bool   UseSound       = True;  // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
//extern string NameFileSound  = "expert.wav";  // Íàèìåíîâàíèå çâóêîâîãî ôàéëà

//***********************Close ALL
extern string _CloseALL   ="Çàêðûòèå âñåõ ïîçèöèé â êîíöå äíÿ";
extern int   CloseHour1     = 23;      // Âðåìÿ çàêðûòèÿ, ÷àñû
extern int   CloseMinute1   = 0;      // Âðåìÿ çàêðûòèÿ, ìèíóòû
extern bool  UseCurrSymbol = False;  // Èñïîëüçîâàòü òîëüêî îäèí èíñòðóìåíò
extern bool  UseOneAccount = False;  // Èñïîëüçîâàòü òîëüêî îäèí ñ÷¸ò
extern int   NumberAccount = 0;  // Íîìåð òîðãîâîãî ñ÷¸òà
extern color clCloseBuy    = Blue;   // Öâåò çàêðûòèÿ ïîêóïêè
extern color clCloseSell   = Red;    // Öâåò çàêðûòèÿ ïðîäàæè

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start() {

//***********************Çàêðûòèå âñåõ ïîçèöèé â íàçíà÷åííîå âðåìÿ (êîíåö äíÿ)
 double pBidc, pAskc;

  if (UseOneAccount && AccountNumber()!=NumberAccount) {
    Comment("Ðàáîòà íà ñ÷¸òå: "+AccountNumber()+" ÇÀÏÐÅÙÅÍÀ!");
    return;
  } else Comment("");

  if (Hour()==CloseHour1 && Minute()>=CloseMinute1) {
    for (int g=OrdersTotal()-1; g>=0; g--) {
      if (OrderSelect(g, SELECT_BY_POS, MODE_TRADES)) {
        if (!UseCurrSymbol || OrderSymbol()==Symbol()) {
          if (OrderType()==OP_BUY) {
            pBidc=MarketInfo(OrderSymbol(), MODE_BID);
            OrderClose(OrderTicket(), OrderLots(), pBidc, Slippage, clCloseBuy);
          }
          if (OrderType()==OP_SELL) {
            pAskc=MarketInfo(OrderSymbol(), MODE_ASK);
            OrderClose(OrderTicket(), OrderLots(), pAskc, Slippage, clCloseSell);
          }
        }
      }
    }
  }

//******************Òðåëèíã--------------------

  for (int j=0; j<OrdersTotal(); j++) {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) {
      if (AllPositions || OrderSymbol()==Symbol()) {
        TrailingPositions();
      }
    }
  }

 
// íå ðàáîòàåò â âûõîäíûå äíè.
 // if(DayOfWeek()==0 || DayOfWeek()==6) return(0);

   int total, cnt, OpenOrder, DefOrder, pos;

   // Ñ÷èòàåì êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ ïî òåêóùåìó èíñòðóìåíòó
   total=OrdersTotal();
   OpenOrder=0;
   DefOrder=0;   
   for(cnt=0;cnt<total;cnt++)
     {
       if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol())
         {
           if(OrderType()==OP_BUY || OrderType()==OP_SELL)
             OpenOrder++;  // êîëè÷åñòâî îòêðûòûõ îðäåðîâ
           else
             DefOrder++;  // êîëè÷åñòâî çàêðûòûõ îðäåðîâ
         }
     } 
       
        
                 
//***************** Óäàðåíèå îðäåðîâ ïîñëå íîâîñòåé************************
if (Hour()==CloseHour && Minute()>=CloseMinute) {
    for (int i=OrdersTotal()-1; i>=0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
        if (OrderSymbol()==Symbol()) {
          if ((OrderType()==OP_BUYSTOP) || (OrderType()==OP_SELLSTOP) ){
          OrderDelete(OrderTicket());
          }
          
        }
      }
    }
    return (1);
  }

//***********Îòêðûòèå îðäåðîâ ïåðåä íîâîñòÿìè*********************

 
if (OpenOrder>0 || DefOrder>0) return (0);
if (OpenOrder==0 && DefOrder==0)
   {//2
   if (!(Day()>=FromDayTrade && Day()<=ToDayTrade)){//3
   Comment("Time for trade has not come else! / Òèïà ðàíî åùå ");
   return(0);
   }//3
   if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)){//3
   Comment("Time for trade has not come else! / Òèïà ðàíî åùå ");
   return(0);
   }//3
   if (!(Minute()>=FromMinuteTrade && Minute()<=ToMinuteTrade)){//3
   Comment("Time for trade has not come else! / Òèïà ðàíî åùå ");
   return(0);
   }//3
   
   
   }//2

{
  double ldStop=0, ldTake=0;
  double pAsk=Ask+DistanceSet*Point;
  double pBid=Bid-DistanceSet*Point;

  if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
  if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
  SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake);

  if (StopLoss!=0) ldStop=pBid+StopLoss*Point;
  if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
  SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake);
}

}

//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðà                                                 |
//| Ïàðàìåòðû:                                                       |
//|   op     - îïåðàöèÿ                                              |
//|   pp     - öåíà                                                  |
//|   ldStop - óðîâåíü ñòîï                                          |
//|   ldTake - óðîâåíü òåéê                                          |
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake) {
  color  clOpen;
  string lsComm=GetCommentForOrder();
  

  if (op==OP_BUYSTOP) clOpen=clOpenBuy;
  else clOpen=clOpenSell;
  OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,lsComm,0,0,clOpen);
  if (UseSound) PlaySound(NameFileSound);
  

}

//+------------------------------------------------------------------+
//| Ãåíåðèðóåò è âîçâðàùàåò ñòðîêó êîìåíòàðèÿ äëÿ îðäåðà èëè ïîçèöèè |
//+------------------------------------------------------------------+
string GetCommentForOrder() {
  return(Name_Expert+" "+GetNameTF(Period()));
}

//+------------------------------------------------------------------+
//| Âîçâðàùàåò íàèìåíîâàíèå òàéìôðåéìà                               |
//+------------------------------------------------------------------+
string GetNameTF(int TimeFrame) {
	switch (TimeFrame) {
		case PERIOD_MN1: return("Monthly");
		case PERIOD_W1:  return("Weekly");
		case PERIOD_D1:  return("Daily");
		case PERIOD_H4:  return("H4");
		case PERIOD_H1:  return("H1");
		case PERIOD_M30: return("M30");
		case PERIOD_M15: return("M15");
		case PERIOD_M5:  return("M5");
		case PERIOD_M1:  return("M1");
		default:		     return("UnknownPeriod");
	}
	return(0);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  double pBid, pAsk, pp;

  pp = MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
    if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
      if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
        return;
      }
    }
  }
  if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
    if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
      if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
        return;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
  bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  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 Closes Orders by itself
It automatically opens orders when conditions are reached
It can change open orders parameters, due to possible stepping strategy

Other Features:


It plays sound alerts

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.80 Total Net Profit:-3.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

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 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 : USDJPY on H1

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

Request Backtest for novosti_v01_160


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

Pair: Period: