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.
Credit:
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: