Trend Quality Long and Short Strategy for ThinkorSwim

BenTen

Administrative
Staff
VIP
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.

3V42x3E.png

u4oKIBC.png


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:
 

vodada33

New member
Hi Ben. Sorry to ask probably a novice question.
Do i put in all the 4 scripts into one single strategy?
 

kelbadawi

New member
its not working well for me. what is the best time frame? i use the 5min, and im getting short signal when its uptrend and long signal when its down trend @BenTen. did anyone adjust the setting?
 

Similar threads

Top