Bull vs Medved

Author: Copyright � 2008, Andrey Kuzmenko (Foxbat)
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reached
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
Bull vs Medved
//+------------------------------------------------------------------+
//|                                               Bull vs Medved.mq4 |
//|                       Copyright © 2008, Andrey Kuzmenko (Foxbat) |
//|                                          mailto:foxbat-b@mail.ru |
//+------------------------------------------------------------------+
//| Íåêîòîðûå "îáùåïîëåçíûå" ôóíêöèè êîäà, òðåéëèíã ñòîï, íàïðèìåð,  |
//| áûëè ëþáåçíî ïîçàèìñòâîâàíû èç äðóãèõ ýêñïåðòîâ.                 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Andrey Kuzmenko (Foxbat)"
#property link      "foxbat-b@mail.ru"
//----
#define MAGIC 612453
//----
extern double Lots = 0.10;       // ðàçìåð ëîòà
extern double CandleSize =75;    // ðàçìåð òåëà ñâå÷è
extern double k_sl=0.8;          // Óðîâåíü StopLoss îïðåäåëÿåòñÿ êàê CandleSize*k_sl
extern double k_tp=0.8;          // Óðîâåíü TakeProfit îïðåäåëÿåòñÿ êàê CandleSize*k_tp
extern double popravka_up=16;    // îòñòóï îò òåêóùåé öåíû äëÿ îòëîæåííîãî îðäåðà Buylimit
extern double popravka_down=20;  // îòñòóï îò òåêóùåé öåíû äëÿ îòëîæåííîãî îðäåðà Selllimit
extern bool flag = true;
extern string        StartTime="0:05";// Âðåìÿ ñòàðòà ïî ãðèíâè÷ó
extern string        StartTime1="4:05";
extern string        StartTime2="8:05";
extern string        StartTime3="12:05";
extern string        StartTime4="16:05";
extern string        StartTime5="20:05";
datetime             TimeStart;
datetime             TimeStart1;
datetime             TimeStart2;
datetime             TimeStart3;
datetime             TimeStart4;
datetime             TimeStart5;
bool                 trade=false;
bool                 trade1=false;
//----
double Limit = 400;
color clOpenBuy = Blue;
color clCloseBuy = Aqua;
color clOpenSell = Red;
color clCloseSell = Violet;
color clModiBuy = Blue;
color clModiSell = Red;
string Name_Expert = "Bull vs Medved";
int Slippage = 0;
bool UseSound = True;
string NameFileSound = "alert.wav";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsBull()
  {
   if
   ((Close[3]>Open[2])&&
    (Close[2]-Open[2] >= 10*Point)&&
    (Close[1]-Open[1] >= CandleSize*Point) )
       return(true);
   else 
       return(false);
  }
  
bool IsBadBull()
  {
   if
   ((Close[3]-Open[3] >= 10*Point)&&
    (Close[2]-Open[2] >= 10*Point)&&
    (Close[1]-Open[1] >= CandleSize*Point) )
       return(true);
   else 
       return(false);
  }
