//+------------------------------------------------------------------+
//| 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;
}
}