Page 1 of 2

TS strategies I found on the net/magazines/etc

Posted: Sun Jun 11, 2006 8:07 pm
by blr121970
I would like to have this thread where I will post all strategies that I found on the net or other places.

This is so that I will not clutter the forum with one strategy per thread.

Hope Michal will be OK with this.

Posted: Sun Jun 11, 2006 8:12 pm
by blr121970
The following web site has many TS strategies
(and for other applications as well):

XEA Trade

I liked the Williams 19 by Larry Williams strategy:

Williams 19

Posted: Sun Jun 11, 2006 8:33 pm
by blr121970
This is the RSI Pivot system originally posted by Orc and then
modified by eKam on the TS forum. Gives some interesting results on @ES/@ER2.

Explanation of the strategy (as explained by eKam, copied verbatim):


From reading the code, apparently this indicator plots two kinds of buy
signals. Pivot-sB is a "significant buy" (based on divergence), whereas
Pivot-B is a normal buy (based solely on RSI being "too low").

It seems that Pivot-B has lower reliability for a counter trend signal
during strong trend, whereas both are useful during a range bound
market.

This code is obviously a stripped down version of something more
complete. I sure hope that that's why it does not plot exit signals, or to
plot short signals. Obviously it was posted here in the hope that you will
go visit their web site and buy something, but the code is educational
nevertheless. I will probably use it to build my own complete RSI based
buy/sell indicator.

Note that being an oscilator, traditional use of RSI gives counter trend
signals based completely on absolute values of RSI below which to go
long (and vice versa for shorts), doing so is not a very reliable signal
during a strong trend. Instead of relying on a fixed value to call an RSI
reading "too low" to issue buy signals, this indicator subtracts from 60
an adaptive threshold value based on a multiplier value of 1.68 from the
average RSI value of the last 50 bars.


Topic 13560

Posting the code for people who do not have access to the TS forums

Code: Select all

[LegacyColorValue = true];

{***********************************************************************
Indicator..........: Power RSI Pivot by FEDSignal.com
Destination........: Counter-Trend System
E-Mail.............: info@fedsignal.com
Last Modified Date.: 06/26/2003
Type Signals.......: Only RSI Pivot
Interval Settings..: Tick Bar, Volume Bar, TimeBar.
Aplication.........: RadarScreen 7.XX, TradeSation 7.XX
RadarScreen®, TradeSation® are registered trademarks of TradeStation Technologies, Inc.
*************************************************************************}

{
 Orc,  6/27/2003 - posted on
                   https://www.tradestationworld.com/discussions/topic.asp?TOPIC_ID=13560
 eKam, 6/29/2003 - code cleaned up
                 - added short signals
 ekam, 7/26/2003 - plot support / resistence lines
                 - added reverse divergence signals
 ekam, 7/30/2003 - added alerts in the style of combs and RalphP
 }

Input:
      Length(7),price((o+c)/2),
      siElookup(3);

var:
    k_15(15), k_50(50),
    RSIWAvg(0),
    lastRSIAtPivotLo(0),lastPriceAtPivotLo(0),lastLoAtPivotLo(0),
    lastRSIAtPivotHi(0),lastPriceAtPivotHi(0),lastHiAtPivotHi(0);

{ figure out long/short threshold }
var:
    idx(0), RSIAvg(0),
    longThreshold(0),shrtThreshold(0),
    _RSI(0);

var:
    alertTextID(-1);

Var: {Signals siB: RSI Buy , siS: RSI Sell,
      1: Significant Signal
      2: Worth Noting
      3: Rev Divergence   }

   siB1(""), siS1(""),
   siB2(""), siS2(""),
   siB3(""), siS3(""),
   si1LE(""), si2LE(""), si3LE(""), siLE(""),
   si1SE(""), si2SE(""), si3SE(""), siSE(""),
   mrosiLE(0), mrosiSE(0) ;      

siB1 = "." ; siB2 = "." ; siB3 = "." ;
siS1 = (".") ; siS2 = (".") ; siS3 = (".") ;

