Thanks for all the work you have done.
I downloaded your 3D Zone Stats and got a file append function error?
Thanks for your help.
MidPoint statistics - surprising results!
Moderator: moderators
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.
- michal.kreslik
- rank: 1000+ posts
- Posts: 1048
- Joined: Sat May 13, 2006 2:40 am
- Reputation: 36
- Location: Monte Carlo, Monaco
- Real name: Michal Kreslik
- Gender:
Moneymarkets,
have a look at the iFileFolder parameter within the code. By default, it is set to "c:\data\temp".
If that directory doesn't exist, you'll get a file append function error when you apply the program to a chart.
Either create this directory on your disk or change the value so that it points to an existing directory.
I've chosen not to declare these variables as inputs since there are other variables that must be changed manually as well since the EasyLanguage doesn't support multidimensional dynamic arrays neither it supports the array boundary declaration via input.
You're welcome. Have a very nice day!
have a look at the iFileFolder parameter within the code. By default, it is set to "c:\data\temp".
If that directory doesn't exist, you'll get a file append function error when you apply the program to a chart.
Either create this directory on your disk or change the value so that it points to an existing directory.
I've chosen not to declare these variables as inputs since there are other variables that must be changed manually as well since the EasyLanguage doesn't support multidimensional dynamic arrays neither it supports the array boundary declaration via input.
You're welcome. Have a very nice day!
- TheRumpledOne
- rank: 10000+ posts
- Posts: 15562
- Joined: Sun May 14, 2006 9:31 pm
- Reputation: 3036
- Location: Oregon
- Real name: Avery T. Horton, Jr.
- Gender:
- Contact:
Michal:
Thanks.
However, I don't know the answer to the question.
I wanted a simple answer.
I only want to consider the midpoint... not 3 zones.
So, for the EURUSD 60 minute interval, if it closes above the middle, what is the "probability" it will close above the middle again?
Ditto for the 15 minute interval.
Thanks.
Thanks.
However, I don't know the answer to the question.
I wanted a simple answer.
I only want to consider the midpoint... not 3 zones.
So, for the EURUSD 60 minute interval, if it closes above the middle, what is the "probability" it will close above the middle again?
Ditto for the 15 minute interval.
Thanks.
IT'S NOT WHAT YOU TRADE, IT'S HOW YOU TRADE IT!
Please do NOT PM me with trading or coding questions, post them in a thread.
Please do NOT PM me with trading or coding questions, post them in a thread.
- TheRumpledOne
- rank: 10000+ posts
- Posts: 15562
- Joined: Sun May 14, 2006 9:31 pm
- Reputation: 3036
- Location: Oregon
- Real name: Avery T. Horton, Jr.
- Gender:
- Contact:
Michal:
You have 3D but you don't have separate statistics for above/below the middle!
I am sure the stats will be different for above/below.
That's part of the "edge" I am looking for.
You have some coding to do, my friend
You have 3D but you don't have separate statistics for above/below the middle!
I am sure the stats will be different for above/below.
That's part of the "edge" I am looking for.
You have some coding to do, my friend
IT'S NOT WHAT YOU TRADE, IT'S HOW YOU TRADE IT!
Please do NOT PM me with trading or coding questions, post them in a thread.
Please do NOT PM me with trading or coding questions, post them in a thread.
- heyen
- rank: <50 posts
- Posts: 20
- Joined: Fri May 19, 2006 10:41 am
- Reputation: 0
- Location: Germany
- Gender:
Zone divider
Hello Folks,
there is one problem to the statistic:
3 consecutive same bars (equal H,L,C) will show up as 3 consecutive positive or negativ bars, but the price itself did not change over time (only within the bars).
i recommend rerunnig using the previous close instead the midpoint as reference. H & L will only be known after the bars is closed. Also only previous H & L should be referenced to avoid "lookoing into the future".
Sorry Avery, this remained unnoticed in the StockFetcher Forum.
But after all this work i had to point that out!
Thomas
there is one problem to the statistic:
3 consecutive same bars (equal H,L,C) will show up as 3 consecutive positive or negativ bars, but the price itself did not change over time (only within the bars).
i recommend rerunnig using the previous close instead the midpoint as reference. H & L will only be known after the bars is closed. Also only previous H & L should be referenced to avoid "lookoing into the future".
Sorry Avery, this remained unnoticed in the StockFetcher Forum.
But after all this work i had to point that out!
Thomas
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.
- michal.kreslik
- rank: 1000+ posts
- Posts: 1048
- Joined: Sat May 13, 2006 2:40 am
- Reputation: 36
- Location: Monte Carlo, Monaco
- Real name: Michal Kreslik
- Gender:
TheRumpledOne wrote:Michal:
Thanks.
However, I don't know the answer to the question.
I wanted a simple answer.
I only want to consider the midpoint... not 3 zones.
So, for the EURUSD 60 minute interval, if it closes above the middle, what is the "probability" it will close above the middle again?
Ditto for the 15 minute interval.
Thanks.
Avery,
You can export the coveted results from the 3D stats easily.
OK, I will gift-wrap the values just because it's you, Avery:
- Attachments
-
- 15min_60min_EURUSD_50-Zone.png (20.1 KiB) Viewed 6754 times
- michal.kreslik
- rank: 1000+ posts
- Posts: 1048
- Joined: Sat May 13, 2006 2:40 am
- Reputation: 36
- Location: Monte Carlo, Monaco
- Real name: Michal Kreslik
- Gender:
TheRumpledOne wrote:Michal:
You have 3D but you don't have separate statistics for above/below the middle!
I am sure the stats will be different for above/below.
That's part of the "edge" I am looking for.
You have some coding to do, my friend
Avery, there's an assumption the price behavior is symmetric:
Michal wrote:For the research to be valid with my algorithm that tracks only absolute Zone changes instead of upper to lower / lower to upper Zone change, we assume that the price behaviour in this respect is symmetric, i.e. there's no significant statistical difference between the tendency to change from the upper Zone to the lower Zone and the tendency to change from the lower Zone to the upper Zone.
There's no reason to believe the price behaves asymetrically in this respect (i.e. that there's a higher tendency towards changing from the upper Zone to the lower one than the other way round)
Stop scaring me, no more MidPoint coding
- michal.kreslik
- rank: 1000+ posts
- Posts: 1048
- Joined: Sat May 13, 2006 2:40 am
- Reputation: 36
- Location: Monte Carlo, Monaco
- Real name: Michal Kreslik
- Gender:
Re: Zone divider
heyen wrote:Hello Folks,
there is one problem to the statistic:
3 consecutive same bars (equal H,L,C) will show up as 3 consecutive positive or negativ bars, but the price itself did not change over time (only within the bars).
i recommend rerunnig using the previous close instead the midpoint as reference. H & L will only be known after the bars is closed. Also only previous H & L should be referenced to avoid "lookoing into the future".
Sorry Avery, this remained unnoticed in the StockFetcher Forum.
But after all this work i had to point that out!
Thomas
Thomas,
you may use a slightly modified original 2D Zone stats code to export the "close Zone" data:
Code: Select all
{
program name: 2DZone statistics
last change: Jun/04/2006
version: 3.22
author: Michal Kreslik
email: michal.kreslik @ kreslik.com
website: http:// kreslik.com
comments: prints 2D Zone statistics
}
{ ***** begin settings ***** }
vars: { inputs }
iZonePercent( 30 ),
{ -infinity to +50% }
iMinNumOfCases( 50 ),
{ minumim number of observations to deem the results statistically significant }
iPercentDecPrecision( 2 ),
{ number of decimal places to use for the export of % proabbilities }
iPrintToOutputBar( true ),
{ print the results to output bar? }
iPrintToFile( true ),
{ print the results to file? }
iAppendMode( false ),
{ if set to true, then append the results to the existing file
if set to false, create a brand new file for every test }
iFileFolder( "c:\data\temp" );
{ directory to save the resulting files(s) to }
{ ***** end settings ***** }
{ ***** begin global declarations ***** }
vars: { numerical variables }
nUpperZoneBoundary( 0 ),
nLowerZoneBoundary( 0 ),
nZoneState( 0 ),
nZoneStayCounter( 0 ),
nMaxBarsInZone( 0 );
vars: {string variables }
sStartDate( "" );
vars: { boolean variables }
bZoneAbandoned( false ),
bRunStats( false ),
intrabarpersist bFirstRun( true );
arrays: { array variables }
anCasesOfAbandonment[]( 0 ),
anCasesOfStay[]( 0 );
{ ***** end global declarations ***** }
{ ***** begin collecting data ***** }
bZoneAbandoned = false;
{
nUpperZoneBoundary = high - (high - low)*iZonePercent/100;
nLowerZoneBoundary = low + (high - low)*iZonePercent/100;}
nUpperZoneBoundary = close;
nLowerZoneBoundary = close;
if close > nUpperZoneBoundary[1] then
nZoneState = 1
else if close < nLowerZoneBoundary[1] then
nZoneState = -1
else if close >= nLowerZoneBoundary[1] AND close <= nUpperZoneBoundary[1] then
nZoneState = 0;
if nZoneState <> nZoneState[1] then
begin
bZoneAbandoned = true;
nZoneStayCounter = 1;
end
else
nZoneStayCounter = nZoneStayCounter + 1;
if bRunStats = false
AND bZoneAbandoned
AND nZoneState <> 0
AND BarNumber > 1 then
begin
bRunStats = true;
sStartDate = DateToString(DateToJulian(date));
end;
if bRunStats[1] AND nZoneState[1] <> 0 then
begin
nMaxBarsInZone = MaxList(nMaxBarsInZone, nZoneStayCounter[1]);
if nMaxBarsInZone > nMaxBarsInZone[1] then
begin
Array_SetMaxIndex(anCasesOfAbandonment, nMaxBarsInZone);
Array_SetMaxIndex(anCasesOfStay, nMaxBarsInZone);
end;
if bZoneAbandoned then
anCasesOfAbandonment[nZoneStayCounter[1]] = anCasesOfAbandonment[nZoneStayCounter[1]] + 1
else
anCasesOfStay[nZoneStayCounter[1]] = anCasesOfStay[nZoneStayCounter[1]] + 1;
end;
{ ***** end collecting data ***** }
{ ***** begin analysis ***** }
if LastBarOnChart AND bFirstRun AND iZonePercent <= 50 then
begin
bFirstRun = false;
{ ***** begin local declarations ***** }
vars: { numerical variables }
vTotalRows( 0 ),
vTotalCases( 0 );
vars: { string variables }
sTimeFrame( "" ),
sFileName( "" ),
sNotValid( "" );
vars: { boolean & temp variables }
bStatValidResults( false ),
tIndex( 0 );
arrays: { array variables }
asTimeFrames[4]( "" ),
asHeaderRows[]( "" );
{ ***** end local declarations ***** }
{ ***** begin set up the strings *****}
asTimeFrames[0] = NumToStr(BarInterval, 0) + "_ticks";
asTimeFrames[1] = NumToStr(BarInterval, 0) + "_min";
asTimeFrames[2] = "daily";
asTimeFrames[3] = "weekly";
asTimeFrames[4] = "monthly";
sTimeFrame = asTimeFrames[datacompression];
vTotalRows = 9;
Array_SetMaxIndex(asHeaderRows, vTotalRows);
asHeaderRows[1] = "2DZone statistics by michal.kreslik @ kreslik.com";
asHeaderRows[2] = "Zone %: " + NumToStr(iZonePercent, 0);
asHeaderRows[3] = "Total bars examined: " + NumToStr(BarNumber, 0);
asHeaderRows[4] = "Time period: " + sStartDate + " to " + DateToString(DateToJulian(date));
asHeaderRows[5] = "Exchange: " + GetExchangeName;
asHeaderRows[6] = "Symbol: " + GetSymbolName;
asHeaderRows[7] = "Timeframe: " + sTimeFrame;
asHeaderRows[8] = "Stat. validity - min # of cases setting: "
+ NumToStr(iMinNumOfCases, 0);
asHeaderRows[9] = "cons.bars,zone abandoned %,zone retained %,zone abandoned #,zone retained #";
sNotValid = "ERROR: no statistically valid results! "
+ "Load more bars or decrease the minimum cases value "
+ "for a statistical validity.";
{ ***** end set up the strings *****}
{ ***** begin print to output bar section ***** }
if iPrintToOutputBar then
begin
ClearPrintLog;
bStatValidResults = false;
for tIndex = 1 to vTotalRows
begin
Print(asHeaderRows[tIndex]);
end;
for tIndex = 1 to nMaxBarsInZone
begin
vTotalCases = anCasesOfAbandonment[tIndex] + anCasesOfStay[tIndex];
if vTotalCases >= iMinNumOfCases then
begin
bStatValidResults = true;
Print(NumToStr(tIndex, 0), " ",
NumToStr(anCasesOfAbandonment[tIndex]/vTotalCases*100, iPercentDecPrecision), " ",
NumToStr(anCasesOfStay[tIndex]/vTotalCases*100, iPercentDecPrecision), " ",
NumToStr(anCasesOfAbandonment[tIndex], 0), " ",
NumToStr(anCasesOfStay[tIndex], 0));
end;
end;
if bStatValidResults = false then
Print(sNotValid);
end;
{ ***** end print to output bar section ***** }
{ ***** begin print to file section ***** }
if iPrintToFile then
begin
bStatValidResults = false;
if iAppendMode then
sFileName = iFileFolder + "" + "Zone_Statistics.csv"
else
begin
sFileName = iFileFolder
+ ""
+ GetSymbolName + "_"
+ sTimeFrame + "_"
+ "statistics.csv";
FileDelete(sFileName);
end;
for tIndex = 1 to vTotalRows
begin
FileAppend(sFileName, asHeaderRows[tIndex] + NewLine);
end;
for tIndex = 1 to nMaxBarsInZone
begin
vTotalCases = anCasesOfAbandonment[tIndex] + anCasesOfStay[tIndex];
if vTotalCases >= iMinNumOfCases then
begin
bStatValidResults = true;
FileAppend(sFilename, NumToStr(tIndex, 0) + ","
+ NumToStr(anCasesOfAbandonment[tIndex]/vTotalCases*100, iPercentDecPrecision) + ","
+ NumToStr(anCasesOfStay[tIndex]/vTotalCases*100, iPercentDecPrecision) + ","
+ NumToStr(anCasesOfAbandonment[tIndex], 0) + ","
+ NumToStr(anCasesOfStay[tIndex], 0) + NewLine);
end;
end;
if bStatValidResults = false then
FileAppend(sFileName, sNotValid + NewLine);
FileAppend(sFileName, NewLine);
end;
{ ***** end print to file section ***** }
end;
{ ***** end analysis ***** }
The results for EURUSD 15 min & EURUSD 60 min:
- Attachments
-
- close_Zone.png (15 KiB) Viewed 6749 times
-
- rank: 150+ posts
- Posts: 179
- Joined: Sun May 28, 2006 1:30 am
- Reputation: 0
- Location: Boston, MA
- Gender:
Please explain the results without jargon. I know somoene mentioned results might be better looking at the close for some reason or other, but I thought this exercise was to see the predictive dynamics of the midpoint in terms of trend direction and trend continuation. Also, Why not also post the results for a couple of the other popular major currency pairs?
OPTIONSWINGS
OPTIONSWINGS
- michal.kreslik
- rank: 1000+ posts
- Posts: 1048
- Joined: Sat May 13, 2006 2:40 am
- Reputation: 36
- Location: Monte Carlo, Monaco
- Real name: Michal Kreslik
- Gender:
Ali,
I guess the results on the graphs are pretty self-explanatory. There's nothing mysterical to that.
Also, I couldn't post every single combination of timeframe/symbol since that would take up too much space. You are free to run the Zone stats code on your charts by yourself and post any results you deem interesting here.
I guess the results on the graphs are pretty self-explanatory. There's nothing mysterical to that.
Also, I couldn't post every single combination of timeframe/symbol since that would take up too much space. You are free to run the Zone stats code on your charts by yourself and post any results you deem interesting here.
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.