//+------------------------------------------------------------------+ //| bless_FiFtHeLeMeNt_noTG_1.0.1 | //| Copyright © 2007, FiFtHeLeMeNt | //| fifthelement80@gmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, FiFtHeLeMeNt." #property link "http://www.irxfx.com" extern int MinGS=20; extern int TP=27; extern double lot=0.1; extern int MaxTrades=7; int magic; double lot2; datetime tob,tos; //Time Out Buy & Sell //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int init() { if (Symbol() == "AUDCADm" || Symbol() == "AUDCAD") { magic = 211001; } if (Symbol() == "AUDJPYm" || Symbol() == "AUDJPY") { magic = 211002; } if (Symbol() == "AUDNZDm" || Symbol() == "AUDNZD") { magic = 211003; } if (Symbol() == "AUDUSDm" || Symbol() == "AUDUSD") { magic = 211004; } if (Symbol() == "CHFJPYm" || Symbol() == "CHFJPY") { magic = 211005; } if (Symbol() == "EURAUDm" || Symbol() == "EURAUD") { magic = 211006; } if (Symbol() == "EURCADm" || Symbol() == "EURCAD") { magic = 211007; } if (Symbol() == "EURCHFm" || Symbol() == "EURCHF") { magic = 211008; } if (Symbol() == "EURGBPm" || Symbol() == "EURGBP") { magic = 211009; } if (Symbol() == "EURJPYm" || Symbol() == "EURJPY") { magic = 211010; } if (Symbol() == "EURUSDm" || Symbol() == "EURUSD") { magic = 211011; } if (Symbol() == "GBPCHFm" || Symbol() == "GBPCHF") { magic = 211012; } if (Symbol() == "GBPJPYm" || Symbol() == "GBPJPY") { magic = 211013; } if (Symbol() == "GBPUSDm" || Symbol() == "GBPUSD") { magic = 211014; } if (Symbol() == "NZDJPYm" || Symbol() == "NZDJPY") { magic = 211015; } if (Symbol() == "NZDUSDm" || Symbol() == "NZDUSD") { magic = 211016; } if (Symbol() == "USDCHFm" || Symbol() == "USDCHF") { magic = 211017; } if (Symbol() == "USDJPYm" || Symbol() == "USDJPY") { magic = 211018; } if (Symbol() == "USDCADm" || Symbol() == "USDCAD") { magic = 211019; } if (magic == 0) { magic = 211999; } return (0); return(0); } void OpenBuy() { int ticket,err; if (!GlobalVariableCheck("InTrade")) { GlobalVariableSet("InTrade", CurTime()); // set lock indicator ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,1,0,Ask+TP*Point,"EA Order",magic,0,Blue); GlobalVariableDel("InTrade"); // clear lock indicator } } void OpenSell() { int ticket,err; if (!GlobalVariableCheck("InTrade")) { GlobalVariableSet("InTrade", CurTime()); // set lock indicator ticket = OrderSend(Symbol(),OP_SELL,lot2,Bid,1,0,Bid-TP*Point,"EA Order",magic,0,Red); GlobalVariableDel("InTrade"); // clear lock indicator } } void ManageBuy() { int lasttradetime = 0; double lastopenprice=0; double maxlots = 0; double lasttp=0; int lastordertype=-1; int lastorderticket=0; int y=0; for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY)) { continue; } if (OrderOpenTime() > lasttradetime) { lasttradetime = OrderOpenTime(); lastopenprice = OrderOpenPrice(); lastordertype=OrderType(); lastorderticket=OrderTicket(); lasttp=OrderTakeProfit(); } if (OrderLots() > maxlots) { maxlots = OrderLots(); } } int lvl=MathLog(maxlots/lot)/MathLog(2)+1; if (lvl<0) lvl=0; lot2=lot*MathPow(2,lvl); if (lvl==0) OpenBuy(); if ((lastopenprice-Ask>MinGS*Point) && (lvl<MaxTrades)) { OpenBuy(); return(0); } /////////// TP /* double sumlots=0; double sump=0; double avgp=0; for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY)) { continue; } sumlots=sumlots+OrderLots(); sump=OrderOpenPrice()*OrderLots()+sump; } if (sumlots>0) { avgp=NormalizeDouble(sump/sumlots,Digits); double tpp=NormalizeDouble(TP/10/sumlots*Point+avgp,Digits); for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (OrderTakeProfit()==tpp)) { continue; } OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpp,0,Red); } } */ for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (OrderTakeProfit()==lasttp) || (lasttp==0)) { continue; } OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),lasttp,0,Blue); } } void ManageSell() { int lasttradetime = 0; double lastopenprice=0; double maxlots = 0; double lasttp=0; int lastordertype=-1; int lastorderticket=0; int y=0; for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL)) { continue; } if (OrderOpenTime() > lasttradetime) { lasttradetime = OrderOpenTime(); lastopenprice = OrderOpenPrice(); lastordertype=OrderType(); lastorderticket=OrderTicket(); lasttp=OrderTakeProfit(); } if (OrderLots() > maxlots) { maxlots = OrderLots(); } } int lvl=MathLog(maxlots/lot)/MathLog(2)+1; if (lvl<0) lvl=0; lot2=lot*MathPow(2,lvl); if (lvl==0) OpenSell(); if ((Bid-lastopenprice>MinGS*Point) && (lastopenprice>0) && (lvl<MaxTrades)) { OpenSell(); return(0); } /////////// TP /* double sumlots=0; double sump=0; double avgp=0; for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL)) { continue; } sumlots=sumlots+OrderLots(); sump=OrderOpenPrice()*OrderLots()+sump; } if (sumlots>0) { avgp=NormalizeDouble(sump/sumlots,Digits); double tpp=NormalizeDouble(-TP/10/sumlots*Point+avgp,Digits); for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (OrderTakeProfit()==tpp)) { continue; } OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpp,0,Red); } } */ for (y = 0; y < OrdersTotal(); y++) { OrderSelect (y, SELECT_BY_POS, MODE_TRADES); if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (OrderTakeProfit()==lasttp) || (lasttp==0)) { continue; } OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),lasttp,0,Red); } } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- ManageBuy(); ManageSell(); //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
It automatically opens orders when conditions are reached
Checks for the total of open orders
It can change open orders parameters, due to possible stepping strategy
Other Features: