Woodie CCI

Here you can post and download custom indicators. PLEASE: Do not start topics unless you are posting your own indicator, they will be moved to appropriate section even if you do.

Moderator: admin

Woodie CCI

Postby Nikolay.Gekht » Tue Apr 20, 2010 6:13 pm

This is another port of the Scriptor's MT4 indicator to lua. The original indicator is here.

The indicator shows fast and slow CCI and also highlights neutral zone for the slow CCI for the first N periods after the slow CCI crosses zero.

woodiecci.png


download the indicator:
WOODIE_CCI.lua
(5.85 KiB) Downloaded 1805 times


The old version
WOODIECCI.lua
(5.78 KiB) Downloaded 780 times

Use it when the compatibility is problem.

Code: Select all
-- Indicator profile initialization routine
-- Defines indicator profile properties and indicator parameters
-- TODO: Add minimal and maximal value of numeric parameters and default color of the streams
function Init()
    indicator:name("Woodie CCI with histogramm coloring");
    indicator:description("");
    indicator:requiredSource(core.Bar);
    indicator:type(core.Oscillator);

   indicator.parameters:addGroup("Calculation");
    indicator.parameters:addInteger("F", "Fast CCI Periods", "", 12);
    indicator.parameters:addInteger("S", "Slow CCI periods", "", 50);
    indicator.parameters:addInteger("N", "Length of neutral zone in bars", "", 6);
   
   indicator.parameters:addGroup("Overbought / Oversold Levels");
   indicator.parameters:addInteger("Overbought", "Overbought", "",100);
   indicator.parameters:addInteger("Oversold", "Oversold", "", -100);
        indicator.parameters:addInteger("level_overboughtsold_width", "Level lines width", "The width of the overbought/oversold levels", 1, 1, 5);
        indicator.parameters:addInteger("level_overboughtsold_style", "Level lines stype", "The style of the overbought/oversold levels", core.LINE_SOLID);
        indicator.parameters:addColor("level_overboughtsold_color", "Level lines color", "The color of the overbought/oversold levels"  , core.rgb(96, 96, 138));
        indicator.parameters:setFlag("level_overboughtsold_style", core.FLAG_LEVEL_STYLE);


   
   indicator.parameters:addGroup("Style");
   indicator.parameters:addInteger("F_width", "Up Line width", "", 1, 1, 5);
    indicator.parameters:addInteger("F_style", "Up Line style", "", core.LINE_SOLID);
    indicator.parameters:setFlag("F_style", core.FLAG_LINE_STYLE);
    indicator.parameters:addColor("F_color", "Color of Fast CCI", "", core.rgb(255, 255, 0));
      
   indicator.parameters:addInteger("S_width", "Up Line width", "", 1, 1, 5);
    indicator.parameters:addInteger("S_style", "Up Line style", "", core.LINE_SOLID);
    indicator.parameters:setFlag("S_style", core.FLAG_LINE_STYLE);
    indicator.parameters:addColor("S_color", "Color of Slow CCI", "", core.rgb(255, 128, 0));
   
    indicator.parameters:addColor("H_color", "Color of neutral bars", "", core.rgb(192, 192, 192));
    indicator.parameters:addColor("HR_color", "Color of red bars", "", core.rgb(255, 0, 0));
    indicator.parameters:addColor("HB_color", "Color of blue bar", "", core.rgb(0, 0, 255));
   
   indicator.parameters:addGroup("Slow Bar/Line Style");
   indicator.parameters:addString("Slow", "Style", "", "Bar");
   indicator.parameters:addStringAlternative("Slow", "Bar", "", "Bar");
   indicator.parameters:addStringAlternative("Slow", "Line", "", "Line");
end

-- Indicator instance initialization routine
-- Processes indicator parameters and creates output streams
-- TODO: Refine the first period calculation for each of the output streams.
-- TODO: Calculate all constants, create instances all subsequent indicators and load all required libraries
-- Parameters block
local F;
local S;
local N;

local Slow;

local first;
local source = nil;
local CCIF;
local CCIS;

-- Streams block
local F = nil;
local S = nil;
local Z = nil;

-- Routine
function Prepare()
    F = instance.parameters.F;
    S = instance.parameters.S;
    N = instance.parameters.N;
   
   Slow= instance.parameters.Slow;

    source = instance.source;
    CCIF = core.indicators:create("CCI", source, F);
    CCIS = core.indicators:create("CCI", source, S);
    first = math.max(CCIF.DATA:first(), CCIS.DATA:first());
    local name = profile:id() .. "(" .. source:name() .. ", " .. F .. ", " .. S .. ")";
    instance:name(name);
    Z = instance:addInternalStream(0, 0);
    F = instance:addStream("F", core.Line, name .. ".F", "F", instance.parameters.F_color, first);
   F:setWidth(instance.parameters.F_width);
    F:setStyle(instance.parameters.F_style);
   
   if Slow == "Line" then
    S = instance:addStream("S", core.Line, name .. ".S", "S", instance.parameters.S_color, first);
   else
   S = instance:addStream("S", core.Bar, name .. ".S", "S", instance.parameters.S_color, first);
   end

    F:addLevel(instance.parameters.Oversold, instance.parameters.level_overboughtsold_style, instance.parameters.level_overboughtsold_width, instance.parameters.level_overboughtsold_color);
    F:addLevel(0, instance.parameters.level_overboughtsold_style, instance.parameters.level_overboughtsold_width, instance.parameters.level_overboughtsold_color);
    F:addLevel(instance.parameters.Overbought, instance.parameters.level_overboughtsold_style, instance.parameters.level_overboughtsold_width, instance.parameters.level_overboughtsold_color);

