Verniman thinkscript strategy for /ES Entry signals

STB

STB

Member
I have been watching this guy for awhile trying to figure out how his thinkscript strategy works for trade confirmation. It is almost always profitable. He only shorts under VWAP and longs over, only trades from 9:30 to noon and then from 13:30 till close. He also uses $adspd for direction & I also believe he uses volume & high or low $tick readings for trade entry’s. Still not sure what is triggering his order closes. Was curious if anyone would be interested in trying to figure out with me how his strategy works. His blog is https://verniman.blogspot.com/ if anyone is interested.





 
Last edited by a moderator:
M

MHCain

New member
I've filled him for awhile and have asked a couple of questions. Its not a mechanical trading signal. Its based on his intuition. 1) I trust him but no real way to know for sure (Trades). 3min chart, Volume Profile (day), Vwap, Time Sales <25. SnP - Advanced Decline $ADSP(?), some sort of Trend Regression Channel. No clue what the upper numbers mean. He looks for volume breakout from balance, volume at high/Low, Swap bounce, and AD trend. I hope this helps but he does explain all of this on his page. Great info on there.
 
STB

STB

Member
I've filled him for awhile and have asked a couple of questions. Its not a mechanical trading signal. Its based on his intuition. 1) I trust him but no real way to know for sure (Trades). 3min chart, Volume Profile (day), Vwap, Time Sales <25. SnP - Advanced Decline $ADSP(?), some sort of Trend Regression Channel. No clue what the upper numbers mean. He looks for volume breakout from balance, volume at high/Low, Swap bounce, and AD trend. I hope this helps but he does explain all of this on his page. Great info on there.

I would think it is mechanical because he has that thinkscript strategy plotting open and close orders on his charts.

 
Last edited:
A

akshata

New member
@STB - I just started with him and happy to work with you to figure it out. Based on information here, I have got the Volume, Trend and Market internals code (need to verify next week when I start to get in details) and can then have Profile coded too. Feel free to DM me
 
C

CaptainVine

New member
VIP
I've been watching and wondering the same thing. Idk how exactly he isolates the HVE lines. I'm not positive but I think the indicator sold by eminiplayer might be the same thing. I see it floating around on stocktwits & some dudes are killing it. It's not regular S&R or other "zones" you see. Verniman tells you quite a bit right on his blog & suggests a couple books. He also has a course and some youtube vidi's
 
Prison Mike

Prison Mike

Member
HVE- high volume.....? At first glance from looking at his stuff i assume it paints a line at levels of high, HVE and low volume, LVE, based off of volume profile? But it doesn’t look that way in the picture you posted.

That would be helpful seeing that volume profile doesn’t work for mobile.
 
M

msjaggi11

New member
@akshata Hi, were you able to make any progress on the thinkscript for the Volume and labels this guy uses. ? Thanks for the help.
 
Prison Mike

Prison Mike

Member
@STB thanks for showing us his blog. Been listening to the videos he has posted on “auction theory.” Good stuff.

Also gave me some insight in to ParadiseTrading and how he trades. Seems similar
 
A

akshata

New member
@akshata Hi, were you able to make any progress on the thinkscript for the Volume and labels this guy uses. ? Thanks for the help.
@msjaggi11 - I have got most of it coded, but still few missing parts that I am trying to build through it. As far as execution looks like it may be triggered on 1 minutes based on signal from 3 minutes?
 
A

Alex

Member
VIP
Has anybody figured out what his thinkscript mainly based on?
 
H

hhjani

New member
VIP
@msjaggi11 - I have got most of it coded, but still few missing parts that I am trying to build through it. As far as execution looks like it may be triggered on 1 minutes based on signal from 3 minutes?
@akshata Hope you are doing well! How's your strategy working out? Thanks!
 
STB

STB

Member
I have not been able to duplicate his exact trades but I have something close. If anyone would like to add to it and share that would be great. I still can not figure out how he gets his entries to signal intrabar :unsure:.
Also this has only been tested on today's trading range so take caution as it is a work in progress.



Code:
###### TIME ######

input zoneStartAM = 930;
input zoneEndAM = 1200;
input zoneStartPM = 1330;
input zoneEndPM = 1600;
input zoneEndclose = 1609;
input type = {default NOTRADE, REVERSAL};
def highBar;
def lowBar;
def highBar2;
def lowBar2;

switch (type){
case NOTRADE:
    highBar = if SecondsTillTime(zoneStartAM) <= 0 and SecondsTillTime(zoneEndAM) >= 0 then HighestAll(open) else Double.NaN;
    lowBar = if SecondsTillTime(zoneStartAM) <= 0 and SecondsTillTime(zoneEndAM) >= 0 then LowestAll(close) else Double.NaN;
case REVERSAL:
    lowBar = if SecondsTillTime(zoneStartAM) <= 0 and SecondsTillTime(zoneEndAM) >= 0 then HighestAll(open) else Double.NaN;
    highBar = if SecondsTillTime(zoneStartAM) <= 0 and SecondsTillTime(zoneEndAM) >= 0 then LowestAll(close) else Double.NaN;
}

