#define MagicNumber 712008
extern int TakeProfit = 50;
extern int StopLoss = 50;
extern double Lots = 0.1;
extern int slippage = 3;
extern int TrailingStop = 30;
extern int TimeToTrade = 1;
double point = 0;
int day = -1;
int init()
{
point = Point*MathPow(10,Digits%2);
return(0);
}
void start()
{
if( OrdersTotal() <= 0)
{
if (Hour() == TimeToTrade && Minute() == 0 && day != DayOfYear())
{
day = DayOfYear();
OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,Ask-StopLoss*point,Ask+TakeProfit*point,"misterfx",MagicNumber,0,Lime);
OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,Bid+StopLoss*point,Bid-TakeProfit*point,"misterfx",MagicNumber,0,Red);
}
} else {
ManageTrades();
}
return(0);
}
void ManageTrades()
{
for (int i = 0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if (OrderType() == OP_BUY)
{
if (Bid-OrderOpenPrice() > TrailingStop * point)
{
if (OrderStopLoss() < Bid-TrailingStop * point || OrderStopLoss() == 0)
{
ModifyStopLoss(Bid-TrailingStop * point);
}
}
}
if (OrderType() == OP_SELL)
{
if (OrderOpenPrice()-Ask > TrailingStop * point)
{
if (OrderStopLoss() < Ask+TrailingStop * point || OrderStopLoss() == 0)
{
ModifyStopLoss(Ask+TrailingStop * point);
}
}
}
}
}
}
return(0);
}
void ModifyStopLoss(double newStopLoss)
{
OrderModify(OrderTicket(), OrderOpenPrice(), newStopLoss, OrderTakeProfit(), 0, CLR_NONE);
return(0);
}
Comments