serhan Posted February 9, 2010 Report Share Posted February 9, 2010 hi... is there any script or EA, open trades when next candle appears??? Quote Link to comment Share on other sites More sharing options...
⭐ deadsoul Posted February 10, 2010 Report Share Posted February 10, 2010 Re: Once per candle try this one... //+------------------------------------------------------------------+ //| Straddle_Close-Open_v.2.mq4| //+------------------------------------------------------------------+ #property copyright "Free" #property link "For free help contact: [email][email protected][/email]" //----------------- #include <stdlib.mqh> #include <stderror.mqh> #include <WinUser32.mqh> // Needed to MessageBox function //------------------------- extern int Slippage=3; extern int TimeFrame = 0;//0= current, H1=60, H4=240, Daily=1440 //------------------------- extern int MagicNumber_1 = 5614061; extern int MagicNumber_2 = 5614062; extern int MagicNumber_3 = 5614063; //------------------------- extern double Lots_1 = 0.03; extern double Lots_2 = 0.02; extern double Lots_3 = 0.01; //----------------------- extern int Pip_To_Buy = 5; extern int Pip_To_Sell = 5; //---------------------------------------- extern int Candle_Range = 40; //---------------------------------------- extern bool Time_Control = false; extern string Start_Time = "00:00"; extern string End_Time = "23:00"; //--------------------------- extern bool Delete_All_Pendings = true; extern bool Close_All_Orders = true; //-------------------------------------- extern int StopLoss_Buy_1 = 30; extern int StopLoss_Buy_2 = 30; extern int StopLoss_Buy_3 = 30; //-------------------------------------- extern int StopLoss_Sell_1 = 30; extern int StopLoss_Sell_2 = 30; extern int StopLoss_Sell_3 = 30; //-------------------------------------- extern int TakeProfit_Buy_1 = 10; extern int TakeProfit_Buy_2 = 20; extern int TakeProfit_Buy_3 = 60; //-------------------------------------- extern int TakeProfit_Sell_1 = 10; extern int TakeProfit_Sell_2 = 20; extern int TakeProfit_Sell_3 = 60; //---------------------------- extern bool TrailingAlls_1 = true; extern int Trail_1 = 10; extern int TrailStart_1 = 1; //---------------------------- extern bool TrailingAlls_2 = true; extern int Trail_2 = 15; extern int TrailStart_2 = 1; //---------------------------- extern bool TrailingAlls_3 = true; extern int Trail_3 = 25; extern int TrailStart_3 = 1; //-------------------------- double Poin; //to fix the 6 Digit Forex Quotes issue for MetaTrader Expert Advisors //---------------------------------- string EA_Name = "Straddle"; //-------------------------------------- datetime timeprev=0; static datetime lastbar = 0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //Initialization to Check for unconventional Point digits number if (Point == 0.00001) Poin = 0.0001; //6 digits else if (Point == 0.001) Poin = 0.01; //3 digits (for Yen based pairs) else Poin = Point; //Normal for 5 & 3 Digit Forex Quotes lastbar = Time[0];//iTime(Symbol(),PERIOD_H4,0); //Time[0]; return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //-------------------------------------------------- //---- exit if chart period is smaller than 1 hour if(Period() < 60 ) { Alert("Error - Chart period is smaller than 1 hour. Use with H1, H4 or D1."); return(-1); // then exit } //-------------------------------------------------- //---- exit if chart period is greater than 1 day if(Period() > 1440) { Alert("Error - Chart period is greater than 1 day. Use with H1, H4 or D1"); return(-1); // then exit } //+------------------------------------------------------------------+ //| checking trade contexts | //+------------------------------------------------------------------+ int TradeAllow = Is_Trade_Allowed(); if(TradeAllow < 0) { return(-1); } if(TradeAllow == 0) { RefreshRates(); } //---------------------------- Comment(CountLongs()," Buy",", ",CountShorts()," Sell"," order(s)"," Active." );// Comment to the window corner. //+------------------------------------------------------------------+ //| Function calls | //+------------------------------------------------------------------+ if (TrailingAlls_1) Trailingalls_1(TrailStart_1, Trail_1); //------------------------------------------ if (TrailingAlls_2) Trailingalls_2(TrailStart_2, Trail_2); //------------------------------------------ if (TrailingAlls_3) Trailingalls_3(TrailStart_3, Trail_3); //------------------------------------------------------------------+ //| Working only at a new candle rather than at every tick | //+------------------------------------------------------------------+ if(timeprev==Time[0])//Time[0] is time of the cuurent bar return(0); timeprev=Time[0]; //+------------------------------------------------------------------+ //| deleting unnecessary pending orders | //+------------------------------------------------------------------+ if(Delete_All_Pendings== true) { DeletePendings(); } //+------------------------------------------------------------------+ //| Closing all open orders | //+------------------------------------------------------------------+ if(Close_All_Orders== true) { CloseAll(); } //+------------------------------------------------------------------+ //| indicators signals | //+------------------------------------------------------------------+ double a_Open = iOpen(NULL, TimeFrame, 0); double c_Open = iOpen(NULL, TimeFrame, 1); double c_Close = iClose(NULL, TimeFrame, 1); //double Spread = MarketInfo(Symbol(), MODE_SPREAD); //TakeProfit_Buy_1 = TakeProfit_Buy_1 + NormalizeDouble(Spread,Digits); //TakeProfit_Buy_2 = TakeProfit_Buy_2 + NormalizeDouble(Spread,Digits); //TakeProfit_Buy_3 = TakeProfit_Buy_3 + NormalizeDouble(Spread,Digits); ///+------------------------------------------------------------------+ //| Lots | //+------------------------------------------------------------------+ //------ get broker's min/max double Min_Lots = MarketInfo(Symbol(), MODE_MINLOT); double Max_Lots = MarketInfo(Symbol(), MODE_MAXLOT); //------------------------------------ if (Lots_1 < Min_Lots) Lots_1=Min_Lots; if (Lots_1 > Max_Lots) Lots_1=Max_Lots; if (Lots_2 < Min_Lots) Lots_2=Min_Lots; if (Lots_2 > Max_Lots) Lots_2=Max_Lots; if (Lots_3 < Min_Lots) Lots_3=Min_Lots; if (Lots_3 > Max_Lots) Lots_3=Max_Lots; //+------------------------------------------------------------------+ //| placing trades | //+------------------------------------------------------------------+ if(Time_Control == false || (Time_Control == true && CurTime()>=StrToTime(Start_Time)&& CurTime()<=StrToTime(End_Time))) { //-------------Placing Buystops - Candle Bullish -------------------- if(c_Close > c_Open && NormalizeDouble(c_Close - c_Open,Digits) >= Candle_Range*Poin) if(a_Open < c_Close + Pip_To_Buy*Poin) { OrderSend(Symbol(),OP_BUYSTOP,Lots_1, NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_1), TakeLong(NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_1), EA_Name,MagicNumber_1,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,Lots_2, NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_2), TakeLong(NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_2), EA_Name,MagicNumber_2,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,Lots_3, NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_3), TakeLong(NormalizeDouble(c_Close,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_3), EA_Name,MagicNumber_3,0,Blue); //-------------Placing Sellstops - Candle Bullish -------------------- OrderSend(Symbol(),OP_SELLSTOP, Lots_1, NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_1), TakeShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_1), EA_Name,MagicNumber_1,0,Red); OrderSend(Symbol(),OP_SELLSTOP, Lots_2, NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_2), TakeShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_2), EA_Name,MagicNumber_2,0,Red); OrderSend(Symbol(),OP_SELLSTOP, Lots_3, NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_3), TakeShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_3), EA_Name,MagicNumber_3,0,Red); } //-------------Placing Buystops - Candle Bearish -------------------- if(c_Close<c_Open && NormalizeDouble(c_Open - c_Close,Digits) >= Candle_Range*Poin) if(a_Open > c_Close - Pip_To_Sell*Poin) { OrderSend(Symbol(),OP_BUYSTOP,Lots_1, NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_1), TakeLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_1), EA_Name,MagicNumber_1,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,Lots_2, NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_2), TakeLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_2), EA_Name,MagicNumber_2,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,Lots_3, NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_3), TakeLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_3), EA_Name,MagicNumber_3,0,Blue); //-------------Placing Sellstops - Candle Bearish -------------------- OrderSend(Symbol(),OP_SELLSTOP, Lots_1, NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_1), TakeShrt(NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_1), EA_Name,MagicNumber_1,0,Red); OrderSend(Symbol(),OP_SELLSTOP, Lots_2, NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_2), TakeShrt(NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_2), EA_Name,MagicNumber_2,0,Red); OrderSend(Symbol(),OP_SELLSTOP, Lots_3, NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_3), TakeShrt(NormalizeDouble(c_Close,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_3), EA_Name,MagicNumber_3,0,Red); } //-------------Placing Market Buys - Candle Bullish -------------------- if(c_Close > c_Open && NormalizeDouble(c_Close - c_Open,Digits) >= Candle_Range*Poin) if(a_Open >= c_Close + Pip_To_Buy*Poin) { OrderSend(Symbol(),OP_BUY,Lots_1,Ask,Slippage,StopLong(Bid,StopLoss_Buy_1), TakeLong(Bid,TakeProfit_Buy_1), EA_Name,MagicNumber_1,0,Blue); OrderSend(Symbol(),OP_BUY,Lots_2,Ask,Slippage,StopLong(Bid,StopLoss_Buy_2), TakeLong(Bid,TakeProfit_Buy_2), EA_Name,MagicNumber_2,0,Blue); OrderSend(Symbol(),OP_BUY,Lots_3,Ask,Slippage,StopLong(Bid,StopLoss_Buy_3), TakeLong(Bid,TakeProfit_Buy_3), EA_Name,MagicNumber_3,0,Blue); //-------------Placing Sellstops - Candle Bullish -------------------- OrderSend(Symbol(),OP_SELLSTOP, Lots_1, NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_1), TakeShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_1), EA_Name,MagicNumber_1,0,Red); OrderSend(Symbol(),OP_SELLSTOP, Lots_2, NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_2), TakeShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_2), EA_Name,MagicNumber_2,0,Red); OrderSend(Symbol(),OP_SELLSTOP, Lots_3, NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin, Slippage, StopShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,StopLoss_Sell_3), TakeShrt(NormalizeDouble(c_Open,Digits) - Pip_To_Sell*Poin,TakeProfit_Sell_3), EA_Name,MagicNumber_3,0,Red); } //-------------Placing Buystops - Candle Bearish -------------------- if(c_Close<c_Open && NormalizeDouble(c_Open - c_Close,Digits) >= Candle_Range*Poin) if(a_Open <= c_Close - Pip_To_Sell*Poin) { OrderSend(Symbol(),OP_BUYSTOP,Lots_1, NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_1), TakeLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_1), EA_Name,MagicNumber_1,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,Lots_2, NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_2), TakeLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_2), EA_Name,MagicNumber_2,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,Lots_3, NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin, Slippage, StopLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,StopLoss_Buy_3), TakeLong(NormalizeDouble(c_Open,Digits) + Pip_To_Buy*Poin,TakeProfit_Buy_3), EA_Name,MagicNumber_3,0,Blue); //-------------Placing Market Sells - Candle Bearish -------------------- OrderSend(Symbol(),OP_SELL, Lots_1,Bid,Slippage,StopShrt(Ask,StopLoss_Sell_1), TakeShrt(Ask,TakeProfit_Sell_1),EA_Name,MagicNumber_1,0,Red); OrderSend(Symbol(),OP_SELL, Lots_2,Bid,Slippage,StopShrt(Ask,StopLoss_Sell_2), TakeShrt(Ask,TakeProfit_Sell_2),EA_Name,MagicNumber_2,0,Red); OrderSend(Symbol(),OP_SELL, Lots_3,Bid,Slippage,StopShrt(Ask,StopLoss_Sell_3), TakeShrt(Ask,TakeProfit_Sell_3),EA_Name,MagicNumber_3,0,Red); } } //--------------------------------- return(0); } //End of Start function //+------------------------------------------------------------------+ //| checking trade contexts | //+------------------------------------------------------------------+ int Is_Trade_Allowed(int MaxWaiting_sec = 30) { if(!IsTradeAllowed()) { int StartWaitingTime = GetTickCount(); Print("Trade context is busy! Wait until it is free..."); while(true) { if(IsStopped()) { Print("The expert was terminated by the user!"); return(-1); } if(GetTickCount() - StartWaitingTime > MaxWaiting_sec * 1000) { Print("The waiting limit exceeded (" + MaxWaiting_sec + " ???.)!"); return(-2); } if(IsTradeAllowed()) { Print("Trade context has become free!"); return(0); } } } else { return(1); } } //+------------------------------------------------------------------+ //| modifying orders trailing stop 1 | //+------------------------------------------------------------------+ void Trailingalls_1(int start,int stop) { if(stop==0) return; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=MagicNumber_1) continue; if(TrailingAlls_1== false) continue; if(start==0) continue; if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==MagicNumber_1) if(TrailingAlls_1== true) if(start>0) { if(OrderType()==OP_BUY) { double Long_profit=NormalizeDouble((Ask-OrderOpenPrice())/Poin,0); double Long_stopcal=NormalizeDouble(Ask,Digits)-(stop*Poin); double Long_stoptrade=OrderStopLoss(); if(Long_profit<=start) continue; if(Long_stopcal<=Long_stoptrade) continue; if(Long_profit>start) if(Long_stoptrade==0||(Long_stoptrade!=0 && Long_stopcal>Long_stoptrade)) { OrderModify(OrderTicket(),OrderOpenPrice(),Long_stopcal,OrderTakeProfit(),0,Blue); Print( "Buy order 1 trailing stop moved to : ", OrderStopLoss()); } } if(OrderType()==OP_SELL) { double Short_profit=NormalizeDouble((OrderOpenPrice()-Bid)/Poin,0); double Short_stopcal=NormalizeDouble(Bid,Digits)+(stop*Poin); double Short_stoptrade=OrderStopLoss(); if(Short_profit<=start) continue; if(Short_stopcal>=Short_stoptrade) continue; if(Short_profit>start) if(Short_stoptrade==0||(Short_stoptrade!=0 && Short_stopcal<Short_stoptrade)) { OrderModify(OrderTicket(),OrderOpenPrice(),Short_stopcal,OrderTakeProfit(),0,Red); Print( "Sell order 1 trailing stop moved to : ", OrderStopLoss()); } } } } } //+------------------------------------------------------------------+ //| modifying orders trailing stop 2 | //+------------------------------------------------------------------+ void Trailingalls_2(int start,int stop) { if(stop==0) return; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=MagicNumber_2) continue; if(TrailingAlls_2== false) continue; if(start==0) continue; if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==MagicNumber_2) if(TrailingAlls_2== true) if(start>0) { if(OrderType()==OP_BUY) { double Long_profit=NormalizeDouble((Ask-OrderOpenPrice())/Poin,0); double Long_stopcal=NormalizeDouble(Ask,Digits)-(stop*Poin); double Long_stoptrade=OrderStopLoss(); if(Long_profit<=start) continue; if(Long_stopcal<=Long_stoptrade) continue; if(Long_profit>start) if(Long_stoptrade==0||(Long_stoptrade!=0 && Long_stopcal>Long_stoptrade)) { OrderModify(OrderTicket(),OrderOpenPrice(),Long_stopcal,OrderTakeProfit(),0,Blue); Print( "Buy order 2 trailing stop moved to : ", OrderStopLoss()); } } if(OrderType()==OP_SELL) { double Short_profit=NormalizeDouble((OrderOpenPrice()-Bid)/Poin,0); double Short_stopcal=NormalizeDouble(Bid,Digits)+(stop*Poin); double Short_stoptrade=OrderStopLoss(); if(Short_profit<=start) continue; if(Short_stopcal>=Short_stoptrade) continue; if(Short_profit>start) if(Short_stoptrade==0||(Short_stoptrade!=0 && Short_stopcal<Short_stoptrade)) { OrderModify(OrderTicket(),OrderOpenPrice(),Short_stopcal,OrderTakeProfit(),0,Red); Print( "Sell order 2 trailing stop moved to : ", OrderStopLoss()); } } } } } //+------------------------------------------------------------------+ //| modifying orders trailing stop 3 | //+------------------------------------------------------------------+ void Trailingalls_3(int start,int stop) { if(stop==0) return; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=MagicNumber_3) continue; if(TrailingAlls_3== false) continue; if(start==0) continue; if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==MagicNumber_3) if(TrailingAlls_3== true) if(start>0) { if(OrderType()==OP_BUY) { double Long_profit=NormalizeDouble((Ask-OrderOpenPrice())/Poin,0); double Long_stopcal=NormalizeDouble(Ask,Digits)-(stop*Poin); double Long_stoptrade=OrderStopLoss(); if(Long_profit<=start) continue; if(Long_stopcal<=Long_stoptrade) continue; if(Long_profit>start) if(Long_stoptrade==0||(Long_stoptrade!=0 && Long_stopcal>Long_stoptrade)) { OrderModify(OrderTicket(),OrderOpenPrice(),Long_stopcal,OrderTakeProfit(),0,Blue); Print( "Buy order 3 trailing stop moved to : ", OrderStopLoss()); } } if(OrderType()==OP_SELL) { double Short_profit=NormalizeDouble((OrderOpenPrice()-Bid)/Poin,0); double Short_stopcal=NormalizeDouble(Bid,Digits)+(stop*Poin); double Short_stoptrade=OrderStopLoss(); if(Short_profit<=start) continue; if(Short_stopcal>=Short_stoptrade) continue; if(Short_profit>start) if(Short_stoptrade==0||(Short_stoptrade!=0 && Short_stopcal<Short_stoptrade)) { OrderModify(OrderTicket(),OrderOpenPrice(),Short_stopcal,OrderTakeProfit(),0,Red); Print( "Sell order 3 trailing stop moved to : ", OrderStopLoss()); } } } } } //+------------------------------------------------------------------+ //| calculating orders stoploss | //+------------------------------------------------------------------+ double StopLong(double price,int stop) { if(stop==0) return(0); else return(price-(stop*Poin)); } //+--------------------------------- double StopShrt(double price,int stop) { if(stop==0) return(0); else return(price+(stop*Poin)); } //+------------------------------------------------------------------+ //| calculating orders takeprofit | //+------------------------------------------------------------------+ double TakeLong(double price,int take) { if(take==0) return(0); else return(price+(take*Poin)); } //+-------------------------------- double TakeShrt(double price,int take) { if(take==0) return(0); else return(price-(take*Poin)); } //+------------------------------------------------------------------+ //| closing orders | //+------------------------------------------------------------------+ void CloseAll() { int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==MagicNumber_1 || OrderMagicNumber()==MagicNumber_2 || OrderMagicNumber()==MagicNumber_3) if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,SkyBlue); if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Orange); } } //+------------------------------------------------------------------+ //| deleting unnecessary pending orders | //+------------------------------------------------------------------+ void DeletePendings() { int total_1 = OrdersTotal()-1; for (int cnt_1 = total_1 ; cnt_1 >= 0 ; cnt_1--) { OrderSelect(cnt_1,SELECT_BY_POS,MODE_TRADES); if(OrderMagicNumber()==MagicNumber_1 || OrderMagicNumber()==MagicNumber_2 || OrderMagicNumber()==MagicNumber_3) if(OrderSymbol()==Symbol()) if(OrderType()!=OP_BUY || OrderType()!=OP_SELL) { OrderDelete(OrderTicket()); } } } //+------------------------------------------------------------------+ //| counting open orders | //+------------------------------------------------------------------+ int CountLongs() { int count=0; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==MagicNumber_1 || OrderMagicNumber()==MagicNumber_2 || OrderMagicNumber()==MagicNumber_3) if(OrderType()==OP_BUY) count++; } return(count); } //-------------------------------- int CountShorts() { int count=0; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==MagicNumber_1 || OrderMagicNumber()==MagicNumber_2 || OrderMagicNumber()==MagicNumber_3) if(OrderType()==OP_SELL) count++; } return(count); } //----------------------------------------- Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.