//+------------------------------------------------------------------+ //| Trending and Reversal.mq4 | //| Copyright © 2008, Henky Mailis | //| http://www.h3nkymcnv.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, Henky Mailis" #property link "http://www.h3nkymcnv.com" //---- extern double Lots=1.0; extern double Bands=100.0; extern double TakeProfit=150.0; extern double InitialStop=50.0; extern double TrailingStop=50.0; //---- int jmlorder=0; int itung=0; int slip=0; double slnyo=0.0; double buka=0; double stop=0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- jmlorder=0; for(itung=0;itung<OrdersTotal();itung++) { OrderSelect(itung,SELECT_BY_POS,MODE_TRADES); //---- if(OrderSymbol()==Symbol()) jmlorder++; } //---- if(jmlorder==0) { if(iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)<iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) { OrderSend(Symbol(),OP_SELL,Lots,Bid,slip,Ask+InitialStop*Point,Ask-TakeProfit*Point,NULL,0,0,Blue); return(0); } if(iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)>iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) { OrderSend(Symbol(),OP_BUY,Lots,Ask,slip,Bid-InitialStop*Point,Bid+TakeProfit*Point,NULL,0,0,Red); return(0); } } //---- buka=0; stop=0; if(jmlorder==1) { for(itung=OrdersTotal();itung>=0;itung--) { OrderSelect(itung,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELL) { buka=OrderStopLoss(); stop=OrderOpenPrice(); OrderSend(Symbol(),OP_BUYSTOP,Lots,buka,slip,stop,buka+TakeProfit*Point,NULL,0,0,Orange); return(0); } if(OrderType()==OP_BUY) { buka=OrderStopLoss(); stop=OrderOpenPrice(); OrderSend(Symbol(),OP_SELLSTOP,Lots,buka,slip,stop,buka-TakeProfit*Point,NULL,0,0,Indigo); return(0); } } } } //---- if we have opened positions we take care of them slnyo=0; for(itung=OrdersTotal();itung>=0;itung--) { OrderSelect(itung,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELL) { slnyo=OrderStopLoss(); if(TrailingStop>0) if(OrderOpenPrice()-Ask>=TrailingStop*Point) if(OrderStopLoss()>(Ask+Point*TrailingStop)) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderClosePrice()+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point,0,Aqua); return(0); } } if(OrderType()==OP_BUY) { slnyo=OrderStopLoss(); if(TrailingStop>0) if(Bid-OrderOpenPrice()>=TrailingStop*Point) if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderClosePrice()-Point*TrailingStop,OrderClosePrice()+TakeProfit*Point,0,DeepPink); return(0); } } } } //---- for(itung=OrdersTotal();itung>=0;itung--) { OrderSelect(itung,SELECT_BY_POS,MODE_TRADES); //---- if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUYSTOP) { if(OrderOpenPrice()!=slnyo) { OrderModify(OrderTicket(),slnyo,slnyo-Point*InitialStop,slnyo+TakeProfit*Point,0,Orange); return(0); } } if(OrderType()==OP_SELLSTOP) { if(OrderOpenPrice()!=slnyo) { OrderModify(OrderTicket(),slnyo,slnyo+Point*InitialStop,slnyo-TakeProfit*Point,0,Indigo); return(0); } } } } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
MACD Histogram
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It can change open orders parameters, due to possible stepping strategy
Other Features: