Code:
#property copyright "CJE 2011"
extern int TP = 100;
extern int SL = 100;
extern int Direction = 1;
extern double Lots = 0.01;
extern int mm = 0;
extern int MagicNumber = 962245;
//int ticket;
double dTarget = 0;
double dReverse = 0;a
int iTradeDir = 0;
int iLosses = 1;
int slippage = 3;
int ticket = 0;
double lotsi = 0;
double mylotsi = 0;
bool bInTrade = FALSE;
string CurrentBuild= "v1.02";
int init(){return(0);}
int deinit(){return(0);}
int start()
{
int cnt = 0;
//1. Money management & trade sizing
if (mm != 0)
lotsi = MathRound(AccountBalance() * 0.0002) / 100;
else
lotsi = Lots;
mylotsi = .001;
if (mylotsi > 100) mylotsi = 100;
if (bInTrade == FALSE)
{
if (iTradeDir == 0)
{
dTarget = Bid + TP * Point * iLosses;
dReverse = Bid - SL * Point * iLosses;
ticket = OrderSend(Symbol(), OP_BUY, mylotsi, Ask, slippage, 0, 0, NULL, MagicNumber, 0, White);
bInTrade = TRUE;
Alert("Open #",ticket," InTrade = ",bInTrade);
ObjectCreate("Target", OBJ_HLINE, 0, 0, dTarget);
ObjectCreate("Reverse", OBJ_HLINE, 0, 0, dReverse);
}
else
{
dTarget = Ask - TP * Point * iLosses;
dReverse = Ask + SL * Point * iLosses;
ticket = OrderSend(Symbol(), OP_SELL, mylotsi, Bid, slippage, 0, 0, NULL, MagicNumber, 0, Red);
bInTrade = TRUE;
Alert("Open #",ticket," InTrade = ",bInTrade);
ObjectCreate("Target", OBJ_HLINE, 0, 0, dTarget);
ObjectCreate("Reverse", OBJ_HLINE, 0, 0, dReverse);
iTradeDir = 1;
}
}
if (bInTrade == TRUE)
{
if (iTradeDir == 0)
{
if (Bid <= dReverse)
{
OrderClose(ticket, OrderLots(), OrderClosePrice(), slippage, White);
bInTrade = FALSE;
Alert("Close #",ticket," InTrade = ",bInTrade);
ObjectDelete("Target");
ObjectDelete("Reverse");
iLosses ++;
iTradeDir = 1;
}
if (Bid >= dTarget)
{
OrderClose(ticket, OrderLots(), OrderClosePrice(), slippage, White);
bInTrade = FALSE;
Alert("Close #",ticket," InTrade = ",bInTrade);
ObjectDelete("Target");
ObjectDelete("Reverse");
iLosses = 1;
iTradeDir = 0;
}
}
}
if (bInTrade == TRUE)
{
if (iTradeDir == 1)
{
if (Ask >= dReverse)
{
OrderClose(ticket, OrderLots(), OrderClosePrice(), slippage, Red);
bInTrade = FALSE;
Alert("Close #",ticket," InTrade = ",bInTrade);
ObjectDelete("Target");
ObjectDelete("Reverse");
iLosses ++;
iTradeDir = 0;
}
if (Ask <= dTarget)
{
OrderClose(ticket, OrderLots(), OrderClosePrice(), slippage, Red);
bInTrade = FALSE;
Alert("Close #",ticket," InTrade = ",bInTrade);
ObjectDelete("Target");
ObjectDelete("Reverse");
iLosses = 1;
iTradeDir = 1;
}
}}
Comment(
" Direction = ", iTradeDir,
"\nLots = ", mylotsi,
" Losses = ", iLosses,
"\nBuild: ", CurrentBuild);
return(0);
}