• LIMITED TIME ONLY: Take $40 off VIP with code: BTD40.

Verniman strategy for /ES Entry signals For ThinkOrSwim

Status
Not open for further replies.

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.

biq5gRN.png
 
Last edited by a moderator:

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

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.

zu7Jiv1.jpg
 
Last edited:

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
 

STB

Member
@akshata - Were you able to figure out how the think script strategy opens an order on an intrabar? His strat seems to be able to enter an order before the bar closes.

zu7Jiv1.jpg
 
Last edited:

CaptainVine

New member
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

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.
 

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
 

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?
 

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.

FEQ0WwP.jpg


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:

perdurecapital

New member
Hi everyone,
I trade a very similar style to this, I watch developing market profile, setting initial balance areas at both 30 minutes and 1 hour. For market internals I watch S&P Advance/Decline and advance decline of the indexes, also TRIN, VIX, and Ticks... both $TICK and cumulative total ticks for the day. Set ups and triggers for trade entries are the same as Verniman, Breakouts of VAH or VAL of the developing RTH profile. If you don't understand what that means it is this...

I set my chart time period setting to 2 minute TODAY, and hide Extended hours trading... What this does is begins the chart from the 9:30 cash open, from there each bar develops and builds the TPO, basically giving you the regular trading hours market profile which is constantly changing as the day progresses. From this we get the value area highs and lows of the TPO. Price breaking out of these areas are where we enter trades and lean on for stops. The shape of the profile can give you stats and increase your edge. A "P" shape profile with point of control higher in the profile is bullish. If you take the point of control level to the low of the profile you can project a "balance target" in other words where would price have to go to balance the profile and create "D" shape with the point of control in the middle of the D or balanced distribution. I have been seeking a way to code this into TOS, I believe Mr. Verniman has this coded.

You can also lean on overnight statistics, gap fills etc.... areas with high statistical probability of being tested.
I manually mark my charts for the following every morning... Overnight High, Overnight Low, Yesterdays RTH Close (Gap?), Yesterdays Value High, Yesterdays Value Low, Yesterday's POC, and any other level that I deem to be significant.... that would include Excess areas, Poor Highs or Lows, any area where the auction was incomplete on higher time frames.... If this is confusing I would suggest digging into Market Profile and Auction theory... Mind over Markets, or Markets in Profile by Dalton are the classics...

Essentially the method is trading the edges of the current auction seeking value transition or acceptance/rejection of the current balance area aided by tapereading. I taperead with a Time and Sales and the DOM, for this I use a futures platform as I find TOS to be inadequate and too far behind the market. For the charting purposes it works fine.

I also take trades based on Wyckoff principles and VWAP breaks with volume filters. I lean on the Initial balance areas for the Wyckoff set ups...
 
Status
Not open for further replies.

Similar threads

Top