Trend Quality Long and Short Strategy for ThinkorSwim

BenTen

BenTen

Administrative
Staff
VIP
Warehouse
Here is a strategy based on the Trend Quality indicator that gives you buy and sell signals. It's useful for backtesting purposes and enhances your current trading setup.




TQ Long Entry

Code:
declare LONG_ENTRY;

input tqfastLength = 52;
input tqslowLength = 15;
input tqtrendLength = 4;
input tqnoiseType = {default linear, squared};
input tqnoiseLength = 250;
input tqcorrectionFactor = 2;
input TrendThreshold = 3;
input tradeSize = 1;

def MorningOpenHour = 9;
def MorningCloseHour = 12.5;
def AfternoonOpenHour = 13.5;
def AfternoonCloseHour = 16;

def secondsSinceMidnight = secondsFromTime(0);
def safetimemorning = secondsSinceMidnight > MorningOpenHour * 60 * 60 and  secondsSinceMidnight < MorningCloseHour * 60 * 60;
def safetimeafternoon = secondsSinceMidnight > AfternoonOpenHour * 60 * 60 and secondsSinceMidnight < AfternoonCloseHour * 60 * 60;
def safetime = safetimemorning or safetimeafternoon;

def TrendQ = TrendQuality(tqfastlength, tqslowlength, tqtrendLength, tqnoiseType, tqnoiseLength, tqcorrectionFactor);

def trendqualityrising = TrendQ > TrendThreshold and TrendQ[1] <= TrendThreshold;
SetColor(GetColor(1));

addOrder(trendqualityrising and safetime, open[-1], tradeSize);
alert(trendqualityrising and safetime, "TQ Long Entry.", Alert.BAR, Sound.NoSound);

TQ Long Exit

Code:
declare LONG_EXIT;

input tqfastLength = 7;
input tqslowLength = 15;
input tqtrendLength = 4;
input tqnoiseType = {default linear, squared};
input tqnoiseLength = 250;
input tqcorrectionFactor = 2;
input TrendThreshold = 5;
input tradeSize = 1;

def TrendQ = TrendQuality(tqfastlength, tqslowlength, tqtrendLength, tqnoiseType, tqnoiseLength, tqcorrectionFactor);

def trendqualityfallen = TrendQ < 1 and TrendQ[1] >= TrendThreshold and TrendQ[2] >= TrendThreshold;
 
SetColor(GetColor(1));

addOrder(trendqualityfallen, open[-1], tradeSize);

TQ Short Entry

Code:
declare SHORT_ENTRY;

input tqfastLength = 52;
input tqslowLength = 15;
input tqtrendLength = 4;
input tqnoiseType = {default linear, squared};
input tqnoiseLength = 250;
input tqcorrectionFactor = 2;
input TrendThreshold = 3;
input tradeSize = 1;

def MorningOpenHour = 9;
def MorningCloseHour = 12.5;
def AfternoonOpenHour = 13.5;
def AfternoonCloseHour = 16;

def secondsSinceMidnight = secondsFromTime(0);
def safetimemorning = secondsSinceMidnight > MorningOpenHour * 60 * 60 and  secondsSinceMidnight < MorningCloseHour * 60 * 60;
def safetimeafternoon = secondsSinceMidnight > AfternoonOpenHour * 60 * 60 and secondsSinceMidnight < AfternoonCloseHour * 60 * 60;
def safetime = safetimemorning or safetimeafternoon;

def TrendQ = TrendQuality(tqfastlength, tqslowlength, tqtrendLength, tqnoiseType, tqnoiseLength, tqcorrectionFactor);

def trendqualityrising = TrendQ < -TrendThreshold and TrendQ[1] >= -TrendThreshold;
SetColor(GetColor(1));

addOrder(trendqualityrising, open[-1], tradeSize);
alert(trendqualityrising and safetime, "TQ Short Entry.", Alert.BAR, Sound.NoSound);

TQ Short Exit

Code:
declare SHORT_EXIT;

input tqfastLength = 7;
input tqslowLength = 15;
input tqtrendLength = 4;
input tqnoiseType = {default linear, squared};
input tqnoiseLength = 250;
input tqcorrectionFactor = 2;
input TrendThreshold = 5;
input tradeSize = 1;

def TrendQ = TrendQuality(tqfastlength, tqslowlength, tqtrendLength, tqnoiseType, tqnoiseLength, tqcorrectionFactor);

def trendqualityfallen = TrendQ > -1 and TrendQ[1] <= -TrendThreshold and TrendQ[2] <= -TrendThreshold;

SetColor(GetColor(1));

addOrder(trendqualityfallen, open[-1], tradeSize);
Credit:
 
V

vandell001

New member
VIP
Hey Gang, has anyone tried to use these new signals. I'm not getting any signals on my chart.
 
BenTen

BenTen

Administrative
Staff
VIP
Warehouse
@vandell001 Be sure to add them as Strategies instead of Studies.
 
H

HombreLobo

New member
Has anyone tested this one shorter timeframes than the ones shown? like 5 minute or 2000 tick /ES?
 

Top