e-Grabber-Murrey-v07

Author: Copyright � 2006, lukas1
Price Data Components
Series array that contains close prices for each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself
Indicators Used
Stochastic oscillator
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites

Profitability Reports

AUD/USD Oct 2024 - Jan 2025
0.00 %
Total Trades 0
Won Trades 0
Lost trades 0
Win Rate 0.0 %
Expected payoff 0.00
Gross Profit 0.00
Gross Loss 0.00
Total Net Profit 0.00
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.00 %
Total Trades 0
Won Trades 0
Lost trades 0
Win Rate 0.0 %
Expected payoff 0.00
Gross Profit 0.00
Gross Loss 0.00
Total Net Profit 0.00
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
0.00 %
Total Trades 0
Won Trades 0
Lost trades 0
Win Rate 0.0 %
Expected payoff 0.00
Gross Profit 0.00
Gross Loss 0.00
Total Net Profit 0.00
-100%
-50%
0%
50%
100%
e-Grabber-Murrey-v07
//+------------------------------------------------------------------+
//|                                             e-Grabber-Murrey.mq4 |
//|                                             v.06                 |
//|      10.16.2006    Copyright © 2006,  Ëóêàøóê Âèêòîð Ãåííàäüåâè÷ |
//+------------------------------------------------------------------+
/*
Ðàáîòàåò ïî ëèíèÿì ðàñïîëîæåííûì â îñíîâíîì îêíå. Äëÿ åãî ðàáîòû íåîáõîäèìî 
íàëîæèòü íà ãðàôèê èíäèêàòîð Ìþððåÿ. 
Ïðàâèëà ðàáîòû. Çàïóñêàåì ñîâåòíèê è âñòàâëÿåì â îêíî ãðàôèêà èíäèêàòîð Ìþððåÿ. 
Íàïðèìåð Murrey_Math_MT_VG_even. Íàëè÷èå â îêíå èíäèêàòîðà Ìþððåÿ íåîáõîäèìî äëÿ 
ðàáîòû. Ñîâåòíèê íàõîäèò íà  ãðàôèêå ëèíèè ñ íàçâàíèÿìè "mml0", "mml2", 
"mml4", "mml6", "mml8" "mml10" "mml12" âûáèðàåò òå äâå, êîòðûå ðàñïîëîæåíû 
âûøå è íèæå òåêóùåãî êóðñà è ïðè ïåðåñå÷åíèè òîé èëè äðóãîé æä¸ò äâà áàðà 
è îòêðûâàåò ïîçèöèþ. Ïðèìå÷àíèå: íå îáÿçàòåëüíî íàëè÷èå èíäèêàòîðà Ìþððåÿ, 
âàæíî íàëè÷èå âûøåóêàçàííûõ ãîðèçîíòàëüíûõ ëèíèé.

Ëîãè÷åñêèé ïàðàìåòð "ebBuyFromUp" îáîçíà÷àåò BUY îò âåðõíåé ëèíèè. 
Åñëè â ïàðàìåòðàõ ñîâåòíèêà ïîñòàâèòü ïàðàìåòð "ebBuyFromUp" ðàâíûì "FALSE", 
ñîâåòíèê áóäåò îòêðûâàòü SELL îò âåðõíåé ëèíèè.
Ëîãè÷åñêèé ïàðàìåòð "ebSellFromDn" îáîçíà÷àåò SELL îò íèæíåé ëèíèè. 
Åñëè â ïàðàìåòðàõ ñîâåòíèêà ïîñòàâèòü ïàðàìåòð "ebSellFromDn" ðàâíûì "FALSE", 
ñîâåòíèê áóäåò îòêðûâàòü BUY îò íèæíåé ëèíèè. 

Àíàëîãè÷íî ñ ïàðàìåòðàìè ñòîõàñòèêà. Åñëè "ebBuyStoch" ðàâåí "TRUE" ñäåëêà 
BUY áóäåò îòêðûâàòüñÿ òîëüêî ïðè óñëîâèè, ÷òî ñèãíàëüíàÿ ëèíèÿ ñòîõàñòèêà 
íèæå îñíîâíîé. Äëÿ SELL - ñèãíàëüíàÿ ëèíèÿ ñòîõàñòèêà âûøå îñíîâíîé.
Åñëè "ebBuyStoch" ðàâåí "FALSE" ñäåëêà BUY áóäåò îòêðûâàòüñÿ ïðè óñëîâèè, 
÷òî ñèãíàëüíàÿ ëèíèÿ ñòîõàñòèêà âûøå îñíîâíîé.

*/
#property copyright "Copyright © 2006, lukas1"
#property link      "www.alpari-idc.ru"
//
extern double Lots         = 0.1;      // Ðàçìåð òîðãóåìîãî ëîòà
extern int    StopLoss     = 33;       // Ðàçìåð ôèêñèðîâàííîãî ñòîïà
extern int    TakeProfit   = 50;       // Ðàçìåð ôèêñèðîâàííîãî òýéêà
extern int    Slippage     = 3;        // Ïðîñêàëüçûâàíèå öåíû
//
extern bool   ebBuyFromUp   = FALSE;   // Ïîêóïàòü îò âåðõíåé ëèíèè
extern bool   ebSellFromDn  = FALSE;   // Ïðîäàâàòü îò íèæíåé ëèíèè
extern bool   ebShowComment = TRUE;    // Ïîêàçûâàòü êîììåíòàðèè
extern bool   ebAdaptiveStop= FALSE;   // Ðàñ÷åò TP,SL ïî óðîâíÿì 
//
extern int    Stoch_p1    = 15;        // Ñòîõàñòèê ïåðèîä %Ê
extern int    Stoch_p2    = 18;        // Ñòîõàñòèê ïåðèîä %Ä
extern int    Stoch_t1    = 12;        // Ñòîõàñòèê çàìåäëåíèå
extern bool   ebBuyStoch  = TRUE;      // Óñëîâèå ïî ñòîõàñòèêó
//
extern string line1_name = "mml0";
extern string line2_name = "mml2";
extern string line3_name = "mml4";
extern string line4_name = "mml6";
extern string line5_name = "mml8";
extern string line6_name = "mml10";
extern string line7_name = "mml12";
//
string esNameUpLine;// Íàèìåíîâàíèå âåðõíåé ëèíèè
string esNameDnLine;// Íàèìåíîâàíèå íèæíåé ëèíèè
//------- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà --
string Name_Expert   = "e-Grabber-Murrey";
bool   UseSound      = True;           // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
string NameFileSound = "expert.wav";   // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
color  clOpenBuy     = LightBlue;      // Öâåò çíà÷êà îòêðûòèÿ ïîêóïêè
color  clOpenSell    = LightCoral;     // Öâåò çíà÷êà îòêðûòèÿ ïðîäàæè
color  clCloseBuy    = Blue;           // Öâåò çíà÷êà çàêðûòèÿ ïîêóïêè
color  clCloseSell   = Red;            // Öâåò çíà÷êà çàêðûòèÿ ïðîäàæè
double gdUpPrice, gdDnPrice;           // Òåêóùèå öåíîâûå óðîâíè
double gdPrevUpPrice, gdPrevDnPrice;   // Ïðåäûäóùèå öåíîâûå óðîâíè
double gdPrevAsk, gdPrevBid;           // Ïðåäûäóùèå öåíû
double gdPrev2Ask, gdPrev2Bid;           // Ïðåäûäóùèå öåíû
int    obj_total;
double line1_price,line2_price,line3_price,line4_price,line5_price;
double line6_price,line7_price,line8_price,line9_price,line10_price;
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
void deinit() { if (!IsTesting()) Comment(""); }

//+------------------------------------------------------------------+
//| expert program start function                                    |
//+------------------------------------------------------------------+
void start() 
  {
  obj_total=ObjectsTotal(OBJ_HLINE);   // êîë-âî ãîðèç ëèíèé íà ãðàôèêå
  line1_price = ObjectGet(line1_name,OBJPROP_PRICE1);
  line2_price = ObjectGet(line2_name,OBJPROP_PRICE1);  
  line3_price = ObjectGet(line3_name,OBJPROP_PRICE1);  
  line4_price = ObjectGet(line4_name,OBJPROP_PRICE1);  
  line5_price = ObjectGet(line5_name,OBJPROP_PRICE1);  
  line6_price = ObjectGet(line6_name,OBJPROP_PRICE1);  
  line7_price = ObjectGet(line7_name,OBJPROP_PRICE1);  
     // Âû÷èñëèòü gdUpPrice è ðàñïîçíàòü
     // êàêàÿ ëèíèÿ íàæîäèòñÿ íà ýòîì óðîâíå
  gdUpPrice=line2_price; esNameUpLine="mml2";
  if (line2_price<Ask) {gdUpPrice=line3_price; esNameUpLine="mml4";}
  if (line3_price<Ask) {gdUpPrice=line4_price; esNameUpLine="mml6";}
  if (line4_price<Ask) {gdUpPrice=line5_price; esNameUpLine="mml8";}
  if (line5_price<Ask) {gdUpPrice=line6_price; esNameUpLine="mml10";}
  if (line6_price<Ask) {gdUpPrice=line7_price; esNameUpLine="mml12";}
     // Âû÷èñëèòü gdDnPrice è ðàñïîçíàòü
     // êàêàÿ ëèíèÿ íàæîäèòñÿ íà ýòîì óðîâíå
  gdDnPrice=line6_price; esNameDnLine="mml10";// Òåêóùèå öåíîâûå óðîâíè
  if (line6_price>Bid) {gdDnPrice=line5_price; esNameDnLine="mml8";}
  if (line5_price>Bid) {gdDnPrice=line4_price; esNameDnLine="mml6";}
  if (line4_price>Bid) {gdDnPrice=line3_price; esNameDnLine="mml4";}
  if (line3_price>Bid) {gdDnPrice=line2_price; esNameDnLine="mml2";}
  if (line2_price>Bid) {gdDnPrice=line1_price; esNameDnLine="mml0";}
       
  //if (idRightCondition() && gdPrevAsk!=0 && gdPrevBid!=0) // gdPrevAsk è gdPrevBid
  if (idRightCondition()) // gdPrevAsk è gdPrevBid  
       OpenPositions();
  if (ebShowComment) 
      {
    string st="";
    if (gdUpPrice==0) st="Íå îïðåäåë¸í âåðõíèé öåíîâîé óðîâåíü\n";
    /*else {
      if (ebBuyFromUp) st="Ïîêóïêà îò ";
      else st="Ïðîäàæà îò ";
      st=st+DoubleToStr(gdUpPrice, Digits)+"\n";
         }*/
    if (gdDnPrice==0) st=st+"Íå îïðåäåë¸í íèæíèé öåíîâîé óðîâåíü";
    /*else {
      if (ebSellFromDn) st=st+"Ïðîäàæà îò ";
      else st=st+"Ïîêóïêà îò ";
      st=st+DoubleToStr(gdDnPrice, Digits);
         }*/
    Comment(st);
    //Comment(st);
      }
  if (gdUpPrice>0) gdPrevUpPrice=gdUpPrice;
  if (gdDnPrice>0) gdPrevDnPrice=gdDnPrice;
  //gdPrevAsk=Ask;
  //gdPrevBid=Bid;
  }
