| Coding Forum Collaborate, receive help, or discuss coding related issues. |
![]() | | Tweet | |
| | #33 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage Quote:
I think that a 2 minute bar is not a good thing for an accurate Volume Profile Indicator. Even with PVP and VWAP it's not good so I usually use as Blowfish a tick chart to calculate a weekly PVP and VWAP. A good way to calculte an History of Volume Profile indicator without increasing the CPU performance and time spending, could be using ADE. You could save the yesterday Volume profile in a txt file and then call back every new day, so you have to calcultare only then new day Volume Profile Histogram and you have each past days stored as a txt file so it could be loaded faster than calculate and loading each day of the chart. The volume profile is saved as a txt file in a specified directory and call back by the ADE. I've not reached the way to calculate the Volume Profile, but we can try some ways and then evaluate the better way in terms of time to load and CPU usage. Then after creating a starting point we could improve it step by step. This is my thought. | ||
| |
|
| | #34 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage Thinking about the original code in these days I've understood some things ( late is better than never). 1) They start in the middle of the array because the function on which the array is based, can't have a negative value (V2VolLevel can be negative). The code logic base the prices levels on the starting value adding or subtracting N tick factor and referring to each price level the Volume . ORIGINAL CODE: Quote:
Now the origianl code calculate very weell the single PVP Volume and single PVP price level, but I've to calculate the Volume to each price level so I need a Loop anyway. "I've changed some names to the variables " and some logic in the code. Quote:
Where I'm wrong ? | ||
| |
|
| | #35 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage Quote:
| ||
| |
|
| | #36 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage I don't need a loop as posted in the last 2 post, because the original code do it itself. On each price level the code sums new volume to past volume with each new tick comes. SO now, how to have only the last cumulative volume on a single price level and not the sequence of each single volume from the first to the last ? How can I separate the last cumulative volume of each price level ? Here is the code: Quote:
The code will be useful to many in the forum. | ||
| |
|
| | #37 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage you will preserve the code formating in the code window.
__________________ ..........This is a terribly difficult question to answer. The only satisfactory answer is: "It depends"... | ||
| |
|
| | #38 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage Quote:
Sorry again Code: Vars: StartPrice(0),
minD(0),
MAXD(0),
iPrice(0),
jPrice(0),
iVolume(0),
PVPPrice(0),
PVPVolume(0),
MyVolume(0),
TickFactor(0),
TickDistance(0),
PriceDiff(0);
Array: VolArray[10000](0);
MyVolume = Volume;
// Reset Each day at the first TICK
if Date > Date[1] then begin
StartPrice = AvgPrice;
minD = AvgPrice;
MAXD = AvgPrice;
iPrice = AvgPrice;
For Value1 = 0 to 10000 begin
VolArray[value1] = 0;
END;
PVPPrice = AvgPrice;
PVPVolume = MyVolume;
iVolume = MyVolume;
END;
// Calculate the value for the rest of the day past the first TICK
If Date = Date[1] and StartPrice > 0 then begin
Value2 = AvgPrice - StartPrice;
TickFactor = (minmove/PriceScale);
TickDistance = (Value2 *(1/ TickFactor));
iPrice = StartPrice + TickDistance;
VolArray[iPrice] = VolArray[iPrice] + MyVolume; //this collects volume at each new tick and summ Volume with previous volume
// Thsi is to identify the peak of Volume of the day and its Price level
if VolArray[iPrice] > PVPVolume then begin
PVPVolume = VolArray[iPrice];
PriceDiff = StartPrice - iPrice;
PVPPrice = StartPrice - (PriceDiff * TickFactor);
END;
//identify MAX of the day and min of the day in tickFactor
If iPrice >= MAXD then begin
MAXD = iPrice;
end;
If iPrice <= minD then begin
minD = iPrice;
end;
If VolArray[iPrice] > VolArray[iPrice][1] then begin
iVolume = VolArray[iPrice]; // This identify the last iVolume
end;
Print(File("C:/temp/VolumeProfile.txt")," ",numtostr(date, 0)," ", numtostr(time,0)," ",numtostr(iPrice,0)," ",numtostr(iVolume,0));
END;
Plot1(PVPPrice, "PVPPrice");
Plot2(PVPVolume, "PVPVolume"); | ||
| |
|
| | #39 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage If you go for fixed scaling all you need to do is re-plot the appropriate histo bar of the array element you have just updated. | ||
| |
|
| | #40 | ||
![]() | Re: Building a VolumeProfile Indicator with EasyLanguage Quote:
I already have what I need. Now I'd like to find a good way to plot it using ASCII mapping as symbol to plot in a sequence of symbols, as "------" or "*****" . Each symbol must reflect a chunk. I'm tring a way to do this. I'm also thinking about using ADE to save the previous days Histogram in a txt file in a directory. So I can load only a few tick data or days like 2 or 3 days to calculate the last day and retrieve the others old ones by ADE. In this way I could calculate not only a daily volume histogram, but also a weekly volume histogram, saving the past days in a directory as Txt files using ADE. It would be a great thing and it would use only a few resources of memory and cpu loading all in a few second or moments. It wouldn't take much time to load all using ADE and I could plot the daily histogram also on a 5 minutes or N volume chart, not only on a 1 tick chart. The tick chart could be used only to generate or calculate the daily histogram, then it could be plotted on a different resolution chart using ADE. First I have to find a good way to plot it using ASCII mapping and not Trend lines as the GKmarketprofile in the first post. | ||
| |
|
![]() |
| Tags |
| array, volume |
| Thread Tools | Search this Thread |
| Display Modes | |
| |
| ∧ Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| EasyLanguage Indicator -- How Long (in Min) 1500 Tick Bar Took to Complete | Frank | Coding Forum | 3 | 03-16-2010 11:47 AM |
| Building a GAP Trading Strategy | brownsfan019 | The Candlestick Corner | 41 | 08-06-2009 12:54 PM |
| Adding Sound to Your Indicator (EasyLanguage) | Tams | Coding Forum | 33 | 05-10-2009 08:58 AM |
| building a track record? | darthtrader | Market Analysis | 7 | 06-23-2007 12:19 AM |
| Building a Computer System | wsam29 | General Discussion | 5 | 03-04-2007 07:28 PM |