Tuesday, September 27, 2011

Updated EMA code.


#########################################################
## BigbullandBigBear LLC
## Date: 1st Sept 2010
## Changed: 26th Sept 2011
#########################################################

input price       = close;
input ColoredCloud = yes;
input ColoredFill = yes;
input BreakArrows = yes;
input displace    =  0;
input length      = 10;
input multiplier  = 0.005;
def lastBar = if (IsNaN(close), 1, 0);

input AverageType = {default SMA, EMA};
def MA;
switch (AverageType) {
case SMA:
    MA = Average(close, Length);
   
case EMA:
    MA = ExpAverage(close, Length);
 
}

plot UpperBand = MA*(1+ multiplier);
plot LowerBand = MA*(1-multiplier);
def MAStatus =
  if close > MA then 2    
  else
    if close < MA then -2  
    else 0    ;                          

rec BreakStatus = compoundValue(1,
  if BreakStatus[1] == maStatus or maStatus == 0 then BreakStatus[1]
  else
    if mastatus == 2 then 2
    else -2, 0);


UpperBand.AssignValueColor (
    if !Coloredcloud then Color.White
    else
      if BreakStatus[0] == 2 then Color.Green
      else Color.Red);
UpperBand.SetLineWeight(1);


LowerBand.AssignValueColor (
    if !Coloredcloud then Color.White
    else
      if BreakStatus[0] == 2 then Color.Green
      else Color.Red);
LowerBand.SetLineWeight(1);

# Breakout/down arrows.
plot BreakOutArrow =
  if BreakArrows then
    if BreakStatus[0] == BreakStatus[1] then double.NAN
    else if BreakStatus[0] == 2 then
      close else double.NAN
  else double.NAN;
BreakOutArrow.SetPaintingStrategy(PaintingStrategy.Arrow_Up);
BreakOutArrow.SetDefaultColor(Color.Green);
BreakOutArrow.SetLineWeight(3);

plot BreakDownArrow =
  if BreakArrows then
    if BreakStatus[0] == BreakStatus[1] then double.NAN
    else if BreakStatus[0] == -2 then
      close else double.NAN
else double.NAN;
BreakDownArrow.SetPaintingStrategy(PaintingStrategy.Arrow_Down);
BreakDownArrow.SetDefaultColor(Color.Red);
BreakDownArrow.SetLineWeight(3);

# colored clouds
plot GreenUpper = if ColoredFill and BreakSTatus[0] == 2 then
  UpperBand else double.NAN;
GreenUpper.SetDefaultColor(CreateColor(0,100,0));
plot GreenLower = if ColoredFill and BreakStatus[0] == 2 then
  LowerBand else double.NAN;
GreenLower.SetDefaultColor(CreateColor(0,100,0));
AddCloud (GreenUpper, GreenLower,CreateColor(0,100,0), color.red);

plot RedUpper = if ColoredFill and BreakSTatus[0] == -2 then
  UpperBand else double.NAN;
RedUpper.SetDefaultColor(CreateColor(200,0,0));
plot RedLower = if ColoredFill and BreakStatus[0] == -2 then
  LowerBand else double.NAN;
RedLower.SetDefaultColor(CreateColor(200,0,0));
AddCloud (RedUpper, RedLower, CreateColor(200,0,0), color.green);

0 comments:

Post a Comment