//+------------------------------------------------------------------+
//|         Èäåíòèôèêàöèÿ ïðàâèëüíûõ öåíîâûõ óðîâíåé                 |
//+------------------------------------------------------------------+
bool idRightCondition() {         // ñóùåñòâîâàíèå îáîèõ öåíîâûõ óðîâíåé
  double cur;                     // òåêóùàÿ öåíà ëèíèè äëÿ ðàñ÷åòà UP 
  // òèïè÷íàÿ ïðîâåðêà
  // Âåðõíèé öåíîâîé óðîâåíü

  if (ObjectFind(esNameUpLine)<0) // åñëè íå íàõîäèì ëèíèþ ñ òàêèì èìåíåì 
      {
    gdUpPrice=0;
    gdPrevUpPrice=0;
    Message("Íå íàéäåíà ëèíèÿ "+esNameUpLine);
      } else 
      {
       gdUpPrice=ObjectGet(esNameUpLine, OBJPROP_PRICE1); 
      }
  // Íèæíèé öåíîâîé óðîâåíü
  if (ObjectFind(esNameDnLine)<0) // åñëè íå íàõîäèì ëèíèþ ñ òàêèì èìåíåì  
      {
    gdDnPrice=0;
    gdPrevDnPrice=0;
    Message("Íå íàéäåíà ëèíèÿ "+esNameDnLine);
      } else 
      {
       gdDnPrice=ObjectGet(esNameDnLine, OBJPROP_PRICE1);
      }
  /*
  if (gdUpPrice<gdPrevBid && gdUpPrice>0) {
    gdUpPrice=0;
    Message("Âåðõíÿÿ ëèíèÿ "+esNameUpLine+" ðàñïîëîæåíà íèæå ðûíêà");
  }
  if (gdDnPrice>gdPrevAsk && gdPrevAsk>0) {
    gdDnPrice=0;
    Message("Íèæíÿÿ ëèíèÿ "+esNameDnLine+" ðàñïîëîæåíà âûøå ðûíêà");
  }
  */
  if (gdUpPrice!=gdPrevUpPrice || gdDnPrice!=gdPrevDnPrice
   || gdPrevUpPrice==0 || gdPrevDnPrice==0
   || gdUpPrice==0 || gdUpPrice==0) return(False);
  else return(True);
}
  
