Attached is the Black Dog indicator for ThinkorSwim along with a strategy on how to use it. Black dog system is a trading strategy based on the moving averages (EMA) to plot the highs and lows band. I came across this while browsing the ThinkorSwim Yahoo group.
Some notes I found:
When to Buy (long):
Some notes I found:
After reading through the Black Dog System literature, I came up with the following script that should be used ONLY for the 5 minute Time Frame. It uses and Exponential Moving Average (EMA) to plot the highs/lows band instead of the plain average. Yellowish and Blueish arrows are the SESs (Standard Entry Signal). Yellowish arrows for closes above the band and blueish arrows for closes below the band.
It plots WHITE Black Dogs, for both up and down crosses of the SLOW 100-period EMA by the Fast 20 period EMA instead of BLACK ones since I normally use a black background. These EMAs and their crosses are computed after changing the aggregation period to 20 minutes (4 times the base aggregation period of 5 minutes).
This script should be used only on 5 minute aggregation period charts. To use on a 15 or 60 minute chart, one should edit and rename this script and change the
Code:def agg = AggregationPeriod.TWENTY_MIN;
line to
Code:def agg = AggregationPeriod.HOUR;
or
Code:def agg = AggregationPeriod.FOUR_HOURS;
There is not a 40-minute aggregation period constant for use with a 10-minute chart, but maybe one could use the "THIRTY_MIN" constant as a substitute.
thinkScript Code
Rich (BB code):
# Black Dogs & SESs---For 5 minute chart ONLY
# NAMED BlackDog_SES_5min
# Here, "Black Dogs" are WHITE for use on a dark background.
input Hprice = high;
input Lprice = low;
input price = close;
input Hlength = 50;
input Llength = 50;
input Hdisplace = 0;
input Ldisplace = 0;
# High / Low Band for SES computations---------------------------
# EMA of HIGHS-----------------------------------------------------------
plot HAvg = MovAvgExponential(Hprice[-Hdisplace], Hlength);
HAvg.SetDefaultColor(Color.WHITE);
HAvg.SetLineWeight(5);
HAvg.SetPaintingStrategy(PaintingStrategy.LINE_VS_POINTS);
HAvg.SetStyle(Curve.FIRM);
HAvg.HideBubble();
HAvg.HideTitle();
HAvg.AssignValueColor(if HAvg< HAvg[1] then Color.VIOLET else (if HAvg == HAvg[1] then Color.YELLOW else Color.YELLOW));
# EMA of LOWS------------------------------------------------------------
plot LAvg = MovAvgExponential(Lprice[-Ldisplace], LLength);
LAvg.SetDefaultColor(Color.WHITE);
LAvg.SetLineWeight(5);
LAvg.SetPaintingStrategy(PaintingStrategy.LINE_VS_POINTS);
LAvg.SetStyle(Curve.FIRM);
LAvg.HideBubble();
LAvg.HideTitle();
LAvg.AssignValueColor(if LAvg< LAvg[1] then Color.VIOLET else (if LAvg == LAvg[1] then Color.YELLOW else Color.YELLOW));
# Crosses for SES Arrows----------------------------------------------
# SES = Standard Entry Signal
# Cross above High Average -----------------------------------------
def CrossUp = if price > HAvg AND price[1] < HAvg then 1 else 0;
Plot SESup = if CrossUp then high else double.nan;
SESup.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SESup.SetLineWeight(3);
SESup.SetDefaultColor(color.YELLOW);
SESup.HideBubble();
SESup.HideTitle();
# Cross above Low Average --------------------------------------------
def CrossDn = if price < Lavg AND price[1] > LAvg then 1 else 0;
Plot SESdn = if CrossDn then low else double.nan;
SESdn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SESdn.SetLineWeight(3);
SESdn.SetDefaultColor(color.VIOLET);
SESdn.HideBubble();
SESdn.HideTitle();
# ================================================
#
# Black Dog Arrows------------------------------------------------------
# Change Aggregation Period to 20 minutes------------------------
def agg = AggregationPeriod.TWENTY_MIN;
def data = close(period = agg);
# 2 EMAs of Black Dogs--------------------------------------------------
def BDfastEMA=ExpAverage(DATA,20);
def BDslowEMA=ExpAverage(DATA,100);
# Black Dog UP for EMA20 crossing ABOVE EMA100-------------
def UpCross = if BDfastEMA > BDslowEma AND BDfastEMA[1] < BDslowEMA then 1 else 0;
Plot BDup = if UpCross then high else double.nan;
BDup.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
BDup.SetLineWeight(5);
BDup.SetDefaultColor(color.WHITE);
BDup.HideBubble();
BDup.HideTitle();
# Black Dog DN for EMA20 crossing BELOW EMA100-----------
def DnCross = if BDfastEMA < BDslowEma AND BDfastEMA[1] > BDslowEMA then 1 else 0;
Plot BDdn = if DnCross then low else double.nan;
BDdn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
BDdn.SetLineWeight(5);
BDdn.SetDefaultColor(color.WHITE);
BDdn.HideBubble();
BDdn.HideTitle();
# END==========================================
Shareable Link
https://tos.mx/EpbpY9How to Trade the Black Dog System
Some info below was found via this page. It was written to trade Forex but the concept remains relevant for trading stocks and options.When to Buy (long):
- Price should be within the moving average channel
- An arrow pointing up right below the candle
- MACD rising to the positive territory or EMA crossover (find what works for you)
- Stop loss should be below the recent swing low
- Price should be within the moving average channel
- An arrow pointing down
- MACD dive to the negative territory or EMA crossover (find what works for you)
- Stop loss should be above the recent swing high
Last edited: