
//+------------------------------------------------------------------+
//| OpenGo.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "Expert advisor"
extern int StopLoss = 1300; //лось
extern int TakeProfit = 1400; //язь
extern int Slip = 30; //проскальзывание
extern int Count = 10; //максимальное количество ордеров
extern int MSec = 0; //Время через которое закрывается каждый последующий ордер(миллисекунды)
extern double Lots = 0.1; //лот
extern double Equity = 10010; //средства
extern int Magic=20150826; //магик
bool Trade=true;
double LastOpen=0;
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
void CloseAll()
{
bool cl,sel;
for(int i=OrdersTotal()-1;i>=0;i--)
{
sel=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
}
Sleep(MSec);
}
}
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int res;
//---- buy
if(Close[1]>Open[1])
{
res=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,NormalizeDouble(Ask-StopLoss*Point,Digits),NormalizeDouble(Ask+TakeProfit*Point,Digits),"",Magic,0,Blue);
return;
}
//---- sell
if(Close[1]<Open[1])
{
res=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,NormalizeDouble(Bid+StopLoss*Point,Digits),NormalizeDouble(Bid-TakeProfit*Point,Digits),"",Magic,0,Red);
return;
}
}
//+------------------------------------------------------------------+
//| Start function |
//+------------------------------------------------------------------+
void OnTick()
{
double equity=AccountEquity();
double balance=AccountBalance();
if(Open[1]!=LastOpen)
{
if(CountTrades()<Count && Trade) OpenPos();
LastOpen=Open[1];
}
if(equity>=Equity) CloseAll();
if(CountTrades()<1) Trade=false;
Comment("\n Equity: ",equity,
"\n Balance: ",balance,
"\n Positions: ",CountTrades(),
"\n Trade: ",Trade);
//----
}
//+------------------------------------------------------------------+
AM2