Energy Trading – Conditions

The basis of energy trading is the Choppiness oscillator. I use 48-sample on the 15 min. I don’t use it on any other time frame.

The segregated conditions are as follows:

The White Rabbit marks up the next plausible 30-pip reversal zone. 5 pips later the whole idea is obsolete, hedge and wait for the next signal.

      if (!((ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+4 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2]+5) 
      || (ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && ExtMapBuffer[i+3]<StdDevLoBuffer[i+3] && ExtMapBuffer[i+4]<StdDevLoBuffer[i+4] && ExtMapBuffer[i+5]<StdDevLoBuffer[i+5] && ExtMapBuffer[i+6]<StdDevLoBuffer[i+6] && ExtMapBuffer[i+1]<35 && StdDevLoBuffer[i+1]<38)
      || (ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+2 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && StdDevLoBuffer[i+1]>44) 
      ))
      {
      if ( ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] || ExtMapBuffer[i+1]>46 || MathAbs(ExtMapBuffer[i+1]-ExtMapBuffer[i+2])<.44){
         if (Close[i+1]>iMA(symbol,0,480,0,MODE_SMA,PRICE_MEDIAN,i+1) ){
          if (i<200){
             ObjectCreate("Fail"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i))+60*Point); 
            ObjectSetText("Fail"+IntegerToString(i), " Sell @ "+DoubleToStr(NormalizeDouble(iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i)),4),4), 31, "Impact", White);
            ObjectCreate("Failx"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i))+60*Point); 
            ObjectSetText("Failx"+IntegerToString(i), "Sell @ "+DoubleToStr(NormalizeDouble(iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i)),4),4), 31, "Impact", OrangeRed);
           ObjectCreate("Faily"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i))+360*Point); 
            ObjectSetText("Faily"+IntegerToString(i), " Stop @ "+DoubleToStr(NormalizeDouble(iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i))+300*Point,4),4), 31, "Impact", Maroon);
            ObjectCreate("Failxy"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i))+360*Point); 
            ObjectSetText("Failxy"+IntegerToString(i), "Stop @ "+DoubleToStr(NormalizeDouble(iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i))+300*Point,4),4), 31, "Impact", Lime);
            }
            message = "NO UNHEDGED SHORTS ABOVE "+DoubleToStr(NormalizeDouble(iClose(symbol,0,iHighest(symbol,0,MODE_CLOSE,100,i))+350*Point,4),4);

The Pink Rabbit is a bit lower ranking due to the Choppiness gaining considerable strength on the following print landing the energy reserves in a more elevated band. On the above picture you could say that the Pink Rabbit downgraded the White Rabbit.

 (ExtMapBuffer[i]>ExtMapBuffer[i+1]+4 && ExtMapBuffer[i+1]<StdDevLoBuffer[i+1]+5 )     ||
       (ExtMapBuffer[i]>ExtMapBuffer[i+1]+3 && ExtMapBuffer[i+1]>44 && MathAbs(ExtMapBuffer[i+1]-ExtMapBuffer[i+2])<.44 && ExtMapBuffer[i+2]<45 )  ||
            (ExtMapBuffer[i+1]<StdDevLoBuffer[i+1] && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && ExtMapBuffer[i+3]<StdDevLoBuffer[i+3] && ExtMapBuffer[i+4]<StdDevLoBuffer[i+4] && ExtMapBuffer[i+5]<StdDevLoBuffer[i+5] && ExtMapBuffer[i]<35 && StdDevLoBuffer[i]<38 && (ExtMapBuffer[i+1]>33 || ExtMapBuffer[i+1]<25) )
      || (ExtMapBuffer[i]>ExtMapBuffer[i+1]+2 && ExtMapBuffer[i+1]<StdDevLoBuffer[i+1] && StdDevLoBuffer[i]>44) 
      || (ExtMapBuffer[i]<34 && ExtMapBuffer[i+1]>34 && ExtMapBuffer[i]<StdDevLoBuffer[i] && StdDevLoBuffer[i]<38)
      )
      {
     //    ObjectCreate("FOCUS"+IntegerToString(i),OBJ_VLINE,2, Time[i+1], 0);
         
         if (Close[i+1]>iMA(symbol,0,480,0,MODE_SMA,PRICE_MEDIAN,i+1)) ObjectCreate("FOCUS"+IntegerToString(i),OBJ_TREND,indicator_window, Time[i+1], 43.5, Time[i+1], 80 );
         else  ObjectCreate("FOCUS"+IntegerToString(i),OBJ_TREND,indicator_window, Time[i+1], 43.5, Time[i+1], 0 );
         if (ExtMapBuffer[i+2]>StdDevLoBuffer[i+2] && !(MathAbs(ExtMapBuffer[i+1]-ExtMapBuffer[i+2])<.44)) ObjectSet("FOCUS"+IntegerToString(i),OBJPROP_COLOR,clrNONE);
      else ObjectSet("FOCUS"+IntegerToString(i),OBJPROP_COLOR,clrWhite);
            ObjectSet("FOCUS"+IntegerToString(i),OBJPROP_WIDTH,4);
      ObjectSet("FOCUS"+IntegerToString(i),OBJPROP_BACK,1);
      if (MathAbs(Close[i+1]-iMA(symbol,0,480,0,MODE_SMA,PRICE_MEDIAN,i+1))<200*Point) ObjectSet("FOCUS"+IntegerToString(i),OBJPROP_COLOR,clrRed);
      if (ExtMapBuffer[i+1]<34 || ExtMapBuffer[i+2]<34 || ExtMapBuffer[i+1]>46) { ObjectSet("FOCUS"+IntegerToString(i),OBJPROP_COLOR,clrMagenta);
            if (ExtMapBuffer[i+1]>46) ObjectSet("FOCUS"+IntegerToString(i),OBJPROP_COLOR,clrPink);

The Magenta Strip is sort of an “overdrive condition”, way outside the Std bands. It is such an extreme reading that it can predict further movement due to the high inertia – momentum needs to be slowed by a divergence first.

See how on the image a higher high is getting figured?

        if (!((ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+4 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2]+5 )     ||
       (ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+3 && ExtMapBuffer[i+2]>44 && MathAbs(ExtMapBuffer[i+2]-ExtMapBuffer[i+3])<.44 && ExtMapBuffer[i+4]<45 )  ||
            (ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && ExtMapBuffer[i+3]<StdDevLoBuffer[i+3] && ExtMapBuffer[i+4]<StdDevLoBuffer[i+4] && ExtMapBuffer[i+5]<StdDevLoBuffer[i+5] && ExtMapBuffer[i+6]<StdDevLoBuffer[i+6] && ExtMapBuffer[i+1]<35 && StdDevLoBuffer[i+1]<38 && (ExtMapBuffer[i+2]>33 || ExtMapBuffer[i+2]<25) )
      || (ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+2 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && StdDevLoBuffer[i+1]>44) 
      || (ExtMapBuffer[i+1]<34 && ExtMapBuffer[i+2]>34 && ExtMapBuffer[i+1]<StdDevLoBuffer[i+1] && StdDevLoBuffer[i+1]<38)
          )
          && !((ExtMapBuffer[i+2]>ExtMapBuffer[i+3]+4 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+3]+5 )     ||
       (ExtMapBuffer[i+2]>ExtMapBuffer[i+3]+3 && ExtMapBuffer[i+3]>44 && MathAbs(ExtMapBuffer[i+3]-ExtMapBuffer[i+4])<.44 && ExtMapBuffer[i+5]<45 )  ||
            (ExtMapBuffer[i+3]<StdDevLoBuffer[i+3] && ExtMapBuffer[i+4]<StdDevLoBuffer[i+4] && ExtMapBuffer[i+5]<StdDevLoBuffer[i+5] && ExtMapBuffer[i+6]<StdDevLoBuffer[i+6] && ExtMapBuffer[i+7]<StdDevLoBuffer[i+7] && ExtMapBuffer[i+2]<35 && StdDevLoBuffer[i+2]<38 && (ExtMapBuffer[i+3]>33 || ExtMapBuffer[i+3]<25) )
      || (ExtMapBuffer[i+2]>ExtMapBuffer[i+3]+2 && ExtMapBuffer[i+3]<StdDevLoBuffer[i+3] && StdDevLoBuffer[i+2]>44) 
      || (ExtMapBuffer[i+2]<34 && ExtMapBuffer[i+3]>34 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && StdDevLoBuffer[i+2]<38)
          ) 
     // && !(ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+4 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2]+5 )     ||
    //   (ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+3 && ExtMapBuffer[i+2]>44 && MathAbs(ExtMapBuffer[i+2]-ExtMapBuffer[i+3])<.44 && ExtMapBuffer[i+4]<45 )  ||
    //        (ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && ExtMapBuffer[i+3]<StdDevLoBuffer[i+3] && ExtMapBuffer[i+4]<StdDevLoBuffer[i+4] && ExtMapBuffer[i+5]<StdDevLoBuffer[i+5] && ExtMapBuffer[i+6]<StdDevLoBuffer[i+6] && ExtMapBuffer[i+1]<35 && StdDevLoBuffer[i+1]<38 && (ExtMapBuffer[i+2]>33 || ExtMapBuffer[i+2]<25) )
    //  || (ExtMapBuffer[i+1]>ExtMapBuffer[i+2]+2 && ExtMapBuffer[i+2]<StdDevLoBuffer[i+2] && StdDevLoBuffer[i+1]>44) 
    //  || (ExtMapBuffer[i+1]<34 && ExtMapBuffer[i+2]>34 && ExtMapBuffer[i+1]<StdDevLoBuffer[i+1] && StdDevLoBuffer[i+1]<38)
    //      ) 
    )
      {if ( ExtMapBuffer[i]>53){ 
         if (Close[i+1]>iMA(symbol,0,480,0,MODE_SMA,PRICE_MEDIAN,i+1)){
             ObjectCreate("Faila"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i))-530*Point); 
            ObjectSetText("Faila"+IntegerToString(i), " Buy 4 HH (before white rabbit up)@ "+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i))-540*Point,4),4), 21, "Impact", White);
            ObjectCreate("Failax"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i))-530*Point); 
            ObjectSetText("Failax"+IntegerToString(i), "Buy 4 HH (before white rabbit up)@ "+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i))-540*Point,4),4), 21, "Impact", LimeGreen);
            }
          else {
            ObjectCreate("Faila"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))+540*Point); 
            ObjectSetText("Faila"+IntegerToString(i), " Sell 4 LL (before white rabbit dn)@ "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))+530*Point,4),4), 21, "Impact", Maroon);
            ObjectCreate("Failax"+IntegerToString(i), OBJ_TEXT, 0, Time[i], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))+540*Point); 
            ObjectSetText("Failax"+IntegerToString(i), "Sell 4 LL (before white rabbit dn)@ "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))+530*Point,4),4), 21, "Impact", OrangeRed);}
         }
      }

The idea around the Cyan and the Purple highlights on the CI itself is that they are identified Energy Discharges / Pushes, two of the same color in s sequence sort of predicts more movement to be had in that direction, i.e.:

    if (Low[i]>iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i) && Low[i+1]>iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i+1) && Low[i+2]>iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i+2)) pup[i]=ExtMapBuffer[i];
         if (High[i]<iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i) && High[i+1]<iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i+1) && High[i+2]<iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i+2)) pdn[i]=ExtMapBuffer[i];

Pup = Push Up, Pdn = Push Down