switch (type){
case NOTRADE:
    highBar2 = if SecondsTillTime(zoneStartPM) <= 0 and SecondsTillTime(zoneEndPM) >= 0 then HighestAll(open) else Double.NaN;
    lowBar2 = if SecondsTillTime(zoneStartPM) <= 0 and SecondsTillTime(zoneEndPM) >= 0 then LowestAll(close) else Double.NaN;
case REVERSAL:
    lowBar2 = if SecondsTillTime(zoneStartPM) <= 0 and SecondsTillTime(zoneEndPM) >= 0 then HighestAll(open) else Double.NaN;
    highBar2 = if SecondsTillTime(zoneStartPM) <= 0 and SecondsTillTime(zoneEndPM) >= 0 then LowestAll(close) else Double.NaN;
}



###### TIME END #####

def adspdl = low("$adspd");
def adspdh = high("$adspd");
def adspdc = close("$adspd");
def volspd = close("$volspd");

def HMA = MovingAverage(AverageType.HULL, close, 21);

input numDevDn = -2.0;
input numDevUp = 2.0;
input timeFrame = {default DAY, WEEK, MONTH};

def cap = getAggregationPeriod();
def errorInAggregation =
    timeFrame == timeFrame.DAY and cap >= AggregationPeriod.WEEK or
    timeFrame == timeFrame.WEEK and cap >= AggregationPeriod.MONTH;
assert(!errorInAggregation, "timeFrame should be not less than current chart aggregation period");

def yyyyMmDd = getYyyyMmDd();
def periodIndx;
switch (timeFrame) {
case DAY:
    periodIndx = yyyyMmDd;
case WEEK:
    periodIndx = Floor((daysFromDate(first(yyyyMmDd)) + getDayOfWeek(first(yyyyMmDd))) / 7);
case MONTH:
    periodIndx = roundDown(yyyyMmDd / 100, 0);
}
def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;
def volumeVwapSum;
def volumeVwap2Sum;

if (isPeriodRolled) {
    volumeSum = volume;
    volumeVwapSum = volume * vwap;
    volumeVwap2Sum = volume * Sqr(vwap);
} else {
    volumeSum = compoundValue(1, volumeSum[1] + volume, volume);
    volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);
    volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));
}
def price = volumeVwapSum / volumeSum;
def deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

def VWAP = price;



AssignPriceColor(if adspdl < adspdl[1] && close < vwap && close< hma && volume > volume[1] then Color.RED else if adspdh > adspdh[1] && close > vwap && close > hma && volume>volume[1] then Color.GREEN else Color.GRAY);


####LONGS####

AddOrder(OrderType.BUY_TO_OPEN,secondsTillTime(zoneStartAM) <= 0 && secondsTillTime(zoneEndAM) >= 0 and adspdh > adspdh[1] && close > vwap && vwap>vwap[1]&&  volume>volume[1] ,  name = "Buy open AM @"+open[-1], 1, Color.ORANGE, Color.green);

AddOrder(OrderType.BUY_TO_OPEN,secondsTillTime(zoneStartpM) <= 0 && secondsTillTime(zoneEndpM) >= 0 and adspdh > adspdh[1] && close > vwap && vwap>vwap[1]&&  volume>volume[1] ,  name = "Buy open AM @"+open[-1], 1, Color.ORANGE, Color.green);



##SHORTS###

AddOrder(OrderType.sell_TO_OPEN,secondsTillTime(zoneStartAM) <= 0 && secondsTillTime(zoneEndAM) >= 0 and adspdl < adspdl[1] && close < vwap && vwap<vwap[1]&& volume>volume[1] ,  name = "Sell open AM @"+open[-1], 1, Color.ORANGE, Color.RED);

AddOrder(OrderType.sell_TO_OPEN,secondsTillTime(zoneStartpM) <= 0 && secondsTillTime(zoneEndpM) >= 0 and adspdl < adspdl[1] && close < vwap  && volume>volume[1] , name = "Sell open PM @"+open[-1], 1, Color.ORANGE, Color.RED);

####Close orders######

addorder(orderType.SELL_TO_CLOSE,  adspdh < adspdh[1], name = "Sell close @"+open[-1],1,color.orange, color.red);

addorder(orderType.buy_TO_CLOSE,  adspdl > adspdl[1],name = "Buy close @"+open[-1],1,color.orange, color.red);

###Market close orders####

addorder(orderType.buy_TO_CLOSE,  secondsTillTime(zoneEndclose) <= 0 , name = "Buy Market Close @"+open[-1],1,color.orange, color.red);

addorder(orderType.sell_TO_CLOSE,  secondsTillTime(zoneEndclose) <= 0 ,  name = "Sell Market Close @"+open[-1],1,color.orange, color.red);
 
Last edited:
Top