Announcement

Collapse
No announcement yet.

Confused on getCurrentBarIndex

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Confused on getCurrentBarIndex

    I was using some if getCurrentBarIndex() == 0 conditions in my script for testing tonight. They worked great. Then about 3am getCurrentBarIndex started returning -1 for the current bar instead of 0. Why is this? Due to a date change or something? I thought the current bar was always supposed to be 0! Im a bit confused.

    I've rebooted and still have the same effect.

  • #2
    Geoff
    As far as I know the current bar always returns a bar index of 0.
    You may want to post your code for others to try and replicate the issue you are seeing
    Alex

    Comment


    • #3
      Ok here is a screep cap of what this code outputs for the current barindex when its run in real time or $PLAYBACK. And following that is the MESSY UNORGANIZED code. You've been warned.



      PHP Code:
      // USING FOR YM TEST

      /***************************************************************************
                 Chicken Pot Pie Setp

      ****************************************************************************/
      debugClear();



      var 
      vATR null;
      var 
      ATR null;
      var 
      NATR null;
      var 
      vAllow null;
      var 
      Result null;
      var 
      carryForward 0;
      var 
      swing 1;
      var 
      closed 0;
      var 
      lstexec 0;  // geoff - added to count trades
      var totlpts 0// geoff added to count total plus or minus pts
      var trades 0// geoff
      var dreset 0// geoff added sept 13th

      // These are from auto trading IB sample script
      var bEdit true;
      var 
      vSize null;
      var 
      vType "MARKET";

      // The very FIRST order placed when auto-trading is enabled will be the
      // normal lot size, otherwise reversals will be 2x lot size
      var fFirstOrder true//change back to true later on if you want program to enter first order


      function preMain() {
          
      setProperty("HideEncryptedLock""yes");
          
      setStudyTitle("SAR AUTO - COC OFF, 3.0 ATR");
          
      setShowTitleParameters(false);
          
      setCursorLabelName("Smackdown"0);
          
      setShowCursorLabel(true);
          
      setColorPriceBars(true);
          
      setComputeOnClose(true);  // TURN OFF FOR TICK BY TICK CALCULATIONS
                              
          
      setPlotType(PLOTTYPE_CIRCLE,0);
          
      setDefaultBarFgColor(Color.yellow0);
          
      setDefaultBarThickness(1,0);
          
      setPriceStudy(true);
          
          var 
      c1 = new FunctionParameter("BuyStopColor"FunctionParameter.COLOR);
          
      c1.setName("Buy Stop Color");
          
      c1.setDefault(Color.RGB(0,0,255));
          
          var 
      c2 = new FunctionParameter("SellStopColor"FunctionParameter.COLOR);
          
      c2.setName("Sell Stop Color");
          
      c2.setDefault(Color.RGB(255,0,0));
          
      // These are from auto trading IB sample script
          
      var dp0 = new FunctionParameter("vAllow"FunctionParameter.BOOLEAN);
          
      dp0.setName("Auto Trading");
          
      dp0.setDefault(false);
          
          var 
      dp1 = new FunctionParameter("Size"FunctionParameter.NUMBER);
          
      dp1.setName("Default Lot Size");
          
      dp1.setLowerLimit(1);
          
      dp1.setDefault(4);
          
      }


        
      function 
      main(BuyStopColorSellStopColorvAllowSize) { 

      //TEST

          
      debugPrintln("Barindex: "+getCurrentBarIndex() );
          
      //

      if (getInterval() < ) {
          
      drawTextPixel(25050"Symbol interval is not set to 3!"Color.RGB(0,0,255), Color.RGB(165,165,165), Text.ONTOPnull10"TagName");
          
      debugPrintln("Symbol interval is not set to 3!");
          return;
      }

      if (
      vAllow==false ) {
          
      drawTextPixel(25050"NOTICE:                       AUTO TRADING IS        **OFF**"Color.RGB(0,0,255), Color.RGB(165,165,165), Text.ONTOPnull10"TagName");
       }

          
      // GET CURRENT TIME AND SET NO TRADE RULE
          
      Time = (hour(0)*100)+minute(0); // Time of bar -1/0 limited by your charts time template
          
      TosTime = (hour(0inv("1T"))*100)+minute(0,inv("1T"));  // Current time of current TOS tick reguardless of chart template
          //debugPrintln(TosTime); // Compare and save!:
          // debugPrintln(Time);
          
      daynow = new Date(getValue("time",0));
          
      allow=1

              
      if (
                 
      TosTime >= 1600 || 
                  
      TosTime 930
              

                  
      allow=0
                  
      //////    

          
          
      var Factor 3.95;    // This was 1.4 but am testing on tick by tick basis. change back later
          
      gFactor Factor // Geoff added this for print reason. Didnt want to mess with above line just incase
          
      if (vATR == nullvATR = new ATRStudy(16);
         
          
      ATR vATR.getValue(ATRStudy.ATR);
          
      NATR Factor * (tvAbs(ATR));
          
      vSize Size;

            
      // EXIT TRADES AT EOD IF THERE ARE ANY CURRENTLY OPEN (EVEN IF ALL IN IS CHECKD) DO YOU REALLY WANT TO SLEEP WITH??


       
      if ( TosTime >= 1558 && TosTime <= 1700 && lstexec !=&& closed !=&& getCurrentBarIndex() >= -) {
             
      Alert.addToList(getSymbol(), " EOD EXITING TRADES!! "Color.RGB(255,255,255), Color.RGB(0,0,255));
             
      Alert.playSound("Punch.wav");
             
      debugPrintln(Time " Time to exit trades!!");
             
      fFirstOrder true//This sets the order size to 4 to exit the trade so we dont rebuy EOD. Its also used for start trade
             
      if ( swing == 1sell();
             if ( 
      swing == -1buy();
             
      allow=0;   
             
      vAllow=false;
             
      closed=1;
          } 
          
      // END EOD EXIT CODE  

          
      if (bEdit == true) {  // BEGIN ALLOW TRADING BUTTON CODE
              
      var enabledText "Trading Enabled";
              var 
      eColor Color.green;
              if (
      vAllow == false) {
                  
      enabledText "    Trading DISABLED!!";
                  
      eColor Color.red;
              }
          
              
      drawTextAbsolute(515enabledText+"@URL=EFS:editParameters"
                  
      eColorColor.lightgrey
                  
      Text.RELATIVETOLEFT Text.RELATIVETOBOTTOM Text.ONTOP Text.CENTER
                  
      "Arial"12"msg");
              
      bEdit false;
          }  
      // END ALLOW TRADING BUTTON CODE

      //This states if current bar day isnt equal to the day of thep previous bar, it must be a new day.
      //Reset some day dependant variables for continious running on tick replayer

          
      if (day(0) != day(-1) && dreset == 
          {
          
      debugPrintln("reset day data");
          
      closed 0;
          
      lstexec 0;
          
      fFirstOrder true
          dreset 
      1;
          }
          else if (
      day(0) == day(-1) ) dreset 0



      //ENTER IN FIRST TRADE OF THE DAY
       
      if (getCurrentBarIndex() >= -&& allow==1) {

          
         if (
      lstexec == && swing == -&& vAllow==true && fFirstOrder == true && Time 931 )     sell();  
          else if (
      lstexec == && swing == && vAllow==true && fFirstOrder == true && Time 931 buy();  
           
        }
      // THAT SHOULD DO IT FOR NOW



       
          
      if (swing == && allow == 1) {
              if (
      close() <= Result) {
                  if (
      Strategy.isLong()) {
                      
      Strategy.doSell("Exit Long"Strategy.MARKETStrategy.NEXTBARStrategy.ALLMath.round(Result));
                  }
                    if (
      vAllow==true && getCurrentBarIndex() >= -1sell();
                  
      Strategy.doShort("Short"Strategy.MARKETStrategy.NEXTBARStrategy.DEFAULT, Math.round(Result));
                  
      Alert.addToList(getSymbol(), " SHORT " );
                  
      //Alert.playSound("sell.wav");
                  
      swing = -1;
                  
      Result 1000000000;
              }
       
           } else if (
      swing == -&& allow == 1) {
              if (
      close() >= Result) {
                 if (
      Strategy.isShort()) {
                      
      Strategy.doCover("EXIT Short"Strategy.MARKETStrategy.NEXTBARStrategy.ALLMath.round(Result));
                  }
                     if (
      vAllow==true && getCurrentBarIndex() >= -1buy();
                  
      Strategy.doLong("Long"Strategy.MARKETStrategy.NEXTBARStrategy.Default, Math.round(Result));
                  
      Alert.addToList(getSymbol(), " LONG "Color.RGB(255,255,255), Color.RGB(0,0,255));
                  
      //Alert.playSound("buy.wav");
                  
      swing 1;
                  
      Result = -1000000000;
              }
          }
              if (
      swing == 1) {
              
      setPriceBarColor(Color.blue);
          } else if (
      swing == -1) {
              
      setPriceBarColor(Color.red);
          } else {
              
      setPriceBarColor(Color.yellow);
          }
          if (
      swing == 1) {
              if (
      low()-carryForward Result) {
                  
      Result low()-carryForward;
              }
          } else if (
      swing == -1) {
              if (
      high()+carryForward Result) {
                  
      Result high()+carryForward;
              }
          }
          var 
      color SellStopColor;
          
      setBarFgColor(SellStopColor);
          if (
      swing == -1) {
              
      color BuyStopColor;
              
      setBarFgColor(BuyStopColor);
          }
          if (
      getCurrentBarIndex() >= -1) {
             
      drawShapeRelative(1ResultShape.RIGHTARROWnullcolorShape.TOP"fixedstop");
          }
          if (
      getBarState() == BARSTATE_NEWBAR) {
              
      carryForward NATR;
          }
          
      // Result=Math.round(Result); // GEOFF TEST -- IF YOU WANT THE STOPS TO BE EXACT AND NOT DECIMALS UNCOMMENT
          
      return Result;
      }


      function 
      buy()
      {
         var 
      nSize 0;
         if ( 
      fFirstOrder == true)
         {
             
      nSize vSize;
             
      fFirstOrder false;
         }
         else
             
      nSize vSize 2;
         
             if ( 
      getSymbol() != "$PLAYBACK)  buyMarket(getSymbol(), nSize);
         
      debugPrintln("");
         
      debugPrintln("Buy signal sent "+Time+"EST to IB size: " nSize " at " close() );
         if (
      lstexec != 0) {  lstexec = ( lstexec-close() );
                  
      debugPrintln("Last trade net "lstexec " points"); 
                  
      totlpts totlpts+lstexec; }
         
      trades=trades+1;
         
      debugPrintln("Total net is "+totlpts+" points in "+trades+" trades. ");
         
      debugPrintln(getSymbol()+ ": Net PNL w/ Comissions @ ATR factor "+gFactor+" ($"+ ( (totlpts*vSize*5) - (trades*4.79*vSize) ) + ")");
         
      lstexec=close();
         return;
         
      }

      function 
      sell()
      {
         var 
      nSize 0;
         if ( 
      fFirstOrder == true)
         {
             
      nSize vSize;
             
      fFirstOrder false;
         }
         else
             
      nSize vSize 2;
             
         if ( 
      getSymbol() != "$PLAYBACK)  sellMarket(getSymbol(), nSize);
         
      debugPrintln("");
         
      debugPrintln("Sell signal sent "+Time+"EST to IB size: " nSize " at " close() );
         if (
      lstexec != 0) { lstexec =  ( close() - lstexec);
                             
      debugPrintln("Last trade net "lstexec " points"); 
                             
      totlpts totlpts+lstexec }
         
      trades=trades+1;   
         
      debugPrintln("Total net is "+totlpts+" points in "+trades+" trades");
         
      debugPrintln(getSymbol()+": Net PNL w/ Comissions @ ATR factor "+gFactor+" ($"+ ( (totlpts*vSize*5) - (trades*4.79*vSize) ) + ")");
         
      lstexec=close();
         return;
      }


      function 
      tvAbs(value)
      {
          if (
      value 0) {
              return -
      value;
          } else {
              return 
      value;
          }
      }


      var 
      nClick 0;
      function 
      editParameters(nButtonPressed) {
          if (
      nButtonPressed == BUTTON_LEFT) {
              
      askForInput("Trading Parameters");
          }
          
          if (
      nClick >= 2nClick 0;
          
          return;
      }

      function 
      postMain() {
      vAllow false;

      Comment


      • #4
        Geoff
        Comment out setComputeOnClose() and you should get BarIndex: 0 in the Formula Output Window
        Alex

        Comment

        Working...
        X