bool IsCoolBull()
  {
   if
   ((Open[2]-Close[2] >= 20*Point)&&
    (Close[2]<=Open[1])&&
    (Close[1]>Open[2])&&
    (Close[1]-Open[1] >= 0.4*CandleSize*Point) )
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsBear()
  {
   if((Open[1] - Close[1] >= CandleSize*Point)) 
       return(true);
   else 
       return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
{
   

// Ïåðåâîäèì âðåìÿ èç ñòðî÷íîé âåëè÷èíû StartTime âî âðåìåííÓþ TimeStart
   TimeStart=StrToTime(StartTime);
   TimeStart1=StrToTime(StartTime1);
   TimeStart2=StrToTime(StartTime2);
   TimeStart3=StrToTime(StartTime3);
   TimeStart4=StrToTime(StartTime4);
   TimeStart5=StrToTime(StartTime5);
   // Åñëè òåêóùåå âðåìÿ ìåíüøå ñòàðòîâîãî èëè áîëüøå åãî íà 5 ìèíóò, òî âûõîäèì è íè÷åãî íå äåëàåì.
   // Íî ïðåäâàðèòåëüíî äåëàåì ïåðåìåííóþ trade ëîæíîé. Ïðîñòî ñáðàñûâàåì èíôîðìàöèþ î òîì, ÷òî óæå îòêðûâàëèñü.
   if(CurTime()<TimeStart || CurTime()>TimeStart+300 &&
      CurTime()<TimeStart1 || CurTime()>TimeStart1+300 &&
      CurTime()<TimeStart2 || CurTime()>TimeStart2+300 &&
      CurTime()<TimeStart3|| CurTime()>TimeStart3+300 &&
      CurTime()<TimeStart4|| CurTime()>TimeStart4+300 && 
      CurTime()<TimeStart5 || CurTime()>TimeStart5+300 )
    { trade=false; return(0); }
 
   if(trade) return(0);
   
//Ïðîâåðèì íåò ëè ó íàñ îòëîæåííûõ îðäåðîâ, êîòîðûå  âèñÿò è áåçäåéñòâóþò 4 ÷àñà. Åñëè òàêîâûå åñòü óäàëèì èõ.   
   {
    int total =OrdersTotal();
    int ticket=OrderTicket();
   {      
   for(int i=0;i<=total;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
       {if(OrderSymbol()==Symbol())
          {if(OrderType()>1)
             {if(TimeCurrent()-OrderOpenTime()>230*60)
                    {   
       
                    ticket=OrderTicket();    
                    OrderDelete(OrderTicket());
                    }
             }       
          }          
       }
    break;                
     }
   }
 
  {
  
   if(AccountFreeMargin() < (1000*Lots))
     {
       Print("We have no money. Free Margin = ", AccountFreeMargin());
       return(0);
     }
   if(!ExistPositions())
     {
       
       if(IsBull() == true && IsBadBull() == false)
         {
           OpenBuy();
           return(0);
         }
       
     }
     
   if(!ExistPositions())
     {
       
       if(IsCoolBull() == true )
         {
           OpenBuy();
           return(0);
         }
       
     }  
     
   if(!ExistPositions())
     {
       
       if(IsBear() == true)
         {   
           OpenSell();
           return(0);
         }
       
     }
   
   return (0);
  }
 
}

 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ExistPositions() 
  {
	  for(int i = 0; i < OrdersTotal(); i++) 
	    {
		     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
		       {
			        if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC) 
			          {
				           return(True);
			          }
		       } 
	    } 
	  return(false);
  } 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+   
  
void OpenBuy()
{
  { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   int i = 1;
   int orders = HistoryTotal(); 
   ldLot = Lots;
   ldStop = GetStopLossBuy(); 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder();
   OrderSend(Symbol(), OP_BUYLIMIT, ldLot, Ask-popravka_up*Point, Slippage,ldStop, ldTake, lsComm, MAGIC,0, clOpenBuy); 
   if(UseSound) 
       PlaySound(NameFileSound);
  } 
 } 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenSell() 
  { 
   double ldLot, ldStop, ldTake; 
   string lsComm;
   int i = 1;
   int orders = HistoryTotal(); 
   ldLot = Lots;
   ldStop = GetStopLossSell(); 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder();
   OrderSend(Symbol(), OP_SELLLIMIT, ldLot, Bid+popravka_down*Point, Slippage, ldStop, ldTake, lsComm, MAGIC,0, clOpenSell); 
   if(UseSound) 
       PlaySound(NameFileSound);        
  } 

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string GetCommentForOrder() 
  { 	
    return(Name_Expert); 
  } 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetStopLossBuy() 
  {
  int sl;
  sl=MathRound((Close[1]-Open[1])*10000*k_sl);  
  return(Bid - sl*Point);
  } 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetStopLossSell() 
  { 
  int sl;
  sl=MathRound((Open[1]-Close[1])*10000*k_sl);
  	
  return(Ask + sl*Point); 
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetTakeProfitBuy() 
  { 
  int tp;
   tp=MathRound((Close[1]-Open[1])*10000*k_tp);
    return(Ask + tp*Point); 
  } 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetTakeProfitSell() 
  { 
   int tp;
   tp=MathRound((Open[1]-Close[1])*10000*k_tp);  	
   return(Bid - tp*Point); 
  } 
//----
return(0);
//+------------------------------------------------------------------+



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