//+------------------------------------------------------------------+
//| Delta.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 Delta = 200; // расстояние до ордера и стопы
extern int Slip = 30; // проскальзывание ордера
extern int Try = 5; // количество попыток выставить ордер
extern double Lots = 0.1; // объем позиции
extern double MaxLot = 5; // максимальный объем позиции
extern int MAGIC = 333; // магик
double lot;
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void PutOrder()
{
int res,b,s,err;
double price;
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(b<1)
{
price=Ask+Delta*Point;
res=OrderSend(Symbol(),OP_BUYSTOP,Lot(),fND(price),Slip,fND(price-Delta*Point),fND(price+Delta*Point),"",MAGIC,0,Blue);
if(res<0)
{
Print("Ошибка: ",GetLastError());
err++;
Sleep(500);
RefreshRates();
}
else
Print("OK Order BUYSTOP");
}
//--- sell
if(s<1)
{
price=Bid-Delta*Point;
res=OrderSend(Symbol(),OP_SELLSTOP,Lot(),fND(price),Slip,fND(price+Delta*Point),fND(price-Delta*Point),"",MAGIC,0,Red);
if(res<0)
{
Print("Ошибка: ",GetLastError());
err++;
Sleep(500);
RefreshRates();
}
else
Print("OK Order SELLSTOP");
}
if (err>Try) return;
}
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
double fND(double d,int n=-1)
{
if(n<0) return(NormalizeDouble(d, Digits));
return(NormalizeDouble(d, n));
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size |
//+------------------------------------------------------------------+
double Lot()
{
if(OrdersHistoryTotal()==0)
{
lot=Lots;
}
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderProfit()>0)
{
lot=Lots;
}
if(OrderProfit()<=0)
{
lot=OrderLots()*2;
}
}
if(lot>MaxLot)lot=MaxLot;
return(lot);
}
//+------------------------------------------------------------------+
//| 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();
}
//---
}
//+------------------------------------------------------------------+
скачать здесь
индикатор номер 6
а чтобы править суперпрофит нужен исходник
AM2