//+------------------------------------------------------------------+
//|                                               Dkvas Strategy.mq4 |
//|                                          Copyright © 2007, YsEkU |
//|                                          
https://www.x-trader.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, YsEkU"
#property link      "
https://www.x-trader.net"
extern int     Objetivo=30;
extern int     NumeroStops=3;
extern double  Lotes=3;
extern int     Slipp=5;
int      tic1,tic2,tic3,tic4,tic5,tiv1,tiv2,tiv3,tiv4,tiv5,x,y,z;
double   stc1,stc2,stc3,stc4,stc5,stv1,stv2,stv3,stv4,stv5,prc,prv,ppn;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
if(NumeroStops>5)NumeroStops=5;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   EstadoOrdenes();
//--- Aqui abajo, deberían ir los criterios de entrada para las ordenes
//--- en este caso esta en modo continuo, la funcion AbrirOrdenesCompra
//--- o venta, saltará cuando no haya ninguna orden abierta de su tipo.
   if(x==0)AbrirOrdenesCompra();
   if(z==0)AbrirOrdenesVenta();
//----
   return(0);
  }
//+------------------------------------------------------------------+
void   Niveles()
{
ppn=Objetivo/NumeroStops;
ppn=NormalizeDouble(ppn,0);
ppn=ppn*Point;
stc1=Ask-ppn;
stc2=stc1-ppn;
stc3=stc2-ppn;
stc4=stc3-ppn;
stc5=stc4-ppn;
stv1=Bid+ppn;
stv2=stv1+ppn;
stv3=stv2+ppn;
stv4=stv3+ppn;
stv5=stv4+ppn;
prc=Ask+(Objetivo*Point);
prv=Bid-(Objetivo*Point);
}
//+------------------------------------------------------------------+
void   AbrirOrdenesCompra()
{
Niveles();
if(NumeroStops>=1)tic1=OrderSend(Symbol(),OP_BUY,Lotes,Ask,Slipp,stc1,prc,NULL,0,0);
if(NumeroStops>=2)tic2=OrderSend(Symbol(),OP_BUY,Lotes,Ask,Slipp,stc2,prc,NULL,0,0);
if(NumeroStops>=3)tic3=OrderSend(Symbol(),OP_BUY,Lotes,Ask,Slipp,stc3,prc,NULL,0,0);
if(NumeroStops>=4)tic4=OrderSend(Symbol(),OP_BUY,Lotes,Ask,Slipp,stc4,prc,NULL,0,0);
if(NumeroStops>=5)tic5=OrderSend(Symbol(),OP_BUY,Lotes,Ask,Slipp,stc5,prc,NULL,0,0);
}
//+------------------------------------------------------------------+
void   AbrirOrdenesVenta()
{
Niveles();
if(NumeroStops>=1)tiv1=OrderSend(Symbol(),OP_SELL,Lotes,Bid,Slipp,stv1,prv,NULL,0,0);
if(NumeroStops>=2)tiv2=OrderSend(Symbol(),OP_SELL,Lotes,Bid,Slipp,stv2,prv,NULL,0,0);
if(NumeroStops>=3)tiv3=OrderSend(Symbol(),OP_SELL,Lotes,Bid,Slipp,stv3,prv,NULL,0,0);
if(NumeroStops>=4)tiv4=OrderSend(Symbol(),OP_SELL,Lotes,Bid,Slipp,stv4,prv,NULL,0,0);
if(NumeroStops>=5)tiv5=OrderSend(Symbol(),OP_SELL,Lotes,Bid,Slipp,stv5,prv,NULL,0,0);
}
//+------------------------------------------------------------------+
//+ Estado de las Ordenes
//+------------------------------------------------------------------+
void EstadoOrdenes()
{
x=0;z=0;
for (y=0;y<OrdersTotal();y++)
   {
   OrderSelect(y,SELECT_BY_POS,MODE_TRADES);
   if(OrderType()==0)x=x+1;
   if(OrderType()==1)z=z+1;
   }
}