Author: Scam Laboratory 2012
Price Data Components
Series array that contains close prices for each bar
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt Closes Orders by itself
Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
BeerGodEA
#property copyright "Scam Laboratory 2012" 
#property link      "http://www.forex4you.org/?affid=bdbda7b"
//=============== Ìåíþ ===============================================

extern string Name="BeerGodEA (25.06.12)";
extern double Lot = 1.0;
extern int TimeBarOpen = 1;
extern int Period_MA=20;      // Ïåðèîä ÌÀ
extern int Slippage = 1;
extern int mn= 100;

//============== Ïåðåìåííûå ==========================================
string GetNameOP="BeerGodEA"; // êîìåíò â îòêðûòîì îðäåðå
double TimeBar_t; // òåêóùåå âðåìÿ ñâå÷è
double sv_close; // öåíà çàêðûòèÿ ñâå÷è
double PA; // òåêóùàÿ öåíà
double MA_1_t; // ÌÀ òåêóùàÿ
double MA_1_p; // ÌÀ ïðåäûäóùàÿ
double NewBuy; // ñèãíàë îòêðûòèÿ ïîêóïêè
double NewSell; // ñèãíàë îòêðûòèÿ ïðîäàæè
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
   if (!IsTesting())
   {
      if (IsExpertEnabled())
      {
         Comment("Ñîâåòíèê áóäåò çàïóùåí ñëåäóþùèì òèêîì");
      }
      else 
      {
         Comment("Îòæàòà êíîïêà \"Ðàçðåøèòü çàïóñê ñîâåòíèêîâ\"");
      }
   }
      
   return (0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {//0

//======== ïîëó÷åíèå äàííûõ ñ èíäèêàòîðîâ è òåêóùåé öåíû ======================
{//1

MA_1_t=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0); // ÌÀ_1 òåêóùàÿ
MA_1_p=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,1); // ÌÀ_1 òåêóùàÿ
TimeBar_t = (TimeCurrent()-Time[0])/60; // âðåìÿ â ìèíóòàõ ñ îòêðûòèÿ ñâå÷è
sv_close = iClose(NULL,0,1); // öåíà çàêðûòèÿ ñâå÷è íà ïðåäûäóùåì áàðå
PA = Bid; // ïîëó÷åíèå òåêóùåé öåíû
RefreshRates ();
}//1  

// ================= Îáðàáîòêà ñèãíàëîâ ===============================
{//2
if ((PA < MA_1_t) && (MA_1_t < MA_1_p) && (PA < sv_close) && (TimeBar_t==TimeBarOpen))   NewBuy = 1; else NewBuy = 0; // óñëîâèå BUY
if ((PA > MA_1_t) && (MA_1_t > MA_1_p) && (PA > sv_close) && (TimeBar_t==TimeBarOpen))   NewSell = 1; else NewSell = 0; // óñëîâèå BUY
}//2

// ================= Îòêðûòèå ñäåëêè ===================================
{//3

// îòêðûòèå BUY
if ((NewBuy == 1) && (ExistPositions() == false)) OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,0,0,GetNameOP,mn,0,LightSkyBlue);
// îòêðûòèå Sell
if ((NewSell == 1) && (ExistPositions() == false)) OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,0,GetNameOP,mn,0,HotPink);

}//3

// ================= Çàêðûòèå ñäåëêè ===================================

{//4

if (NewBuy == 1) 
{
ClossAllProfitSell ();
ClossAllLossSell();
}

if (NewSell == 1) 
{
ClossAllProfitBuy ();
ClossAllLossBuy();
}

}//4
// ================= Êîììåíòàðèè ======================================

{//5

Comment("Ðàáîòàåì :)");    // Êîììåíòàðèé â óãîë îêíà  

}//5
// =====================================================================
   return(0);
  }//0
// ================= Ôóíêöèè ==========================================
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 06.03.2008                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé                          |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (""   - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   (-1   - ëþáàÿ ïîçèöèÿ)                  |
//|    mn - MagicNumber                (-1   - ëþáîé ìàãèê)                    |
//|    ot - âðåìÿ îòêðûòèÿ             ( 0   - ëþáîå âðåìÿ îòêðûòèÿ)           |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, datetime ot=0) {
  int i, k=OrdersTotal();
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}

//END

//+------------------------------------------------------------------+
//|                 Çàêðûòü ïðèáûëüíûå îðäåðà                        |
//+------------------------------------------------------------------+
// ====================== Çàêðûòü BUY â ïðîôèòå ===============================
double ClossAllProfitBuy ()