{ ................................................................................ }

if barnumber = 1 then begin
   alertTextID = Text_New(date,time,0,"RSI");
end;

_RSI =  RSI(Price,Length);
RSIAvg  = Average(_RSI,k_50);
longThreshold = 60 - (100-RSIAvg)/1.68;
shrtThreshold = 40 + (RSIAvg)/1.68;
RSIWAvg  = WAverage(RSI(Price,Length),3);

   {
{ drawing related variables }
var: lngDiverColor(Cyan),lngRSIColor(darkCyan),lngRevDiverColor(Blue);
var: srtDiverColor(Magenta), srtRSIColor(darkMagenta), srtRevDiverColor(Red);
   }
{ ................................................................................ }
{ Long signal .................................................................... }
{ ................................................................................ }
   
if RSIWAvg[1] < RSIWAvg and
   RSIWAvg[1] < RSIWAvg[2] and
   RSIWAvg[2] < RSIWAvg[3] and
   RSIWAvg[3] < RSIWAvg[4] then
{ ................................................................................ }
begin { last bar was a RSI pivot low - Significant - siB1 ........................ }
{ ................................................................................ }

      If RSIWAvg[1] < (longThreshold + k_15) and { RSI was "low enough" }
         Price < lastPriceAtPivotLo and { price was higher in last RSI pivot low, but }
         lastRSIAtPivotLo < _RSI then   { RSI   was lower => divergence }
         siB1 = "Y" ;

