//|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //| Close //| Last Updated 12-12-2006 10:00pm //|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ #define NL "\n" extern int ProfitTarget = 25; // closes all orders once Float hits this $ amount extern bool CloseAllNow = false; // closes all orders now extern bool CloseProfitableTradesOnly = false; // closes only profitable trades extern double ProftableTradeAmount = 1; // Only trades above this amount close out extern bool ClosePendingOnly = false; // closes pending orders only extern bool UseAlerts = false; //+-------------+ //| Custom init | //|-------------+ int init() { } //+----------------+ //| Custom DE-init | //+----------------+ int deinit() { } //+------------------------------------------------------------------------+ //| Closes everything //+------------------------------------------------------------------------+ void CloseAll() { int i; bool result = false; while(OrdersTotal()>0) { // Close open positions first to lock in profit/loss for(i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i, SELECT_BY_POS)==false) continue; result = false; if ( OrderType() == OP_BUY) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 15, Red ); if ( OrderType() == OP_SELL) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 15, Red ); if (UseAlerts) PlaySound("alert.wav"); } for(i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i, SELECT_BY_POS)==false) continue; result = false; if ( OrderType()== OP_BUYSTOP) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_SELLSTOP) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_BUYLIMIT) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_SELLLIMIT) result = OrderDelete( OrderTicket() ); if (UseAlerts) PlaySound("alert.wav"); } Sleep(1000); } } //+------------------------------------------------------------------------+ //| cancels all orders that are in profit //+------------------------------------------------------------------------+ void CloseAllinProfit() { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); bool result = false; if ( OrderType() == OP_BUY && OrderProfit()+OrderSwap()>ProftableTradeAmount) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); if ( OrderType() == OP_SELL && OrderProfit()+OrderSwap()>ProftableTradeAmount) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); if (UseAlerts) PlaySound("alert.wav"); } return; } //+------------------------------------------------------------------------+ //| cancels all pending orders //+------------------------------------------------------------------------+ void ClosePendingOrdersOnly() { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); bool result = false; if ( OrderType()== OP_BUYSTOP) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_SELLSTOP) result = OrderDelete( OrderTicket() ); } return; } //+-----------+ //| Main | //+-----------+ int start() { int OrdersBUY; int OrdersSELL; double BuyLots, SellLots, BuyProfit, SellProfit; //+------------------------------------------------------------------+ // Determine last order price | //-------------------------------------------------------------------+ for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderType()==OP_BUY) { OrdersBUY++; BuyLots += OrderLots(); BuyProfit += OrderProfit() + OrderCommission() + OrderSwap(); } if(OrderType()==OP_SELL) { OrdersSELL++; SellLots += OrderLots(); SellProfit += OrderProfit() + OrderCommission() + OrderSwap(); } } if(CloseAllNow) CloseAll(); if(CloseProfitableTradesOnly) CloseAllinProfit(); if(BuyProfit+SellProfit >= ProfitTarget) CloseAll(); if(ClosePendingOnly) ClosePendingOrdersOnly(); Comment(" Comments Last Update 12-12-2006 10:00pm", NL, " Buys ", OrdersBUY, NL, " BuyLots ", BuyLots, NL, " Sells ", OrdersSELL, NL, " SellLots ", SellLots, NL, " Balance ", AccountBalance(), NL, " Equity ", AccountEquity(), NL, " Margin ", AccountMargin(), NL, " MarginPercent ", MathRound((AccountEquity()/AccountMargin())*100), NL, " Current Time is ",TimeHour(CurTime()),":",TimeMinute(CurTime()),".",TimeSeconds(CurTime())); } // start()
أدوات الموضوع | |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
طلب أكسبرت فضلا | nour2008 | منتدى المؤشرات و الاكسبرتات | 11 | 02 - 05 - 2016 06:14 PM |
أرجو التكرم ببرمجة خبير ادارة صفقات بالمواصفات التالية | daherxdaher | منتدى المؤشرات و الاكسبرتات | 8 | 27 - 08 - 2014 03:19 PM |
طلب أكسبرت بسيط | nour2008 | منتدى المؤشرات و الاكسبرتات | 1 | 09 - 02 - 2013 12:16 PM |
مطلوب من مشرفنا سفارى كود تحديد صفقات البيع و صفقات الشراء على حدة | foreeex | منتدى المؤشرات و الاكسبرتات | 0 | 19 - 05 - 2011 03:15 AM |