|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Bruce, 
 I know this needs to be done in V5
 
 I need to calculate the indicator below on 1 Minute time frame but plot it on a daily time frame. It would be nice if I can change the time frame that it is being calculated on to 2, 5 minutes or etc...
 
 So this will add up all of the minute accumulations - all of the minute distributions and plot the total at the end of every day on a daily chart
 
 '# AAV = condition.AAV
 '# DAV = condition.DAV
 '# AYV = condition.AYV
 '# DYV = condition.DYV
 Dim AD As Single = 0
 Dim DI As Single = 0
 If AAV.Value = True Then
 AD += ((Price.Close - Price.Close(1)))
 End If
 If AYV.Value = True Then
 AD += ((Price.Close - Price.Close(1)))
 End If
 If DAV.Value = True Then
 DI += ((Price.Close - Price.Close(1)))
 End If
 If DYV.Value = True Then
 DI += ((Price.Close - Price.Close(1)))
 End If
 If (AD - DI) > 0 OrElse _
 (AD - DI) < 0 Then
 Plot = (AD + DI) / 2
 Else
 Plot = 0
 End If
 
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | You would need to make AAV, DAV AYV and DYV in a 1-Minute Time Frame first. As I do not know what they represent, I do not know if it would be easier to create them using Block Diagrams with a Time Frame input (which could possibly be done in SF4) or if they need to be created in RealCode. 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Here are the rules 
 How would you adjust this so that it's calculating it on a 1 minute time frame while the indicator will plot the total on  a daily.
 
 I feel like we can put the rules in the indicator so we are calculating the whole thing in one indicator rather than dragging the rules in here. Bc the rules are similar to each other AAV & DAV is vs Avg Vol while AYV & DYV vs Yes Vol.
 
 AAV - Acc above avg Vol
 
 '# Cumulative
 Static ATR As Single
 Static TR As Single
 Static sumWeight As Single
 Static termRatio As Single = 21 / 22
 Static AvgV As Single
 If isFirstBar Then
 sumWeight = 1
 TR = Price.High - Price.Low
 AvgV = 0
 Else
 TR = System.Math.Max(Price.High, Price.Last(1)) - _
 System.Math.Min(Price.Low, Price.Last(1))
 AvgV += Volume.value / 30
 End If
 If CurrentIndex >= 31 Then AvgV -= Volume.value(30) / 30
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 If Volume.Value > AvgV * 1.01 AndAlso _
 Price.Last - Price.Last(1) >= 0.33 * ATR Then Pass
 DAV - Dis above avg Vol
 '# Cumulative
 Static ATR As Single
 Static TR As Single
 Static sumWeight As Single
 Static termRatio As Single = 21 / 22
 Static AvgV As Single
 If isFirstBar Then
 sumWeight = 1
 TR = Price.High - Price.Low
 AvgV = 0
 Else
 TR = System.Math.Max(Price.High, Price.Last(1)) - _
 System.Math.Min(Price.Low, Price.Last(1))
 AvgV += Volume.value / 30
 End If
 If CurrentIndex >= 31 Then AvgV -= Volume.value(30) / 30
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 If Volume.Value > AvgV * 1.01 AndAlso _
 Price.Last(1) - Price.Last >= 0.33 * ATR Then Pass
 
 AYV - Acc vs Yesterdays Vol
 
 '# Cumulative
 Static ATR As Single
 Static TR As Single
 Static sumWeight As Single
 Static termRatio As Single = 21 / 22
 Static AvgV As Single
 If isFirstBar Then
 sumWeight = 1
 TR = Price.High - Price.Low
 AvgV = 0
 Else
 TR = System.Math.Max(Price.High, Price.Last(1)) - _
 System.Math.Min(Price.Low, Price.Last(1))
 AvgV += Volume.value / 30
 End If
 If CurrentIndex >= 31 Then AvgV -= Volume.value(30) / 30
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 If Volume.Value(1) / AvgV > 0.75 AndAlso _
 Volume.Value > Volume.Value(1) * 1.01 AndAlso _
 Price.Last - Price.Last(1) >= 0.33 * ATR Then Pass
 DYV - Dis vs Yesterdays Vol 
 '# Cumulative
 Static ATR As Single
 Static TR As Single
 Static sumWeight As Single
 Static termRatio As Single = 21 / 22
 Static AvgV As Single
 If isFirstBar Then
 sumWeight = 1
 TR = Price.High - Price.Low
 AvgV = 0
 Else
 TR = System.Math.Max(Price.High, Price.Last(1)) - _
 System.Math.Min(Price.Low, Price.Last(1))
 AvgV += Volume.value / 30
 End If
 If CurrentIndex >= 31 Then AvgV -= Volume.value(30) / 30
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 If Volume.Value(1) / AvgV > 0.75 AndAlso _
 Volume.Value > Volume.Value(1) * 1.01 AndAlso _
 Price.Last(1) - Price.Last >= 0.33 * ATR Then Pass
 
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | Does the indicator reset at the start of each day? 
 When comparing to average volume, do you want to compare to th average volume over a specific number of bars, to the average volume up until that point of the day for so many days, to the average volume for that particular bar of the day over so many days or something else entirely?
 
 When comparing to previous volume, do you want to compare to the previous bar, the volume up until that point in the day for yesterday, that particluar bar of the day for yesterday or something else entirely?
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | No we don't need to reset at the start of each day. 
 Assuming we want to measure the AD over the last 10 days this will break those 10 days into 1 minute bars and look at the last 3900 minutes which is the num of minutes in 10 days and measure the AD.
 
 To the average volume over a specific number of bars - just like how we do it on a daily time frame - The daily is set to 30 days lets just keep at 30 minutes for now. I'll change that if I need to
 
 When comparing to previous volume, compare to the previous bar which is comparing this minutes volume vs 1 min ago.
 
 On ATR the daily time frame is looking at the last 22 days we will calculate it for 22 minutes in here.
 
 Thanks for everything
 
 
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | I'm not sure if the following does what you want or not. You would need to replace everything below the Inherits line in the Class tab of a RealCode Indicator with the following: 
 
 Sub New
 AutoLoop = False
 '# Cumulative
 End Sub
 Public Overrides Function Plot() As System.Single
 Dim sumWeight As Single = 1
 Dim termRatio As Single = 21 / 22
 Dim TR As Single = Price.Bar.HighValue(0) - Price.Bar.LowValue(0)
 Dim ATR As Single = TR
 sumWeight = sumWeight * termRatio + 1
 Dim SumV As Single = Volume.Line.Value(0)
 Dim AD As Single = 0
 Dim DI As Single = 0
 If Price.Bar.Count > 1 Then
 For i As Integer = 1 To System.Math.Min(29, Price.Bar.Count - 1)
 TR = System.Math.Max(Price.Bar.HighValue(i), _
 Price.Bar.Value(i - 1)) - _
 System.Math.Min(Price.Bar.LowValue(i), _
 Price.Bar.Value(i - 1))
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 SumV += Volume.Line.Value(i)
 If Price.Bar.Value(i) - Price.Bar.Value(i - 1) >= .33 * ATR Then
 If Volume.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 If Volume.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 Volume.Line.Value(i) > Volume.Line.Value(i - 1) * 1.01 Then
 AD += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 End If
 If Price.Bar.Value(i - 1) - Price.Bar.Value(i) >= .33 * ATR Then
 If Volume.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 If Volume.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 Volume.Line.Value(i) > Volume.Line.Value(i - 1) * 1.01 Then
 DI += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 End If
 If Price.Bar.DateValue(i).Hour = 16 Then
 If AD <> DI Then
 AddToOutput(Price.Bar.DateValue(i), (AD + DI) / 2)
 Else
 AddToOutput(Price.Bar.DateValue(i), 0)
 End If
 End If
 Next
 If Price.Bar.Count > 30 Then
 For i As Integer = 30 To Price.Bar.Count - 1
 TR = System.Math.Max(Price.Bar.HighValue(i), _
 Price.Bar.Value(i - 1)) - _
 System.Math.Min(Price.Bar.LowValue(i), _
 Price.Bar.Value(i - 1))
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 SumV += Volume.Line.Value(i) - Volume.Line.Value(i - 30)
 If Price.Bar.Value(i) - Price.Bar.Value(i - 1) >= .33 * ATR Then
 If Volume.Line.Value(i) > 1.01 * SumV / 30 Then
 AD += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 If Volume.Line.Value(i - 1) / (SumV / 30) > .75 AndAlso _
 Volume.Line.Value(i) > Volume.Line.Value(i - 1) * 1.01 Then
 AD += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 End If
 If Price.Bar.Value(i - 1) - Price.Bar.Value(i) >= .33 * ATR Then
 If Volume.Line.Value(i) > 1.01 * SumV / 30 Then
 DI += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 If Volume.Line.Value(i - 1) / (SumV / 30) > .75 AndAlso _
 Volume.Line.Value(i) > Volume.Line.Value(i - 1) * 1.01 Then
 DI += Price.Bar.Value(i) - Price.Bar.Value(i - 1)
 End If
 End If
 If Price.Bar.DateValue(i).Hour = 16 Then
 If AD <> DI Then
 AddToOutput(Price.Bar.DateValue(i), (AD + DI) / 2)
 Else
 AddToOutput(Price.Bar.DateValue(i), 0)
 End If
 End If
 Next
 End If
 End If
 End Function
 End Class
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Bruce 
 Is this V4 or 5?
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | I wrote it using SF5, but it should work in version 4 or version 5 (I can't think of anything I would have used which shouldn't work in SF4). As posted, it actually plots once a day with the calculations based on the existing Time Frame of the chart. So if you used a 1-Minute Chart, it would output new values once a day. 
 You could create a version that didn't use the Time Frame of the chart at all, but we would have to use SF5.
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | I need this to calculate on a 1 minute time frame but plot on a daily
 I am going to look at this on a daily time frame but the calculations needs to be on a 1 min.
 
 Take a look at KLIC on a 1 minute for 11/28 - Price closed up for the day but majority of the big volume spiks are red. You can look at SPRD which closed down for the day but it seems majority of the big jumps in price with Vol spike was up.
 
 So I thk measuring the AD on an intraday level but plotting it on a daily will reveal this info.
 
 Also I tried to study your RC
 
 Are you sure you have the rules correct
 
 I have the rules below to simplify things
 
 If this is true then AD +1
 
 If Volume.Value > AvgV * 1.01 AndAlso _
 Price.Last - Price.Last(1) >= 0.33 * ATR Then Pass
 
 If this is true then DI +1
 If Volume.Value > AvgV * 1.01 AndAlso _Price.Last(1) - Price.Last >= 0.33 * ATR Then Pass
 
 If this is true then AD +1
 
 
 If Volume.Value(1) / AvgV > 0.75 AndAlso _Volume.Value > Volume.Value(1) * 1.01 AndAlso _
 Price.Last - Price.Last(1) >= 0.33 * ATR Then Pass
 
 If this is true then DI +1
 If Volume.Value(1) / AvgV > 0.75 AndAlso _Volume.Value > Volume.Value(1) * 1.01 AndAlso _
 Price.Last(1) - Price.Last >= 0.33 * ATR Then Pass
 
 Thx
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | I'm pretty sure I had a pair of the DI and AD rules reversed. I've tried correcting it above. 
 On another note, I am not adding 1 when these requirements are met. I am adding Price.Close - Price.Close(1) as was done in your example RealCode.
 
 The RealCode plots daily values. It uses the Time Frame of the Chart to calculate these daily values. So you would need to have a 1-Minute Time Frame selected for the Chart to use 1-Minute data to calculate the indicator.
 
 In thinking about how I was going to use the PriceData method to implement the indicator in StockFinder 5 if that is what you ended up needing, it won't work. The PriceData method does not have a way to reference Volume, it only references Price.
 
 What you could do (and this should work in SF4) is to create Price and Volume indicators using Block Diagrams with adjustable Time Frames. You could then adjust the Price and Volume indicators to use 1-Minute data and Drag and Drop them into the RealCode editor to use them instead of the regular Price and Volume (we've used this technique previously).
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Yea my bad we need to do  Price.Close - Price.Close(1) not 1. I was mixing RC in my head.
 Ok here is what I thk I need to do pls correct me
 
 Left click
 Create New Block Diagram
 Left click - Selected Data From Other Tools - Main Chart.Symbol(Price)
 Then changed the time frame to 1 Minute Not Streaming
 
 I did the same for Volume
 
 Now what?
 
 Do I drag and drop them in the RC above and change every where you have Price and Volume with the dragged indicators?
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | You should be able to Open an attached Indicator directly into a running   copy of StockFinder (and save it from within StockFinder if desired).   You could also copy and paste the Indicator into the \My   Documents\StockFinder\(Your Username)\My Indicators\ folder and then   load it like you would any other Indicator (for StockFinder 5, use the   \My Documents\StockFinder5\(Your Username)\My Indicators\ folder   instead). 
 The indicators need to both be set to a 1-Minute Time Frame. The indicator will not calculate correctly otherwise and would most likely not return any error messages.
 
 You need to replace everything below the Inherits line in the Class tab of a RealCode Indicator with the following (the  '# PHwT and '# VBwT lines were created by Dragging and Dropping the indicators into the RealCode Editor, but you shouldn't need to do so if you don't change the names):
 
 Sub New
 AutoLoop = False
 '# Cumulative
 End Sub
 Public Overrides Function Plot() As System.Single
 '# PHwT = indicator.PriceHistorywTimeFrame
 '# VBwT = indicator.VolumeBarswTimeFrame
 Dim sumWeight As Single = 1
 Dim termRatio As Single = 21 / 22
 Dim TR As Single = PHwT.Bar.HighValue(0) - PHwT.Bar.LowValue(0)
 Dim ATR As Single = TR
 sumWeight = sumWeight * termRatio + 1
 Dim SumV As Single = VBwT.Line.Value(0)
 Dim AD As Single = 0
 Dim DI As Single = 0
 If PHwT.Bar.Count > 1 Then
 For i As Integer = 1 To System.Math.Min(29, PHwT.Bar.Count - 1)
 TR = System.Math.Max(PHwT.Bar.HighValue(i), _
 PHwT.Bar.Value(i - 1)) - _
 System.Math.Min(PHwT.Bar.LowValue(i), _
 PHwT.Bar.Value(i - 1))
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 SumV += VBwT.Line.Value(i)
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.DateValue(i).Hour = 16 Then
 If AD <> DI Then
 AddToOutput(PHwT.Bar.DateValue(i), (AD + DI) / 2)
 Else
 AddToOutput(PHwT.Bar.DateValue(i), 0)
 End If
 End If
 Next
 If PHwT.Bar.Count > 30 Then
 For i As Integer = 30 To PHwT.Bar.Count - 1
 TR = System.Math.Max(PHwT.Bar.HighValue(i), _
 PHwT.Bar.Value(i - 1)) - _
 System.Math.Min(PHwT.Bar.LowValue(i), _
 PHwT.Bar.Value(i - 1))
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 SumV += VBwT.Line.Value(i) - VBwT.Line.Value(i - 30)
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / 30 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / 30) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / 30 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / 30) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.DateValue(i).Hour = 16 Then
 If AD <> DI Then
 AddToOutput(PHwT.Bar.DateValue(i), (AD + DI) / 2)
 Else
 AddToOutput(PHwT.Bar.DateValue(i), 0)
 End If
 End If
 Next
 End If
 End If
 End Function
 End Class
 Attachments:Price History w Time Frame.sfInd - 4 KB, downloaded 592 time(s).
 Volume Bars w Time Frame.sfInd - 8 KB, downloaded 605 time(s).
 
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | I did as you described but no plot on the indicator 
 I saved both Price and Volume indicators and plotted both usisng a 1 minute time frame and they plot fine
 
 then I created a indicator with your RC above but i don't get a plot
 
 I shared a chart under AD Int for youe ref
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | I made sure it plotted before I posted it. Not only that, but your shared version plots on my computer as well. It only has 12 days of data, but that's because of the 5000-bar limit. Do you have your Number of Intraday Bars setting set high enough to calculate daily bars using 1-Minute data under Settings | Data Manager? 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | that was it 
 thx
 
 So I can pin the price and volume indicators that are set to 1 min to the side so we are looking at a normal daily chart but this indicator is calculated on a 1 min
 
 I shared the new chart over AD Int for your ref
 
 take a look at SPRD yes while it closed down for the day the indicator gained
 
 look at KLIC it closed up yesterday but the indicator dropped
 
 I know you said it plots once a day bc as you can see it doesn't plot anything for today yet. Does that mean it will plot only after 4
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | You should be able to pin the indicators and not have them visible. 
 The indicator can go up when price goes down for the day and vice versa. It is calculated each minute and then output each day. To see what price and volume action is causing this, you can un-pin the 1-Minute Time Frame and comment two of the lines (or delete them):
 
 If PHwT.Bar.DateValue(i).Hour = 16 Then
 If AD <> DI Then
 AddToOutput(PHwT.Bar.DateValue(i), (AD + DI) / 2)
 Else
 AddToOutput(PHwT.Bar.DateValue(i), 0)
 End If
 End If
 
 Would become:
 
 'If PHwT.Bar.DateValue(i).Hour = 16 Then
 If AD <> DI Then
 AddToOutput(PHwT.Bar.DateValue(i), (AD + DI) / 2)
 Else
 AddToOutput(PHwT.Bar.DateValue(i), 0)
 End If
 'End If
 
 The RealCode currently outputs data at 4 PM ET. If you want it to output data at eiither 4 PM ET or at the last bar of the data, you could change that same section to the following:
 
 If PHwT.Bar.DateValue(i).Hour = 16 OrElse _
 i = PHwT.Bar.Count - 1 Then
 If AD <> DI Then
 AddToOutput(EndOfDay(PHwT.Bar.DateValue(i)), (AD + DI) / 2)
 Else
 AddToOutput(EndOfDay(PHwT.Bar.DateValue(i)), 0)
 End If
 End If
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Got it thx 
 I would love to see history on this indicator
 
 I thk its a great way of revealing AD
 
 Is there anything I can do to increase my intraday data to see more history in this?
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | You can feed a Length Limit Block into Price and Volume Blocks in the "with Timeframe" indicators (the Length Limit settings for both indicators need to be identical). This should allow you to exceed the  5000 Bar Limit. 
 That said, the 5000 Bar Limit is there for a reason. It should be strongly    noted that this can dramatically affect the performance of  StockFinder   and slow things down significantly because of the  additional memory  used  and calculations required. If things slow down  too much, the first   thing you should try is to decrease the Length  Limit or avoid using  this  workaround altogether.
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | kk 
 thanks for everything
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Bruce, 
 I have a piece of your RC above pasted below
 
 We have 4 rules in here 2 for Acc and 2 for Dis
 On both  Acc rules price needs to gain more than 0.33 * ATR while on both Dis rules price needs to lose more than 0.33 * ATR
 
 From what I see below your have If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then on the
 1st and 3rd but not 2nd and 4th.
 
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 
 Shouldn't it be like this
 
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR AndAlso _
 VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR AndAlso _
 VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 | 
	|  | 
	
	
	| Registered User Joined: 12/31/2005
 Posts: 2,499
 
 | QUOTE (thnkbigr) Bruce,
 I have a piece of your RC above pasted below
 
 We have 4 rules in here 2 for Acc and 2 for Dis
 On both  Acc rules price needs to gain more than 0.33 * ATR while on both Dis rules price needs to lose more than 0.33 * ATR
 
 From what I see below your have If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then on the
 1st and 3rd but not 2nd and 4th.
 
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 
 Shouldn't it be like this
 
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR AndAlso _
 VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR AndAlso _
 VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 
 Bruce's  looks fine to me. Notice the subscripts are (i) and (i-1) for the first part and (i-1) and (i) for the second part.
 '
 ' PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR
 '
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 '
 '  PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR
 '
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 
 
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Get it 
 thx
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | If I want to multiply the AD or DI with volume 
 Is this what I need to do?
 
 AD += (PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)) *  VBwT.Line.Value(i)
 
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | That should work. 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | thx 
 to increase the Avg period for Volume and ATR can you show me what to do pls
 
 instead of 30 day for volume I like to increase that to 390 since we have 390 min in a day of trading and same for ATR
 
 If you can just highlight what I need to change and I'll change them bc I am gone play around with these avg's a little
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | I think I've replaced every instance 29 or 30 with VolPeriod. 
 Sub New
 AutoLoop = False
 '# Cumulative
 End Sub
 Public Overrides Function Plot() As System.Single
 '# PHwT = indicator.PriceHistorywTimeFrame
 '# VBwT = indicator.VolumeBarswTimeFrame
 '# ATRPeriod = UserInput.Single = 390
 '# VolPeriod = UserInput.Integer = 390
 If PHwT.Bar.Count >= System.Math.Max(2, VolPeriod) Then
 Dim sumWeight As Single = 1
 Dim termRatio As Single = (ATRPeriod - 1) / ATRPeriod
 Dim TR As Single = PHwT.Bar.HighValue(0) - PHwT.Bar.LowValue(0)
 Dim ATR As Single = TR
 sumWeight = sumWeight * termRatio + 1
 Dim SumV As Single = VBwT.Line.Value(0)
 Dim AD As Single = 0
 Dim DI As Single = 0
 If PHwT.Bar.Count > 1 Then
 For i As Integer = 1 To System.Math.Min(VolPeriod, PHwT.Bar.Count) - 1
 TR = System.Math.Max(PHwT.Bar.HighValue(i), _
 PHwT.Bar.Value(i - 1)) - _
 System.Math.Min(PHwT.Bar.LowValue(i), _
 PHwT.Bar.Value(i - 1))
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 SumV += VBwT.Line.Value(i)
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / (i + 1) Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / (i + 1)) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.DateValue(i).Hour = 16 Then
 If AD <> DI Then
 AddToOutput(PHwT.Bar.DateValue(i), (AD + DI) / 2)
 Else
 AddToOutput(PHwT.Bar.DateValue(i), 0)
 End If
 End If
 Next
 If PHwT.Bar.Count > VolPeriod Then
 For i As Integer = VolPeriod To PHwT.Bar.Count - 1
 TR = System.Math.Max(PHwT.Bar.HighValue(i), _
 PHwT.Bar.Value(i - 1)) - _
 System.Math.Min(PHwT.Bar.LowValue(i), _
 PHwT.Bar.Value(i - 1))
 Dim Weight As Single = 1 / sumWeight
 ATR = ATR * (1 - Weight) + Weight * TR
 sumWeight = sumWeight * termRatio + 1
 SumV += VBwT.Line.Value(i) - VBwT.Line.Value(i - VolPeriod)
 If PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / VolPeriod Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / VolPeriod) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.Value(i - 1) - PHwT.Bar.Value(i) >= .33 * ATR Then
 If VBwT.Line.Value(i) > 1.01 * SumV / VolPeriod Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 If VBwT.Line.Value(i - 1) / (SumV / VolPeriod) > .75 AndAlso _
 VBwT.Line.Value(i) > VBwT.Line.Value(i - 1) * 1.01 Then
 DI += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 End If
 If PHwT.Bar.DateValue(i).Hour = 16 OrElse _
 i = PHwT.Bar.Count - 1 Then
 If AD <> DI Then
 AddToOutput(EndOfDay(PHwT.Bar.DateValue(i)), (AD + DI) / 2)
 Else
 AddToOutput(EndOfDay(PHwT.Bar.DateValue(i)), 0)
 End If
 End If
 Next
 End If
 End If
 End If
 End Function
 End Class
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | You are AMAZING | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Bruce 
 I am overlaying this indicator as you know on the price chart on its own scale and I would like to put it on the same scale as price to be able to see the divergences and their magnitude clearly.
 
 Since the value of price and the indicator vary drastically i can't put them on the same scale now.
 
 Here is what I am thinking
 
 The indicator starts at 0 so let say I am plotting the indiactor from 5000 bars ago (This is 5000 minutes) Can we have it start plotting (Adding and subtracting the AD) from the closing value of price 5000 bars ago. This way we can put them on the same scale.
 
 For ex if 5000 minutes ago price closed at 32.50 the indicator will start at 32.50 rather than 0
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | You could try changing: 
 Dim AD As Single = 0
 Dim DI As Single = 0
 
 To:
 
 Dim AD As Single = PHwT.Bar.Value(0)
 Dim DI As Single = PHwT.Bar.Value(0)
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Bruce,
 I just shared a chart under AD Intraday again in v4
 
 take a look at
 
 AEP 4/4
 ABT 9/9
 HON
 ALL 3/1
 
 There are large spikes in the incators which doesn't seem correct. How can I find out waht's causing this
   | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | I don't actually keep SF4 updated. So I can play with it to try and answer your questions, but I can't look at accurate charts. Have you tried looking at the results in a 1-Minute Time Frame as outlined in my Tuesday, November 29, 2011 2:07:55 PM ET post?If you try that and can't tell why there is a spike I'll program it into SF5 to check it out. 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | I thk I already know whats causing it
 take a look at AVP on a 1 min time frame on 11/23/2011 at 1:37 the stock at 1:36 closed at 16.35 and dropped to 0.02 at 1:37 and then back to 16.35 at 1:38
 
 same for ALL, AXP, BA and it happens to be on the same date and time
 
 NKE on 11/30 at 12:39
 
 These are all data errors that is causing the indicator to spike up or down drastically.
 
 These arejust to name a few there seem to be a lot of them
 
 How do I get this resolved
 
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | You can report data issues by selecting Help | Report Data Issue from the menus in StockFinder. 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | Bruce 
 I need to paint the volume bars on the intraday chart red when price closed down
 
 I have added a Limit length block that extended the data to 10000
 
 When I create a rule price closed down and try to paint the volume bars it doesn't work
 
 Howcome
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | Edit a Block Diagram, any Block Diagram. Now click on the All Diagrams tab (off to the right). 
 Now look for the Block Diagram for your Paint Brush (it probably ends in the word Brush). Now add the Length Limit to the Paint Brush as well (you will probably need to run it into both Price and Volume).
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | kk 
 I need to change the block diagram that plots the volume with a time frame to Dollar Volume and in the RC above i need to add in that the Dollar Volume for that minute was > 1 million dollars for to count as a Acc or Dis.
 
 In order for me to change the volume block diagram to dollar volume
 
 I connected the Main Symbol block to prices
 I connected 1 Minute Not Streaming to Prices block
 I multiplied prices block by Volume
 
 if this is correct the dollar volume indicator plots but the AD indicator doesn't
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | I just shared a chart under DV in v4 with Dollar Volume block diagram indicator i created if you can pick it up | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | There isn't an AD indicator or Price with Time Frame in your shared chart that I can see. 
 That said, the indicators being fed into the AD indicator need to have exactly the same number of bars and the bars need to line up exactly with the same dates and times. Your Block Diagram for DV with Time Frame indicator has a Bar Offset Block which is effectively reducing the number of bars being output by 1. In addition, you mentioned a Length Limit of 10000, but the Length Limit in the Block Diagram is set to 100000.
 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
	
	
	|  Platinum Customer 
 Joined: 3/31/2006
 Posts: 3,207
 
 | I removed the bar offset and it worked 
 So If I need to say DV for that minute was > let just say 1 million dollars, as well as meeting all the other rules is this what I need to add to every section
 
 If VBwT.Line.Value(i) > 1.01 * SumV / VolPeriod AndAlso _
 VBwT.Line.Value(i) > 1 Then
 AD += PHwT.Bar.Value(i) - PHwT.Bar.Value(i - 1)
 End If
 
 | 
	|  | 
	
	
	|  
  Worden Trainer
 
 Joined: 10/7/2004
 Posts: 65,138
 
 | Unless you've adjusted things, I don't think the DV is in millions of dollars. I think you are multiplying Price times Volume with Volume being reported in blocks of 100 shares. So I think DV would be in $100 increments. The default Volume Block Diagram is adjustable however, so you may have changed it. 
 -Bruce
 Personal Criteria Formulas
 TC2000 Support Articles
 | 
	|  | 
| Guest-1 |