Page 1 of 2

Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Mon Jun 21, 2010 2:05 am
by Alexander.Gettinger

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Mon Jun 21, 2010 2:06 am
by Alexander.Gettinger
Signal:
Code: Select all
function Init()
    strategy:name("Fx Sniper's Ergodic CCI Trigger signal");
    strategy:description("");

    strategy.parameters:addGroup("Parameters");

    strategy.parameters:addInteger("pq", "pq", "pq", 4);
    strategy.parameters:addInteger("pr", "pr", "pr", 8);
    strategy.parameters:addInteger("ps", "ps", "ps", 5);
    strategy.parameters:addInteger("trigger", "trigger", "trigger", 4);
    strategy.parameters:addString("MA_Method", "Method of MA", "", "MVA");
    strategy.parameters:addStringAlternative("MA_Method", "EMA", "", "EMA");
    strategy.parameters:addStringAlternative("MA_Method", "KAMA", "", "KAMA");
    strategy.parameters:addStringAlternative("MA_Method", "LWMA", "", "LWMA");
    strategy.parameters:addStringAlternative("MA_Method", "MVA", "", "MVA");
    strategy.parameters:addStringAlternative("MA_Method", "TMA", "", "TMA");

    strategy.parameters:addString("Period", "Timeframe", "", "m5");
    strategy.parameters:setFlag("Period", core.FLAG_PERIODS);

    strategy.parameters:addGroup("Signals");
    strategy.parameters:addBoolean("ShowAlert", "Show Alert", "", true);
    strategy.parameters:addBoolean("PlaySound", "Play Sound", "", false);
    strategy.parameters:addFile("SoundFile", "Sound File", "", "");
end

local SoundFile;
local gSourceBid = nil;
local gSourceAsk = nil;
local first;

local BidFinished = false;
local AskFinished = false;
local LastBidCandle = nil;

local Ind;

function Prepare()
    ShowAlert = instance.parameters.ShowAlert;
    if instance.parameters.PlaySound then
        SoundFile = instance.parameters.SoundFile;
    else
        SoundFile = nil;
    end
   
    assert(not(PlaySound) or (PlaySound and SoundFile ~= ""), "Sound file must be specified");
    assert(instance.parameters.Period ~= "t1", "Signal cannot be applied on ticks");

    ExtSetupSignal("Fx Sniper's Ergodic CCI Trigger signal:", ShowAlert);

    gSourceBid = core.host:execute("getHistory", 1, instance.bid:instrument(), instance.parameters.Period, 0, 0, true);
    gSourceAsk = core.host:execute("getHistory", 2, instance.bid:instrument(), instance.parameters.Period, 0, 0, false);

    Ind = core.indicators:create("FX_SNIPER'S_ERGODIC_CCI_TRIGGER", gSourceBid, instance.parameters.pq,instance.parameters.pr,instance.parameters.ps,instance.parameters.trigger,instance.parameters.MA_Method);

    first = Ind.DATA:first() + 2;

    local name = profile:id() .. "(" .. instance.bid:instrument() .. "(" .. instance.parameters.Period  .. ")" .. instance.parameters.pq .. ")" .. instance.parameters.pr .. ")" .. instance.parameters.ps .. ")" .. instance.parameters.trigger .. ")" .. instance.parameters.MA_Method .. ")";
    instance:name(name);
end

local LastDirection=nil;

-- when tick source is updated
function Update()
    if not(BidFinished) or not(AskFinished) then
        return ;
    end

    local period;

    -- update moving average
    Ind:update(core.UpdateLast);

    -- calculate enter logic
    if LastBidCandle == nil or LastBidCandle ~= gSourceBid:serial(gSourceBid:size() - 1) then
        LastBidCandle = gSourceBid:serial(gSourceBid:size() - 1);

        period = gSourceBid:size() - 1;
        if period > first then
         if Ind.buff1[period]>Ind.buff2[period] and Ind.buff1[period-1]<=Ind.buff2[period-1] and LastDirection~=1 then
                ExtSignal(gSourceAsk, period, "Buy", SoundFile);
                LastDirection=1;
         elseif Ind.buff1[period]<Ind.buff2[period] and Ind.buff1[period-1]>=Ind.buff2[period-1] and LastDirection~=-1 then
                ExtSignal(gSourceBid, period, "Sell", SoundFile);
                LastDirection=-1;
         end
       
        end
    end
end

function AsyncOperationFinished(cookie)
    if cookie == 1 then
        BidFinished = true;
    elseif cookie == 2 then
        AskFinished = true;
    end
end

local gSignalBase = "";     -- the base part of the signal message
local gShowAlert = false;   -- the flag indicating whether the text alert must be shown

-- ---------------------------------------------------------
-- Sets the base message for the signal
-- @param base      The base message of the signals
-- ---------------------------------------------------------
function ExtSetupSignal(base, showAlert)
    gSignalBase = base;
    gShowAlert = showAlert;
    return ;
end

-- ---------------------------------------------------------
-- Signals the message
-- @param message   The rest of the message to be added to the signal
-- @param period    The number of the period
-- @param sound     The sound or nil to silent signal
-- ---------------------------------------------------------
function ExtSignal(source, period, message, soundFile)
    if source:isBar() then
        source = source.close;
    end
    if gShowAlert then
        terminal:alertMessage(source:instrument(), source[period], gSignalBase .. message, source:date(period));
    end
    if soundFile ~= nil then
        terminal:alertSound(soundFile, false);
    end
end

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Fri May 20, 2011 10:12 am
by oritzbaba
Hi Alexander Gettinger and all the other geniuses out there like Apprentice, Sunshine, Nikolay and others. You are doing a good job helping newbies and novice programmers like me to hopefully succeed.

I have had most of my best trades with Fx Sniper's Ergodic CCI Trigger combined with other indicators. Please to make the FX Sniper strategy work more efficiently, can you add all the other very helpful features like set stop/limit, allowed trading, allowed side etc as contained in the MACROSS_CONF_DIST_STRATEGY.

Please help out, God bless you all.

Thanks.

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Fri May 20, 2011 4:45 pm
by Apprentice
Your request has been added to developmental cue.

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Sat May 21, 2011 6:50 pm
by oritzbaba
Thanks Apprentice,

I tried to backtest this strategy and I have some observations; 1. It does not trade all crosses either buy/sell as shown by the signal alert arrows on the chart. 2, It enters a trade order sometimes before the signal alert arrow on the chart and at other times after. 3, In my demo trade, it is yet to take any trade even where there had been different crossing opportunities for the strategy to trade.

Please note both the signal alert on the chart and the strategy settings are the same. please help out, what am I doing wrong? One more thing, does the the strategy remain active on FXCM server when my computer laptop is shot down? I know trailing stop does but is strategy on it?

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Fri Apr 22, 2016 3:31 am
by adolfainsley8
One more thing, does the the strategy remain active on FXCM server when my computer laptop is shot down? I know trailing stop does but is strategy on it????

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Fri Apr 22, 2016 5:54 am
by Apprentice
does the the strategy remain active on FXCM server when my computer laptop is shot down?

Unfortunately not .
You will need to setup a VPS for this task.

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Fri Apr 22, 2016 7:05 am
by Apprentice
Strategy is available here.
viewtopic.php?f=31&t=63401

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Fri Jun 24, 2016 1:58 am
by jaricarr
Hi Apprentice,

the indicator is causing an error.

Thanks,
JariCarr

Re: Fx Sniper's Ergodic CCI Trigger indicator and signal

PostPosted: Fri Jun 24, 2016 3:11 am
by Apprentice
Try it now.