//+------------------------------------------------------------------+
//| Îòêðûòèå ïîçèöèè                                                 |
//+------------------------------------------------------------------+
void OpenPositions() {
  bool   lbBuy=False, lbSell=False;
  double ldStop=0, ldTake=0;
   
  /*if ((Ask>gdPrevAsk && Ask>=gdUpPrice && ebBuyFromUp)
   || (Bid<gdPrevBid && Bid<=gdDnPrice && !ebSellFromDn)) lbBuy=True;
  if ((Bid>gdPrevBid && Bid>=gdUpPrice && !ebBuyFromUp)
   || (Ask<gdPrevAsk && Ask<=gdDnPrice && ebSellFromDn))  lbSell=True;   */

  if ((iClose(Symbol(),0,4) < gdDnPrice && iClose(Symbol(),0,3) < gdDnPrice && 
       iClose(Symbol(),0,2) > gdDnPrice && iClose(Symbol(),0,1) > gdDnPrice && 
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,ebBuyStoch,0)  >
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,!ebBuyStoch,0) &&
       ebBuyFromUp)
   || (iClose(Symbol(),0,4) > gdUpPrice && iClose(Symbol(),0,3) > gdUpPrice && 
       iClose(Symbol(),0,2) < gdUpPrice && iClose(Symbol(),0,1) < gdUpPrice && 
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,ebBuyStoch,0)  <
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,!ebBuyStoch,0) &&       
       !ebSellFromDn)) lbBuy=True;

  if ((iClose(Symbol(),0,4) > gdUpPrice && iClose(Symbol(),0,3) > gdUpPrice &&
       iClose(Symbol(),0,2) < gdUpPrice && iClose(Symbol(),0,1) < gdUpPrice && 
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,ebBuyStoch,0)  <
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,!ebBuyStoch,0) &&   
       ebSellFromDn)
   || (iClose(Symbol(),0,4) < gdDnPrice && iClose(Symbol(),0,3) < gdDnPrice && 
       iClose(Symbol(),0,2) > gdDnPrice && iClose(Symbol(),0,1) > gdDnPrice && 
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,ebBuyStoch,0)  >
       iStochastic(Symbol(),0,Stoch_p1,Stoch_p2,Stoch_t1,0,0,!ebBuyStoch,0) &&
       !ebBuyFromUp))  lbSell=True;   
   
  if (lbBuy) {
    if (ExistPositionByOP(OP_SELL)) CloseAllPositions();
    if (!ExistPositionByOP(OP_BUY)) {
      if (StopLoss!=0) ldStop=Ask-StopLoss*Point;
      if (TakeProfit!=0) ldTake=Ask+TakeProfit*Point;
      OpenPosition(OP_BUY, ldStop, ldTake);
    }
  }
  if (lbSell) {
    if (ExistPositionByOP(OP_BUY)) CloseAllPositions();
    if (!ExistPositionByOP(OP_SELL)) {
      if (StopLoss!=0) ldStop=Bid+StopLoss*Point;
      if (TakeProfit!=0) ldTake=Bid-TakeProfit*Point;
      OpenPosition(OP_SELL, ldStop, ldTake);
    }
  }
}
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèè ïî îïåðàöèè                |
//+------------------------------------------------------------------+
bool ExistPositionByOP(int op) {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && OrderType()==op) 
          return(True);
                                                    }
                                      }
                                return(False);
                               }
//+------------------------------------------------------------------+
//| Îòêðûòèå ïîçèöèè ïî òåêóùåé öåíå                                 |
//| Ïàðàìåòðû:       op     - îïåðàöèÿ                               |
//|                  ldStop - óðîâåíü ñòîï                           |
//|                  ldTake - óðîâåíü òåéê                           |
//+------------------------------------------------------------------+
void OpenPosition(int op, double ldStop, double ldTake) 
 {
  color  clOpen;
  double pp;
  string lsComm=GetCommentForOrder();
  if (op==OP_BUY) 
      {
       clOpen=clOpenBuy;
       pp=Ask;
      } else {
              clOpen=clOpenSell;
              pp=Bid;
             }
  if (ebAdaptiveStop)
      {
  if (op==OP_BUY) 
      {
       ldTake=gdUpPrice;
       ldStop=gdDnPrice;
      } else {
              ldTake=gdDnPrice;
              ldStop=gdUpPrice;
             }
       }
  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_M1:  return("M1");
		case PERIOD_M5:  return("M5");
		case PERIOD_M15: return("M15");
		case PERIOD_M30: return("M30");
		case PERIOD_H1:  return("H1");
		case PERIOD_H4:  return("H4");
		case PERIOD_D1:  return("Daily");
		case PERIOD_W1:  return("Weekly");
		case PERIOD_MN1: return("Monthly");
		default:		     return("UnknownPeriod");
	                              }
                                }
//+------------------------------------------------------------------+
//| Çàêðûòèå âñåõ ïîçèöèé ïî ðûíî÷íîé öåíå                           |
//+------------------------------------------------------------------+
void CloseAllPositions()                          {
  for (int i=OrdersTotal()-1; i>=0; i--)           {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol())                   {
        if (OrderType()==OP_BUY)                      {
          OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
                                                      }
        if (OrderType()==OP_SELL)                     {
          OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
                                                      }
                                                     }
                                                    }
                                                   }
                                                  }
//+------------------------------------------------------------------+
//| Âûâîä ñîîáùåíèÿ â êîììåíò è â æóðíàë                             |
//+------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);
}
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---