trend_manager2





#property copyright "Copyright © 2006, www.easyforexsignals.com"
#property link "paul@easyforexsignals.com"

#define LONGCOLOR DodgerBlue
#define SHORTCOLOR OrangeRed

#define MAGICTM 20070610

extern double TMlots=0.1;

extern int MoveStopAmount = 20;
extern int MoveStopAfterProfitof = 55;

extern int minadxlevel = 20;
extern double minSolarWind = 0.25;
extern double minJuice = 0.001;

extern int StopLoss=50,
Slippage = 3,
TakeProfit=120;

datetime LastTMSignalTime;
extern int MinTimeBetweenSignals = 60;

int init(){
return(0);
}
int deinit(){
return(0);
}

int start()
{
int res= 0;
if(Bars<100 || IsTradeAllowed()==false) return;

CheckTrendManager(); // check trend manager system
CheckForTMClose(); // check for closes on this system
CheckForStopMove(); // move stops on any open trades
}



void CheckForStopMove() {
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;
if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol())
continue;

if(OrderType()==OP_BUY)
{
// move up stops to lock in profit
if ((OrderOpenPrice()-Ask) >= (MoveStopAfterProfitof * Point)) {
OrderModify(OrderTicket(),0,OrderOpenPrice()+
(MoveStopAmount*Point),OrderTakeProfit(),0,Black);
}
}
if(OrderType()==OP_SELL)
{
// move up stops to lock in profit
if ((OrderOpenPrice() - Bid) >= (MoveStopAfterProfitof * Point)) {
OrderModify(OrderTicket(),0,OrderOpenPrice()-
(MoveStopAmount*Point),OrderTakeProfit(),0,Black);
}
}
}
}

void CheckTrendManager() {
if (Time[0]-LastTMSignalTime > MinTimeBetweenSignals) {
double PipsStopLoss, PipsTakeProfit;
double TMbuy = iCustom(Symbol(),Period(), "TrendManagerNT",2, 0);
double TMsell = iCustom(Symbol(),Period(), "TrendManagerNT",3, 0);
int orderresult;

if (TMbuy > 0) {
if (CheckFilters(OP_BUY)==true)
{
PipsStopLoss = Ask-(StopLoss * Point);
PipsTakeProfit = Ask+(TakeProfit * Point);
CloseExisting(OP_SELL);
orderresult =OrderSend(Symbol
(),OP_BUY,TMlots,Ask,Slippage,PipsStopLoss,
PipsTakeProfit,"",MAGICTM,0,Maroon);
Print(Time[0] + "BUY ON TM,order result was :" +
orderresult + "stop:" + PipsStopLoss + ",takeprofit:" +
PipsTakeProfit);
LastTMSignalTime = Time[0];
}
}

if (TMsell > 0){
if (CheckFilters(OP_SELL)==true) {

PipsStopLoss = Bid+(StopLoss * Point);
PipsTakeProfit = Bid-(TakeProfit * Point);

CloseExisting(OP_BUY);
orderresult = OrderSend(Symbol
(),OP_SELL,TMlots,Bid,Slippage,PipsStopLoss,PipsTakeProfit,"",MAGICTM,
0,Green);
Print(Time[0] + "SELL ON TM, order result was :" +
orderresult + "stop:" + PipsStopLoss + ",takeprofit:" +
PipsTakeProfit);
LastTMSignalTime = Time[0];
}
}
}
}

void CheckForTMClose() {

double TMclosesell = iCustom(Symbol(),Period(), "TrendManagerNT",4,
0);
double TMclosebuy = iCustom(Symbol(),Period(), "TrendManagerNT",5,
0);

for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;
if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol())
continue;
//---- just close it
if ((TMclosesell > 0) && (OrderType()==OP_SELL)) {
OrderClose(OrderTicket(),OrderLots
(),Bid,10,Pink);
}
if ((TMclosebuy > 0) && (OrderType()==OP_BUY)) {
OrderClose(OrderTicket(),OrderLots
(),Bid,10,Pink);
}
}

}

// just closes any existing positions
void CloseExisting(int OrderTyp)
{

for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;
if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol())
continue;
//---- just close it std slippage
if(OrderType()==OrderTyp)
{
OrderClose(OrderTicket(),OrderLots
(),Bid,10,White);
}
}
}


bool CheckFilters(int OrderTyp) {
return(true);
}



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:




Custom Indicators Used:
TrendManagerNT

Order Management characteristics:
Checks for the total of open orders

It can change open orders parameters, due to possible stepping strategy
It Closes Orders by itself

Other Features: