View Single Post
  #3 (permalink)  
Old 02-06-2009, 11:38 AM
silumancumi silumancumi is offline
Member
 
Join Date: Sep 2008
Posts: 33
silumancumi is on a distinguished road
EA PASAR CUMI V.2 (current rule), could somebody please tell me what's wrong?
Code:
extern double Lots=1;
extern int StopLoss=40;
extern int TakeProfit=20;
extern string txComment="Order PSAR";
extern int MagicNumber=12345;
extern int Slippage=3;
extern int MaxOrders=5;

//Parameter TF0
extern string  note1     = "--- Parameter PSar 1 ---";
extern int     TF0      =  1;
extern double  step0    =  0.005;
extern double  maximum0 = 0.2;
//end

//Parameter TF1
extern string  note2     = "--- Parameter PSar 2 ---";
extern int     TF1      =  5;
extern double  step1    =  0.005;
extern double  maximum1 = 0.2;
//end

//Parameter TF2
extern string note3     = "--- Parameter PSar 3 ---";
extern int     TF2      =  15;
extern double  step2    =  0.005;
extern double  maximum2 = 0.2;
//end

//Parameter TF3
extern string note4     = "--- Parameter PSar 4 ---";
extern int     TF3      =  30;
extern double  step3    =  0.005;
extern double  maximum3 = 0.2;
//end

//Parameter TF4
extern string note5     = "--- Parameter PSar 5 ---";
extern int     TF4      =  60;
extern double  step4    =  0.005;
extern double  maximum4 = 0.2;
//end

//Parameter TF5
extern string note6     = "--- Parameter PSar 6 ---";
extern int     TF5      =  240;
extern double  step5    =  0.005;
extern double  maximum5 = 0.2;
//end

/*
Minor update by metropolis:
Trailing stop function 
5 digits broker issues fixed 
one signal for one position
*/
extern int TrailingStop =0;

