//+------------------------------------------------------------------+ //| BreakEven1.0.mq4 | //| Copyright © 2011, LHFC | //| http://www.lhfc.it | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, LHFC" #property link "http://www.lhfc.it" #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int start() { //---- indicators //---- double be=0; double op=0; int ty=0; double ol=0; double swaps=0; double numeratore=0; double denominatore=0; double ols=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && (OrderType()==OP_SELL || OrderType()==OP_BUY)) { op=OrderOpenPrice(); ty=OrderType(); ol=OrderLots(); if(ty==OP_BUY) { ol=ol; op=op;//+MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT); }else if(ty==OP_SELL) { ols=ols+ol; ol=-ol; op=op;//+MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT); } numeratore=numeratore+ol*op; denominatore=denominatore+ol; swaps=swaps+OrderSwap(); } } // if(MathExp(denominatore)!=1.0){ if(denominatore!=0.0){ //double breakeven=numeratore/denominatore+(swaps*MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_SPREAD)); double breakeven=numeratore/denominatore+(ols*MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_SPREAD)/denominatore); //breakeven=NormalizeDouble(breakeven,MarketInfo(Symbol(),MODE_DIGITS)); if(numeratore>0){ breakeven=MathCeil(breakeven/MarketInfo(Symbol(),MODE_POINT))*MarketInfo(Symbol(),MODE_POINT); }else if(numeratore<0){ breakeven=MathFloor(breakeven/MarketInfo(Symbol(),MODE_POINT))*MarketInfo(Symbol(),MODE_POINT); } //Comment("Break Even="+breakeven+" "+numeratore/denominatore+" "+ols+" "+MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_SPREAD)); Comment("Break Even="+breakeven+" Total Rollover="+(swaps));//*MarketInfo(Symbol(),MODE_POINT))); ObjectCreate("BreakEven",OBJ_HLINE,0,0,breakeven); ObjectSet("BreakEven",OBJPROP_WIDTH,1); ObjectSet("BreakEven",OBJPROP_COLOR,DodgerBlue); }else{ ObjectDelete("BreakEven"); } return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- ObjectDelete("BreakEven"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int init() { //---- //---- Print("BreakEven Indicator by LHFC, www.lhfc.it"); return(0); } //+------------------------------------------------------------------+