end

-- Indicator calculation routine
function Update(period, mode)
    CCIF:update(mode);
    CCIS:update(mode);
    if period >= first then
        F[period] = CCIF.DATA[period];
        S[period] = CCIS.DATA[period];

        local flag = false;
        local v = 0;

        if period >= first + 1 then
            if (S[period] >= 0 and S[period - 1] < 0) or
               (S[period] < 0 and S[period - 1] >= 0) then
                    v = 1;
                    flag = true;
            elseif Z[period - 1] > 0 then
                flag = true;
                v = Z[period - 1] + 1;
            end
        else
            -- initally we are in the gray zone
            flag = true;
            v = 1;
        end

        if flag then
            Z[period] = v;
            if Z[period] > N then
                flag = false;
            end
        end

        if flag then
            S:setColor(period,instance.parameters.H_color);   
        else
            Z[period] = 0;
            if S[period] > 0 then
                S:setColor(period,instance.parameters.HB_color);   
            else
                 S:setColor(period,instance.parameters.HR_color);   
            end
        end
    else
        Z[period] = 0;
    end
end

Timed Tick WOODIE_CCI version of indicator.
viewtopic.php?f=17&t=65432&p=116357#p116357
Last edited by Apprentice on Mon Dec 04, 2017 7:21 am, edited 4 times in total.
Reason: Options for style and colors of custom levels are added.
Nikolay.Gekht
FXCodeBase: Base Builder
 
Posts: 1222
Joined: Wed Dec 16, 2009 6:39 pm
Location: Cary, NC

Re: Woodie CCI

Postby zekelogan » Wed Apr 21, 2010 12:52 pm

VERY cool. One of my favorite indicators.

As a Woodie traditionalist, the only thing I can suggest is to make the slow CCI line thicker than the fast.

Maybe an alternate version for us weirdo's ? :D
zekelogan
FXCodeBase: Confirmed User
 
Posts: 56
Joined: Sun Jan 10, 2010 2:45 pm

Re: Woodie CCI

Postby Nikolay.Gekht » Wed Apr 21, 2010 4:20 pm

In the next version of Marketscope. Now there is no way to tune width of the lines. I requested this functionality and will modify the indicator as soon as this feature will developed.
Nikolay.Gekht
FXCodeBase: Base Builder
 
Posts: 1222
Joined: Wed Dec 16, 2009 6:39 pm
Location: Cary, NC

Re: Woodie CCI

Postby zekelogan » Wed Apr 21, 2010 4:58 pm

Thanks Nikolay!
zekelogan
FXCodeBase: Confirmed User
 
Posts: 56
Joined: Sun Jan 10, 2010 2:45 pm

Re: Woodie CCI

Postby michaelwen » Thu Apr 22, 2010 12:08 am

could you explain a little bit how to use this indicators. thanks
michaelwen
 
Posts: 19
Joined: Sun Mar 28, 2010 11:12 pm

Re: Woodie CCI

Postby Nikolay.Gekht » Thu Apr 22, 2010 8:11 am

I think you have to start from this: http://www.woodiescciclub.com/start.htm
Nikolay.Gekht
FXCodeBase: Base Builder
 
Posts: 1222
Joined: Wed Dec 16, 2009 6:39 pm
Location: Cary, NC

Re: Woodie CCI

Postby zoglchaim » Mon Jun 28, 2010 4:20 pm

hey great job there
do you think that you could add SIDEWINER and a CHOP ZONE INDICATORs? CZI and SI in short
zoglchaim
 
Posts: 2
Joined: Mon Jun 21, 2010 10:17 pm

Re: Woodie CCI

Postby patick » Thu Aug 05, 2010 1:06 am

Thanks for the great indicator, Nikolay.

Is it possible to modify to display the current CCI level the same way as StochRSI?
patick
 
Posts: 36
Joined: Tue Mar 30, 2010 2:11 pm

Re: Woodie CCI

Postby Apprentice » Fri Apr 08, 2011 2:21 pm

Line Style Options Added.
You Can Now Adjust Overbought / Oversold Line Levels

patick
I'm not sure on which aspect of StochRSI you are thinking.
User avatar
Apprentice
FXCodeBase: Confirmed User
 
Posts: 17510
Joined: Thu Dec 31, 2009 11:59 am
Location: Zagreb, Croatia

Re: Woodie CCI

Postby luigipg » Sun Apr 10, 2011 6:05 am

There are three types of entrance signals.
These will all assume a long entrance. Short entrances are the reverse.
1. CCI 50 crosses above its Zero line. The CCI 14 must also be above its zero line and price must close above the 34EMA.
2. First Zero Line Reject after the CCI 50 crosses above zero.
The CCI50 has crossed above zero. Then either the CCI 50 or CCI 14 falls below +100 and shoots back up.
3. Slingshot- The CCI 50 is above its zero line.
The CCI 14 dips below -75 , moves upward and crosses zero.
Exits are up to you. Dr. Bob couldn't make up his mind about when to exit either. The entrances are great though.
luigipg
 
Posts: 70
Joined: Sun May 23, 2010 8:01 am

Next

Return to Custom Indicators

Who is online

Users browsing this forum: Majestic-12 [Bot], Yahoo [Bot] and 12 guests