View Single Post
  #8 (permalink)  
Old 09-20-2009, 01:33 PM
username1 username1 is offline
Junior Member
 
Join Date: Jun 2009
Posts: 20
username1 is on a distinguished road
Updated Code

I updated my code. Simplified it and added your recommendations.

Code:
extern int       MA_Period=5;
extern int       MA_Method=1;
extern double    Lots=0.1;
int init() {return(0);}
int deinit(){return(0);}
int start()
  {
   int BarOpen = 0;           //Run Once Per Bar
   if (Open[0] != BarOpen)
   {
      BarOpen=Open[0];
      
      if (Close[2]<iMA(NULL,0,MA_Period,0,MA_Method,0,2)&&Close[1]>iMA(NULL,0,MA_Period,0,MA_Method,0,1)) // Uptrend
      {
        int total = OrdersTotal(); //Close Short Positions
        for(int i=total-1;i>=0;i--)
         {
            OrderSelect(i, SELECT_BY_POS);
            if(OrderSymbol()==Symbol()&& OrderType()==1)
            {bool result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );}
         }
        OrderSend (Symbol(),0,Lots,Ask,3,NULL,NULL,NULL,0,0,Green); // Open Long Position
      }
      
      if (Close[2]>iMA(NULL,0,MA_Period,0,MA_Method,0,2)&&Close[1]<iMA(NULL,0,MA_Period,0,MA_Method,0,1)) //Downtrend
      {
        total = OrdersTotal(); //Close Long Positions
        for(i=total-1;i>=0;i--)
         {
            OrderSelect(i, SELECT_BY_POS);
            if(OrderSymbol()==Symbol()&& OrderType()==0)
            {result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );}
         }
         OrderSend (Symbol(),0,Lots,Bid,3,NULL,NULL,NULL,0,0,Green); //Open Short
      }
      
   return(0);
   }
  }
It seems to be working much better, except for the multiple trades per bar issue. Can you help me with that ?

Capture.PNG

Thanks.
Reply With Quote