1. Лоу растут, но свеча закрылась ниже последнего лоу — селл стоп.
2. Хаи убывают, но свеча закрылась выше последнего хая — бай стоп.
Точки при совпадении условия, если нужно расставлю.
//+------------------------------------------------------------------+
//| Proboynik.mq4 |
//| Copyright © 2014, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, AM2"
#property link "http://www.forexsystems.biz"
#property description "Forex expert advisor"
//--- Inputs
extern int StopLoss = 2000; // стоплосс ордера
extern int TakeProfit = 2000; // тейкпрофит ордера
extern int Slip = 2; // проскальзывание
extern int Expiration = 14; // время истечения ордера
extern int Delta = 100; // расстояние от вершин
extern double Lots = 0.1; // объем позиции
extern int MAGIC = 333; // магик
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void PutOrder()
{
int res,b,s;
datetime expiration=TimeCurrent()+3600*Expiration;
double price,tp,sl;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUYSTOP)b++;
if(OrderType()==OP_SELLSTOP)s++;
}
}
}
//--- buy
if(High[2]<High[3] && Close[1]>High[2] && b<1)
{
price=High[1]+Delta*Point;
sl=price-StopLoss*Point;
tp=price+TakeProfit*Point;
res=OrderSend(Symbol(),OP_BUYSTOP,Lots,price,Slip,sl,tp,"",MAGIC,expiration,Blue);
}
//--- sell
if(Low[2]>Low[3] && Close[1]<Low[2] && s<1)
{
price=Low[1]-Delta*Point;
sl=price+StopLoss*Point;
tp=price-TakeProfit*Point;
res=OrderSend(Symbol(),OP_SELLSTOP,Lots,price,Slip,sl,tp,"",MAGIC,expiration,Red);
}
}
//+------------------------------------------------------------------+
void DelOrder()
{
bool del;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderType()==OP_BUYSTOP) del=OrderDelete(OrderTicket());
if(OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());
}
}
//+------------------------------------------------------------------+
bool NewBar()
{
static datetime lastbar=0;
datetime curbar=Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- check for history and trading
if(Bars<100 || IsTradeAllowed()==false)
return;
if(NewBar()==true)
{
if(CountTrades()<1)PutOrder();
if(CountTrades()>0)DelOrder();
}
//---
}
//+------------------------------------------------------------------+
AM2