Page 1 of 3

Schaff Trend Cycle Oscillator

PostPosted: Wed Jan 20, 2010 7:18 pm
by Nikolay.Gekht
Schaff Trend Cycle Oscillator

Parameters:
Schaff cycle periods (C)
Short periods (S)
Long periods (L)

MCD=WMA(PRICE, S) - WMA(PRICE, L)
ST=(MCD - MAX(MCD,C))/(MAX(MCD,C)-MIN(MCD,C) * 100
OSCILLATOR=WMA(ST, C/2);

Where WMA is Wilders Moving Average.

Read more about the indicator here

schtc.jpg


Download:
SCHTC.lua
(2.27 KiB) Downloaded 2579 times

Schaff Trend Cycle Oscillator with Alert.lua
(13.18 KiB) Downloaded 1183 times

This indicator will provides Audio / Email Alerts if and when Schaff Trend Cycle Oscillator cross Central, Over Bought or Over Sold Level.

Dec 14, 2015: Compatibility issue Fixed. _Alert helper is not longer needed.

Re: [beta] Schaff Trend Cycle Oscillator

PostPosted: Mon Mar 12, 2012 6:17 am
by jackfx09
Could we please have a strategy for the Schaff Trend Cycle Oscillator.

Very simple rules, similar to a Stochastic Strategy:

Buy: cross UP through the oversold parameter of user specified threshold (30)

Sell: cross DOWN through the overbought parameter of user specified threshold (70)

Please allow user specified parameter for OVERBOUGHT/OVERSOLD and PERIODS for cycle, short and long periods.

Thanks!

sjc

Re: [beta] Schaff Trend Cycle Oscillator

PostPosted: Mon Mar 12, 2012 12:23 pm
by Apprentice
Requested can be found here.
viewtopic.php?f=31&t=14741&p=27939#p27939

Re: [beta] Schaff Trend Cycle Oscillator

PostPosted: Thu Oct 11, 2012 9:06 am
by Coondawg71
Could we please request a Schaff Trend Oscillator DIVERGENCE indicator based on the Schaff Trend. Divergence based on PRICE vs. Schaff Trend crossing signal line. This attachment uses EMA as signal line.

Perhaps this MT4 indicator will assist.

Code: Select all
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "perky_z@yahoo.com & Darkstonexa@yahoo.com.au"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 LightSeaGreen
#property indicator_color2 Red
 
//---- input parameters
extern int SigPeriod = 23;
extern int MAShort = 23;
extern int MALong = 50;
extern int Cycle = 10;
extern int BarsCount = 500;
 
//----
int shift=0;
double MCD=0, LLV=0, HHV=0, i=0, s=0 ,MA_Short=0, MA_Long=0, ST=0;
double smconst=0;
bool check_begin=false;
bool check_begin_MA=false;
int sum=0, n=0, bars_=0;
double MA=0.0, prev=0.0;
double MCD_Arr[500];
//---- buffers
double TrendBuffer[];
double SignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
 
//---- 3 additional buffers are used for counting.
   IndicatorBuffers(2);
//---- indicator buffers
   SetIndexBuffer(0, TrendBuffer);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(1, SignalBuffer);
   SetIndexStyle(1, DRAW_LINE);
   //---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Schaff Trend(" + Cycle + ")");
   SetIndexDrawBegin(0, BarsCount);
   return(0);
  }
//+------------------------------------------------------------------+
//|  Schaff Trendy                                                   |
//+------------------------------------------------------------------+
int start()
  {
   check_begin = false;
   check_begin_MA = false;
   n = 1;
   s = 1;
   double a = 1 + Cycle / 2;
   smconst = 1 / a;
   if(BarsCount > 0)
     {
       if(BarsCount > Bars)
         {
           bars_ = Bars;
         }
       else
         {
           bars_ = BarsCount;
         }
     }
   for(shift = bars_ ; shift >= 0; shift--)
     {
       MA_Short = iMA(NULL, 0, MAShort, 0, MODE_EMA, PRICE_TYPICAL, shift);
       MA_Long = iMA(NULL, 0, MALong, 0, MODE_EMA, PRICE_TYPICAL, shift);
       MCD_Arr[n] = MA_Short - MA_Long;
       MCD = MA_Short - MA_Long;
       //----
       if(n >= Cycle )
         {
           n = 1;
           check_begin = true;
         }
       else
           n = n + 1;
 
       if(check_begin)
         {
           for(int i = 1; i <= Cycle; i++)
             {
               if(i == 1)
                   LLV = MCD_Arr[i];
               else
                   if(LLV > MCD_Arr[i])
                       LLV = MCD_Arr[i];
                   //----
                   if(i == 1 )
                       HHV = MCD_Arr[i];
                   else
                       if(HHV < MCD_Arr[i])
                           HHV = MCD_Arr[i];
             }
           ST = ((MCD - LLV) / (HHV - LLV))*100 + 0.01;
           s = s + 1;
           if(s >= (Cycle) / 2)
             {
               s = 1;
               check_begin_MA = true;
             }
         }
       else ST = 0;
           if(check_begin_MA)
             {
               prev = TrendBuffer[shift+1];
               MA = smconst*(ST - prev) + prev;
               //Comment ("\nMa= ",MA,"\nPrev= ",prev,"\nST=  ",ST,"\nLLV=  ",LLV,"\nHHV=  ",HHV,"\nMCD= ",MCD,"\nTrendBuffer=  ",TrendBuffer[shift-1],"\n smsconst  ",smconst);
               TrendBuffer[shift]=MA;
               
             }
             
     }
     for(shift = bars_ ; shift >= 0; shift--)
     {
     SignalBuffer[shift]=iMAOnArray(TrendBuffer,0,SigPeriod,0,MODE_EMA,shift);
     }
   return(0);
  }
//+------------------------------------------------------------------+




Thanks,

sjc

Re: [beta] Schaff Trend Cycle Oscillator

PostPosted: Thu Oct 11, 2012 2:03 pm
by Apprentice
Your request is added to the development list.

Re: Schaff Trend Cycle Oscillator

PostPosted: Fri Oct 12, 2012 8:08 am
by Coondawg71
Can I please request a MTF MCP heatmap of this indicator. It would prove very useful.

Thanks,

sjc

Re: Schaff Trend Cycle Oscillator

PostPosted: Fri Oct 12, 2012 11:38 am
by Apprentice
MTF MCP Day Change Heat Map.png


Calculation Modes
1. "Slope"
Shows the slope of underlying indicator. Growth or decline.
2. "OB/OS"
Slope with reference to the overbought / oversold conditions.
3. "Central Line"
Slope with reference to the Central Line.
MTF MCP Schaff Trend Cycle Oscillator Heat Map.lua
(12.57 KiB) Downloaded 1211 times



Please inslatall Schaff Trend Cycle Oscillator (SCHTC) indicator, in order to use this indicator.

Re: Schaff Trend Cycle Oscillator

PostPosted: Fri Oct 12, 2012 3:20 pm
by Apprentice
MTF SCHTC.png

MTF SCHTC.lua
(11.13 KiB) Downloaded 1343 times

Re: Schaff Trend Cycle Oscillator

PostPosted: Mon Oct 29, 2012 4:55 am
by guangho
I think this index is very useful, you can now increase on the basis of a same calculation of line? Parameters can be set, it is best to translation.

Thank you very much.

Re: Schaff Trend Cycle Oscillator

PostPosted: Mon Oct 29, 2012 2:46 pm
by Apprentice
Can you be more clear, unfortunately I do not understand your remark.