Below we publish the code, in text format, of the Schaff trading system presented at Algotrading Day 2013 in Milan with Fabio Pacchioni. The code is in Easy Language format (Tradestation2000), easily convertible into Power Language for Multicharts or Tradestation9.

Here the full pantry about Schaff Indicator.

Download here the code for Metatrader4  QUI


Description : This is the Schaff Trend Cycle function Provided By : (c) Copyright 1999 for Multicharts/Tradestation


[IntrabarOrderGeneration = false]

Inputs: Price( Close), TCLen(10), MA1(145), MA2(240);

Variables: XMac(0), Frac1(0), PF(0), PFF(0), Frac2(0), Factor(.5);

{Calculate a MACD Line} XMac = MACD(c,MA1,MA2) ;

{1st Stochastic: Calculate Stochastic of a MACD}

Value1 = Lowest(XMac, TCLen); Value2 = Highest(XMac, TCLen) – Value1;

{%FastK of MACD} Frac1 = IFF(Value2 > 0, ((XMac – Value1) / Value2) * 100, Frac1[1]);

{Smoothed calculation for %FastD of MACD}

PF = IFF(CurrentBar<=1, Frac1, PF[1] + (Factor * (Frac1 – PF[1])));

{2nd Stochastic: Calculate Stochastic of Smoothed Percent FastD, ?PF?, above.}

Value3 = Lowest(PF, TCLen); Value4 = Highest(PF, TCLen) – Value3;

{%FastK of PF} Frac2 = IFF(Value4 > 0, ((PF – Value3) / Value4) * 100, Frac2[1]);

{Smoothed calculation for %FastD of PF} PFF = IFF(CurrentBar<=1, Frac2, PFF[1] + (Factor * (Frac2 – PFF[1])));

{******************Buy and Sell Signals******************}

If PFF crosses above 99 then

begin buy (“SchaffFC Long”) this bar at close;


else if PFF crosses below 1 then

begin sellshort (“SchaffFC Short”) this bar at close;


else if PFF crosses below 99 then

begin sell (“SchaffFC Sell”) this bar at close;


else if PFF crosses above 1 then

begin buytocover (“SchaffFC Buy”) this bar at close;