Dear Fellow Traders,

i am a medium level programmer but a very good experience trader in charting and price action analysis. Last few months i have been trying to use mql4 to automate my process. i was successful in creating a marker that show me when my edge is present.

right now i want take that to next level in  quantconnect. 

My problem here is how to tell the built in c++ what  a candle bar is,  like i did in my mql4 program.

    body = Open - Close;
    bull = Open > Close;
    bear = Open < Close;

how can i access these arrays and use them interchangeably to build my strategy.

how can i know the total bars that backtesting would cover in the quantconnect 

 

please, i need your help

 

Below is an  example of what i would build here.

 

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

int limit = MathMax (rates_total - prev_calculated, 2);
 for (int i=0; i<limit; i++) 
   
     if (Close[i+14]-Open[i+14]<0 //bear
          && Close[i+13]-Open[i+13]>0 //bull
            && Close[i+12]-Open[i+12]>0 //bull
              && Close[i+11]-Open[i+11]>0 //bull
                && Close[i+10]-Open[i+10]>0 //bull
                   && Close[i+9]-Open[i+9]>0 //bull  
       && Close[i+8]-Open[i+8]<0                          //bear  1st push
                    && Close[i+7]-Open[i+7]>0 //bull  2nd push
                  && Close[i+6]-Open[i+6]>0 //bull  2nd push
                && Close[i+5]-Open[i+5]>0 //bull  2nd push
              && Close[i+4]-Open[i+4]>0 //bull  2nd push
            && Close[i+3]-Open[i+3]<0                  //bear  2nd push
          && Close[i+2]-Open[i+2]>0 //bull  3rd push
        && Close[i+1]-Open[i+1]<0                         //bear   3rd push
      && Close[i]-Open[i]<0                         //bear   3rd push
         && Close[i+1]<Close[i+9] // we shouln't get a signal beyond the 3+(above the  last bar of the 3+)
       //&& Close[i]<Open[i+3]    
      //&& Close[i+1]<Close[i+9]
      && Close[i]>Open[i+1]
       )
       
       {
      //Alert ("Bullish fakey");
      up[i]= Low[i];
      }
      
    else  if (Close[i+15]-Open[i+15]<0 //bear
          && Close[i+14]-Open[i+14]>0 //bull
            && Close[i+13]-Open[i+13]>0 //bull
              && Close[i+12]-Open[i+12]>0 //bull
                && Close[i+11]-Open[i+11]>0 //bull
                   && Close[i+10]-Open[i+10]>0 //bull  
       && Close[i+9]-Open[i+9]<0                          //bear  1st push
                    && Close[i+8]-Open[i+8]>0 //bull  2nd push
                  && Close[i+7]-Open[i+7]>0 //bull  2nd push
                && Close[i+6]-Open[i+6]>0 //bull  2nd push
              && Close[i+5]-Open[i+5]>0 //bull  2nd push
            && Close[i+4]-Open[i+4]<0                  //bear  2nd push
          && Close[i+3]-Open[i+3]>0 //bull  3rd push
        && Close[i+2]-Open[i+2]<0                         //bear   3rd push
      && Close[i+1]-Open[i+1]>0 //bull  3rd push
       && Close[i]-Open[i]>0 //bull  3rd push
       && Close[i+1]<Close[i+10] // we must get the signal inside 3+(not beyond the last bar)
       && Close[i+1]>Open[i+2]
       )
       
       {
      //Alert ("Bullish fakey");
      up[i]= Low[i];
      }
 
 else if (Close[i+14]-Open[i+14]>0 //bull
       && Close[i+13]-Open[i+13]<0 //bear
           && Close[i+12]-Open[i+12]<0 //bear
              && Close[i+11]-Open[i+11]<0 //bear                           THE BEAR 3+
                   && Close[i+10]-Open[i+10]<0 //bear
                          && Close[i+9]-Open[i+9]<0 //bear  
                               && Close[i+8]-Open[i+8]>0 //bull            1ST PUSH
       && Close[i+7]-Open[i+7]<0                                           //bear  
         && Close[i+6]-Open[i+6]<0                    //bear               2nd Bear breakout
           && Close[i+5]-Open[i+5]<0                                       //bear       
            && Close[i+4]-Open[i+4]<0                                       //bear           
                       && Close[i+3]-Open[i+3]>0 //bull                     2nd push
                  && Close[i+2]-Open[i+2]<0 //bear                         Single bar as the 3rd push
               && Close[i+1]-Open[i+1]>0 //bull                            3rd push
             && Close[i]-Open[i]>0 //bull  
       //&& Close[i+1]>Open[1+3]  
       //&& Close[i+1]>Close[i+9]       
      && Close[i+1]>Close[i+9] // we shouln't get a signal beyond the 3+(above the  last bar of the 3+)
      && Close[i]<Open[i+1]
       )
       
       {
      //Alert ("Bearish fakey");
        down[i]= High[i];
      }
      
    else if (Close[i+15]-Open[i+15]>0 //bull
       && Close[i+14]-Open[i+14]<0 //bear
           && Close[i+13]-Open[i+13]<0 //bear
              && Close[i+12]-Open[i+12]<0 //bear                           THE BEAR 3+
                   && Close[i+11]-Open[i+11]<0 //bear
                          && Close[i+10]-Open[i+10]<0 //bear  
                               && Close[i+9]-Open[i+9]>0 //bull            1ST PUSH
       && Close[i+8]-Open[i+8]<0                                           //bear  
         && Close[i+7]-Open[i+7]<0                    //bear               2nd Bear breakout
           && Close[i+6]-Open[i+6]<0                                       //bear       
            && Close[i+5]-Open[i+5]<0                                       //bear           
                       && Close[i+4]-Open[i+4]>0 //bull                     2nd push
                  && Close[i+3]-Open[i+3]<0 //bear                         Single bar as the 3rd push
               && Close[i+2]-Open[i+2]>0 //bull                            3rd push
              && Close[i+1]-Open[i+1]<0 //bear  3rd push
       && Close[i]-Open[i]<0 //bear  3rd push
       && Close[i+1]>Close[i+10] // we must get the signal inside 3+(not beyond the last bar)
       && Close[i+1]<Open[i+2]
       )
       
       {
      //Alert ("Bearish fakey");
        down[i]= High[i];
      }
       
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Author