///////////////////////////////////////
datetime bartime=0;
int tiket;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {  
      ////////////////////////////// 1st Previous Trend ; 1 means Bullish ; 0 means Bearish ///////////////////////////
      
      //// Bullish ////
      if (iSAR(NULL,TF0,step0,maximum0,1)<Close[0])   {int TrendP1_0 = 1; string TrendP1_0s="Bullish";}               
      if (iSAR(NULL,TF1,step1,maximum1,1)<Close[0])   {int TrendP1_1 = 1; string TrendP1_1s="Bullish";}         
      if (iSAR(NULL,TF2,step2,maximum2,1)<Close[0])   {int TrendP1_2 = 1; string TrendP1_2s="Bullish";}         
      if (iSAR(NULL,TF3,step3,maximum3,1)<Close[0])   {int TrendP1_3 = 1; string TrendP1_3s="Bullish";}         
      if (iSAR(NULL,TF4,step4,maximum4,1)<Close[0])   {int TrendP1_4 = 1; string TrendP1_4s="Bullish";}         
      if (iSAR(NULL,TF5,step5,maximum5,1)<Close[0])   {int TrendP1_5 = 1; string TrendP1_5s="Bullish";} 
      
      //// Bearish ////     
      if (iSAR(NULL,TF0,step0,maximum0,1)>Close[0])       {TrendP1_0 = 0; TrendP1_0s="Bearish";}       
      if (iSAR(NULL,TF1,step1,maximum1,1)>Close[0])       {TrendP1_1 = 0; TrendP1_1s="Bearish";}       
      if (iSAR(NULL,TF2,step2,maximum2,1)>Close[0])       {TrendP1_2 = 0; TrendP1_2s="Bearish";}      
      if (iSAR(NULL,TF3,step3,maximum3,1)>Close[0])       {TrendP1_3 = 0; TrendP1_3s="Bearish";}      
      if (iSAR(NULL,TF4,step4,maximum4,1)>Close[0])       {TrendP1_4 = 0; TrendP1_4s="Bearish";}      
      if (iSAR(NULL,TF5,step5,maximum5,1)>Close[0])       {TrendP1_5 = 0; TrendP1_5s="Bearish";} 
      
     
      ///////////////////////////////// 2nd Previous Trend ; 1 means Bullish ; 0 means Bearish /////////////////////////
      
      //// Bullish ////
      if (iSAR(NULL,TF0,step0,maximum0,2)<Close[0])   {int TrendP2_0 = 1;}             
      if (iSAR(NULL,TF1,step1,maximum1,2)<Close[0])   {int TrendP2_1 = 1;}      
      if (iSAR(NULL,TF2,step2,maximum2,2)<Close[0])   {int TrendP2_2 = 1;}      
      if (iSAR(NULL,TF3,step3,maximum3,2)<Close[0])   {int TrendP2_3 = 1;}      
      if (iSAR(NULL,TF4,step4,maximum4,2)<Close[0])   {int TrendP2_4 = 1;}      
      if (iSAR(NULL,TF5,step5,maximum5,2)<Close[0])   {int TrendP2_5 = 1;}      
      
      //// Bearish ////
      if (iSAR(NULL,TF0,step0,maximum0,2)>Close[0])       {TrendP2_0 = 0;}      
      if (iSAR(NULL,TF1,step1,maximum1,2)>Close[0])       {TrendP2_1 = 0;}      
      if (iSAR(NULL,TF2,step2,maximum2,2)>Close[0])       {TrendP2_2 = 0;}      
      if (iSAR(NULL,TF3,step3,maximum3,2)>Close[0])       {TrendP2_3 = 0;}      
      if (iSAR(NULL,TF4,step4,maximum4,2)>Close[0])       {TrendP2_4 = 0;}      
      if (iSAR(NULL,TF5,step5,maximum5,2)>Close[0])       {TrendP2_5 = 0;}
      
      string Signal = "NONE";
      static string LastSignal = "NONE"; 
                 
      ///////////////////////////// 1st previous Signal ////////////////////////////
       
      if (TrendP1_0==1 && TrendP1_1==1 && TrendP1_2==1 && TrendP1_3==1 && TrendP1_4==1 && TrendP1_5==1)
         {int TrendP1=1;}     //All 1st prev Bullish
         else if (TrendP1_0==0 && TrendP1_1==0 && TrendP1_2==0 && TrendP1_3==0 && TrendP1_4==0 && TrendP1_5==0)
                 {TrendP1=0;} //All 1st prev Bearish
                 
     ///////////////////////////// 2nd previous Signal  ////////////////////////////  
                     
      if (TrendP2_0==1 && TrendP2_1==1 && TrendP2_2==1 && TrendP2_3==1 && TrendP2_4==1 && TrendP2_5==1)
         {int TrendP2=1;}     //All 2nd prev Bullish
          else if (TrendP2_0==0 && TrendP2_1==0 && TrendP2_2==0 && TrendP2_3==0 && TrendP2_4==0 && TrendP2_5==0)
                  {TrendP2=0;} //All 2nd prev Bearish
                       
         
      ////////////////////////////// Open Position ///////////////////////////// 
       
      if (OrdersTotal()<MaxOrders && bartime != Time[0])
      
         {if (TrendP1==1 && TrendP2!=0 && TrendP2!=1) /// if 1st previous ALL bullish, and 2nd previos NOT ALL same signal
             {Signal = "LONG (BUY)";
              LastSignal = Signal;           
              tiket = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*pointt(),Ask+TakeProfit*pointt(),txComment,MagicNumber,0,Green); 
              if(tiket>0) bartime = Time[0];}
      
           else if 
             (TrendP1==0 && TrendP2!=0 && TrendP2!=1) /// if 1st previous ALL bearish, and 2nd previous NOT ALL same signal
             {Signal = "SHORT (SELL)";
              LastSignal = Signal;
              tiket = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*pointt(),Bid-TakeProfit*pointt(),txComment,MagicNumber,0,Red);
              if(tiket>0) bartime = Time[0];}
      
      }
      
      Comment("n",  
         "n     EA PASAR CUMI V.2",
         "n",     
         "n","     Broker time= ",TimeToStr(TimeCurrent()),
         "n",
         "n","     Trend TF ",(TF0)," M = ",(TrendP1_0s),
         "n","     Trend TF ",(TF1)," M = ",(TrendP1_1s),
         "n","     Trend TF ",(TF2)," M = ",(TrendP1_2s),
         "n","     Trend TF ",(TF3)," M = ",(TrendP1_3s),
         "n","     Trend TF ",(TF4)," M = ",(TrendP1_4s),
         "n","     Trend TF ",(TF5)," M = ",(TrendP1_5s),
         "n","     Last Signal    = ",(LastSignal),
         "n","     Current Signal = ",(Signal),
         "n",
         "n","     Equity = ",AccountEquity());
         
            
      //////////Trailing Stop is here//////////////
      for (int i = 0; i < OrdersTotal(); i++)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && TrailingStop>0)
         {
            if(OrderType()==OP_BUY)
            {
               if(Bid-OrderOpenPrice()>pointt()*TrailingStop)
               {
                  if(OrderStopLoss()<Bid-pointt()*TrailingStop || (OrderStopLoss()==0))
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-pointt()*TrailingStop,OrderTakeProfit(),0,CLR_NONE);
                     return(0);
                  }
               }
            }
         
            if(OrderType()==OP_SELL)
            {
               if((OrderOpenPrice()-Ask)>(pointt()*TrailingStop))
               {
                  if((OrderStopLoss()>(Ask+pointt()*TrailingStop)) || (OrderStopLoss()==0))
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+pointt()*TrailingStop,OrderTakeProfit(),0,CLR_NONE);
                     return(0);
                  }
               }      
            }
         } 
      
      }   
      
   return(0);
  }
//+------------------------------------------------------------------+

double pointt()
{
   if(Digits==2) return(0.01);
   if(Digits==4) return(0.0001);
   if(Digits==5 || Digits==3) return(0.00001);
}
Reply With Quote