double profitTotal() { double sum=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; sum+=OrderProfit(); } return(sum); } //-------------------------------------------- int CalculateBuyOrders() { int buys=0,sells=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_BUY && OrderSymbol()==symbol && OrderMagicNumber()==iMagic) buys++; } return(buys); } int CalculateSellOrders() { int buys=0,sells=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_SELL && OrderSymbol()==symbol && OrderMagicNumber()==iMagic) sells++; } return(sells); } void CO_PL() { int l_ord_total_0 = 0; int l_cmd_4 = 0; int l_magic_8 = 0; int l_ticket_12 = 0; double l_ord_takeprofit_16 = 0; double l_ord_stoploss_24 = 0; string l_symbol_32 = 0; int l_pos_40 = 0; double ld_44 = 0; double ld_52 = 0; double l_ord_open_price_60 = 0; double ld_68 = 0; double ld_72 = MarketInfo(Symbol(), MODE_SPREAD); double ld_76 = 1 / Point; l_ord_total_0 = OrdersTotal(); if (l_ord_total_0 == 0) return (0); while (l_pos_40 < l_ord_total_0) { if (OrderSelect(l_pos_40, SELECT_BY_POS) == TRUE) { l_magic_8 = OrderMagicNumber(); if (l_magic_8 == Magic_Number) { l_symbol_32 = OrderSymbol(); if (l_symbol_32 == Symbol()) { l_ord_takeprofit_16 = OrderTakeProfit(); l_ord_stoploss_24 = OrderStopLoss(); if (l_ord_takeprofit_16 == 0.0 && l_ord_stoploss_24 == 0.0) { l_ord_open_price_60 = OrderOpenPrice(); l_cmd_4 = OrderType(); l_ticket_12 = OrderTicket(); ld_68 = ld_72 * Point;// switch (l_cmd_4) { case OP_SELL: ld_44 = l_ord_open_price_60 - (Bid + ld_68); break; case OP_BUY: ld_44 = Bid - l_ord_open_price_60; } ld_44 = NormalizeDouble(ld_44, Digits); ld_44 *= ld_76;// if (ld_44 < 0.0) ld_52 = MathAbs(ld_44); if (ld_44 >= TakeProfit) CloseOrder(l_ticket_12); if (ld_52 >= StopLoss) CloseOrder(l_ticket_12); } } } } l_pos_40++; } return (0); } int CloseOrder(int a_ticket_0) { int li_unused_4 = 0; int l_error_8 = 0; int l_cmd_12 = 0; bool l_ord_close_16 = FALSE; if (a_ticket_0 > 0) { if (OrderSelect(a_ticket_0, SELECT_BY_TICKET) == TRUE) { l_cmd_12 = OrderType(); switch (l_cmd_12) { case OP_BUY: l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Bid, 3, Yellow); if (l_ord_close_16 == 0) { l_error_8 = GetLastError(); if (l_error_8 == 129 ) { RefreshRates(); Sleep(10000); l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Bid, 3, Yellow); if (l_ord_close_16 == 0) return (-1); } } case OP_SELL: l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Ask, 3, Blue); if (l_ord_close_16 == 0) { l_error_8 = GetLastError(); if (l_error_8 == 129) { RefreshRates(); Sleep(10000); l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Ask, 3, Blue); if (l_ord_close_16 == 0) return (-1); } } } } } return (0); } extern double Price=1.00000; Spread = MarketInfo(Symbol(), MODE_SPREAD); |
|