{
   int Profit1=Slippage;
   int col1=Gold;
   int ask1, bid1, open1;
   double point1;
   for (int i1=OrdersTotal()-1; i1>=0; i1--)
   {
      if (!OrderSelect(i1,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY)
      {
         point1=MarketInfo(Symbol(),MODE_POINT);
         if (point1==0) break;
         bid1=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point1);
         open1=MathRound(OrderOpenPrice()/point1);
         if (bid1-open1<Profit1) continue;
         OrderClose(OrderTicket(),OrderLots(),bid1*point1,Slippage,col1);
      }
//      if (OrderType()==OP_SELL)
//      {
//         point=MarketInfo(Symbol(),MODE_POINT);
//         if (point==0) break;
//         ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
//         open=MathRound(OrderOpenPrice()/point);
//         if (open-ask<Profit) continue;
//         OrderClose (OrderTicket(),OrderLots(),ask*point,slip,col) ;
//      }
   }
}
// End

// ====================== Çàêðûòü SELL â ïðîôèòå ===============================
double ClossAllProfitSell ()

{
   int Profit2=Slippage;
   int col2=Gold;
   int ask2, bid2, open2;
   double point2;
   for (int i2=OrdersTotal()-1; i2>=0; i2--)
   {
      if (!OrderSelect(i2,SELECT_BY_POS,MODE_TRADES)) break;
//      if (OrderType()==OP_BUY)
//      {
//         point=MarketInfo(Symbol(),MODE_POINT);
//         if (point==0) break;
//         bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
//         open=MathRound(OrderOpenPrice()/point);
//         if (bid-open<Profit) continue;
//         OrderClose(OrderTicket(),OrderLots(),bid*point,slip,col);
//      }
      if (OrderType()==OP_SELL)
      {
         point2=MarketInfo(Symbol(),MODE_POINT);
         if (point2==0) break;
         ask2=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point2);
         open2=MathRound(OrderOpenPrice()/point2);
         if (open2-ask2<Profit2) continue;
         OrderClose (OrderTicket(),OrderLots(),ask2*point2,Slippage,col2) ;
      }
   }
}
// End


//+------------------------------------------------------------------+
//|                 Çàêðûòü óáûòî÷íûå îðäåðà                         |
//+------------------------------------------------------------------+

// ====================== Çàêðûòü BUY â óáûòêå ===============================

double ClossAllLossBuy()
{
   int Stop4=Slippage;
//   int slip=2;
   int ask4, bid4, open4;
   double point4;
   for (int i4=OrdersTotal()-1; i4>=0; i4--)
   {
      if (!OrderSelect(i4,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY)
      {
         point4=MarketInfo(Symbol(),MODE_POINT);
         if (point4==0) break;
         bid4=MathRound(MarketInfo(Symbol(),MODE_BID)/point4);
         open4=MathRound(OrderOpenPrice()/point4);
         if (open4-bid4<Stop4) continue;
         OrderClose(OrderTicket(),OrderLots(),bid4*point4,Slippage,Red);
      }
//      if (OrderType()==OP_SELL)
//      {
//         point4=MarketInfo(Symbol(),MODE_POINT);
//         if (point4==0) break;
//         ask4=MathRound(MarketInfo(Symbol(),MODE_ASK)/point4);
//         open4=MathRound(OrderOpenPrice()/point4);
//         if (ask4-open4<Stop4) continue;
//         OrderClose (OrderTicket(),OrderLots(),ask4*point4,slip,Red);
//      }
   }
}
// End

// ====================== Çàêðûòü SELL â óáûòêå ===============================

double ClossAllLossSell()
{
   int Stop5=Slippage;
//   int slip=2;
   int ask5, bid5, open5;
   double point5;
   for (int i5=OrdersTotal()-1; i5>=0; i5--)
   {
      if (!OrderSelect(i5,SELECT_BY_POS,MODE_TRADES)) break;
//      if (OrderType()==OP_BUY)
//      {
//         point5=MarketInfo(Symbol(),MODE_POINT);
//         if (point5==0) break;
//         bid5=MathRound(MarketInfo(Symbol(),MODE_BID)/point5);
//         open5=MathRound(OrderOpenPrice()/point5);
//         if (open5-bid5<Stop5) continue;
//         OrderClose(OrderTicket(),OrderLots(),bid5*point5,slip,Red);
//      }
      if (OrderType()==OP_SELL)
      {
         point5=MarketInfo(Symbol(),MODE_POINT);
         if (point5==0) break;
         ask5=MathRound(MarketInfo(Symbol(),MODE_ASK)/point5);
         open5=MathRound(OrderOpenPrice()/point5);
         if (ask5-open5<Stop5) continue;
         OrderClose (OrderTicket(),OrderLots(),ask5*point5,Slippage,Red);
      }
   }
}
// End

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 ---