{ ................................................................................ }
{ No divergence, but RSI very low, and so it's worth noting - siB2 ............... }
{ ................................................................................ }   
   
         If RSIWAvg[1] < longThreshold then
      siB2 = "Y" ;
   
{ ................................................................................ }
{ Reverse Divergence - siB3 ...................................................... }
{ ................................................................................ }

   If RSIWAvg[1] > (shrtThreshold - k_15) { RSI was "high enough" }
      { a pivot low while RSI reading is high, look for rev divergence }
      and Price > lastPriceAtPivotLo     { price was higher in last RSI pivot low, but }
      and lastRSIAtPivotLo < _RSI then   { RSI was lower => rev divergence }
     siB3 = "Y" ;

{ ................................................................................ }
   lastPriceAtPivotLo = Price;
   lastLoAtPivotLo    = L;
   lastRSIAtPivotLo   = _RSI;
{ ................................................................................ }
end;
{ ................................................................................ }

{ ................................................................................ }
{ Short signal ................................................................... }
{ ................................................................................ }
   
If RSIWAvg[1] > RSIWAvg and
   RSIWAvg[1] > RSIWAvg[2] and
   RSIWAvg[2] > RSIWAvg[3] and
   RSIWAvg[3] > RSIWAvg[4] then
{ ................................................................................ }
begin { last bar was a RSI pivot high - Significant - siS1 ....................... }
{ ................................................................................ }

   If RSIWAvg[1] > (shrtThreshold - k_15) and { RSI was "high enough" }
      { RSI high enough for a pivot high, look for divergence }
      Price > lastPriceAtPivotHi and { price was higher in last RSI pivot high, but }
      lastRSIAtPivotHi > _RSI then   { RSI   was higher => divergence }
      siS1 = "Y" ;

{ ................................................................................ }
{ No divergence, but RSI very low, and so it's worth noting - siS2 ............... }
{ ................................................................................ }

   If RSIWAvg[1] > shrtThreshold then
           { no divergence, but RSI very high, and so it's worth noting }
    siS2 = "Y" ;

{ ................................................................................ }
{ Rev divergence - siS3 .......................................................... }
{ ................................................................................ }
   
   If RSIWAvg[1] < (longThreshold + k_15) and { RSI was "low enough" }
      { a pivot high while RSI reading is low, look for rev divergence }
      Price < lastPriceAtPivotHi and { price was lower in last RSI pivot high, but }
      lastRSIAtPivotHi > _RSI then   { RSI   was higher => rev divergence }
   siS3 = "Y" ;

{ ................................................................................ }
   lastPriceAtPivotHi = Price;
   lastHiAtPivotHi    = H;
   lastRSIAtPivotHi   = _RSI;
{ ................................................................................ }
end;
{ ................................................................................ }
   
{ ................................................................................ }   
{ Utility Signals for easy printing and order entry .............................. }   
   
If siB1 = "Y" and siB1 <> siB1[1] then si1LE = "Y" else si1LE = "." ;
If siB2 = "Y" and siB2 <> siB2[1] then si2LE = "Y" else si2LE = "." ;
If siB3 = "Y" and siB3 <> siB3[1] then si3LE = "Y" else si3LE = "." ;

If    si1LE = "Y" or si2LE = "Y" or si3LE = "Y" then
   siLE = "Y" else siLE = "." ;

If siS1 = "Y" and siS1 <> siS1[1] then si1SE = "Y" else si1SE = "." ;
If siS2 = "Y" and siS2 <> siS2[1] then si2SE = "Y" else si2SE = "." ;
If siS3 = "Y" and siS3 <> siS3[1] then si3SE = "Y" else si3SE = "." ;

If    si1SE = "Y" or si2SE = "Y" or si3SE = "Y" then
   siSE = "Y" else siSE = "." ;

{ ................................................................................ }
{ Order Entry .................................................................... }
{ ................................................................................ }

If siLE = "Y" and siLE <> siLE[1] and mrosiSE < 0 then
   
   if si1LE = "Y" then
   Buy ("si1.L") next bar at close this bar Limit

   else if si2LE = "Y" then
   Buy ("si2.L") next bar at close this bar Limit

   else if si3LE = "Y" then
   Buy ("si3.L") next bar at close this bar Limit ;

mrosiLE = MRO(siLE = "Y", siElookup, 1) ;

{ ................................................................................ }

If siSE = "Y" and siSE <> siSE[1] and mrosiLE < 0 then
   
   if si1SE = "Y" then
   Sell Short ("si1.S") next bar at close this bar Limit

   else if si2SE = "Y" then
   Sell Short ("si2.S") next bar at close this bar Limit

   else if si3SE = "Y" then
   Sell Short ("si3.S") next bar at close this bar Limit ;

mrosiSE = MRO(siSE = "Y", siElookup, 1) ;

{ ................................................................................ }



 
{
 the original code follows:
}
{
Input:Length(7);

Vars:   Condition99(FALSE),
        Value8(15),
        Value3(50);

Value1  = WAverage(RSI(Close,Length),3);
Value2  = 0;

{ ................................................................................ }
{ ................................................................................ }
{ ................................................................................ }
For Value7 = 0 to Value3
Begin
        Value2 = Value2 + RSI(Close,Length)[Value7];
End;

Value4  = Value2/(Value3-1);

Value5  = 100 - (100-Value4)/1.68;
Value6  = Value5 - 40;

If Value1[1] < Value1 and Value1[1] < Value1[2] and Value1[2] < Value1[3] and Value1[3] < Value1[4] then
Begin
        If Value1[1] < (Value6 + Value8) and Value9 > (Open + Close)/2 and Value10 < RSI(Close,Length) then
        Begin
        Plot1(L-C*0.001,"Pivot-sB");
        Condition99 = FALSE;
        Value9 = (Open + Close)/2;
        Value10 = RSI(Close,Length);
        End
        Else
        Begin
        If Value1[1] < Value6 then
        Begin
                Plot2(L-C*0.001,"Pivot-B");
        Condition99 = TRUE;
        Value9 = (Open + Close)/2;
        Value10 = RSI(Close,Length);
        End;
        End;
End;
 
}

Posted: Sun Jun 11, 2006 9:00 pm
by blr121970

Re: TS strategies I found on the net/magazines/etc

Posted: Sun Jun 11, 2006 9:33 pm
by michal.kreslik
blr121970 wrote:I would like to have this thread where I will post all strategies that I found on the net or other places.

This is so that I will not clutter the forum with one strategy per thread.

Hope Michal will be OK with this.


Great!

Why shouldn't I be OK with this? :) These forums are set up so that Avery and other honest people don't have to fall in line with TS forum police any more.

Indeed, there won't ever be any forum police here :) The only users that will get into trouble here are nasty spammers. :smt071

It would be great if you posted a brief description along with every link to a strategy you post here in this thread.

Michal

Posted: Sun Jun 11, 2006 9:47 pm
by blr121970
Thanks Michal.

I will add an explanation for each strategy.

Posted: Sun Jun 11, 2006 10:12 pm
by blr121970
The following URL has a lot of indicators and systems, but unfortunately for MetaTrader only:

http://www.lightpatch.com/forex/mt_yahoo/

Can someone using MetaTrader please try out a few of the systems there, like for example:

ASC++ Expert

and let me know if there are any systems worthwhile so that I can port them to TS?

Posted: Sun Jun 11, 2006 11:19 pm
by blr121970
OK now for the world-famous :lol: TTM squeeze strategy.

Explanation of Indicator/Strategy:

For an explanationof the TTM squeeze (and trend) indicator and strategy
please review the following videos (WARNING: you will need the Macromedia Flash Plugin):

squeeze

ttmtrend

5minsqueezechecklist

CBOT seminar by Hubert Senters (the voice in the previous videos)

Note: The strategy is not perfect - because it does not exit in certain conditions mentioned by Hubert
in the 5minsqueezechecklistchicago video - but it is a starting point nevertheless.

The location of the main thread in TS forum:

Topic_ID 14439

Posted: Thu Jun 15, 2006 4:49 am
by blr121970
Strategy : Thomas Stridsman's Medians On The Move
Explanation: See Active Trader, March 2006, p. 28

Traders' Studio code by Mr. Stridsman:

Code: Select all

Sub AtmMarch (LookBack, DaysInTrade As Integer, LossMult As Double)
'Copyright (C), 2005: Thomas Stridsman
'Created with Traders' Studio, Version 1.3.4

Dim MyArray As Array
Dim Counter, ArraySize, ArrayMidPoint As Integer
Dim MinMove, EP, HC As Double
Dim ATR, MyTypical As BarArray(50)

MinMove = GetActiveMinMove()
ATR = Average(TrueRange, LookBack, 0)

ArraySize = LookBack * 2
ReDim(MyArray, ArraySize)
For Counter = 0 To (LookBack - 1) Step 1
  MyArray[Counter * 2 + 0] = Close[Counter]
  MyArray[Counter * 2 + 1] = Close[Counter]
Next
NumSort(MyArray)

ArrayMidPoint = ArraySize / 2

MyTypical = (MyArray[ArrayMidPoint-1] + MyArray[ArrayMidPoint]) /2
'SUBSTITUTE WITH THIS TO RUN MA SYSTEM: MyTypical = Average(Close, LookBack)

If Close < MyTypical Then
  Buy("Buy", 1, MyTypical + MinMove, Stop, Day)
End If

If MarketPosition = +1 Then
  EP = GetEntryPrice(0)
  HC = Highest(Close, BarsSinceEntry, 0)
  ExitLong("XL-L", "Buy", 1, Max(EP, HC) - LossMult * ATR - MinMove, Stop, Day)
  If BarsSinceEntry >= DaysInTrade Then
    ExitLong("XL-T", "Buy", 1, 0, Market, Day)
  End If
End If

End Sub

Posted: Fri Jun 16, 2006 9:44 pm
by blr121970
The recording of the CBOT online seminar Trading Systems that Work: The Idea Behind Developing A Proprietary Indicator
with Thomas Stridsman on June 13, 2006 is available at:

Seiminar: Trading Systems that Work: The Idea Behind Developing A Proprietary Indicator

The PDF of the presentation slides is at:

PDF of presentation slides