CountIf Issue - futures io
futures io



CountIf Issue


Discussion in EasyLanguage Programming

Updated
    1. trending_up 3,846 views
    2. thumb_up 4 thanks given
    3. group 1 followers
    1. forum 2 posts
    2. attach_file 1 attachments




Welcome to futures io: the largest futures trading community on the planet, with well over 150,000 members
  • Genuine reviews from real traders, not fake reviews from stealth vendors
  • Quality education from leading professional traders
  • We are a friendly, helpful, and positive community
  • We do not tolerate rude behavior, trolling, or vendors advertising in posts
  • We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community.  It's free and simple.

-- Big Mike, Site Administrator

(If you already have an account, login at the top of the page)

 
Search this Thread
 

CountIf Issue

(login for full post details)
  #1 (permalink)
 kevinkdog   is a Vendor
 
 
Posts: 3,464 since Jul 2012
Thanks: 1,827 given, 6,985 received

I am directing this at any Easy Language expert, but especially @ABCTG, since he is the best EL expert I know here...

OK, I am officially stumped.

I tried the countif function on a 5 minute chart of @ES, exchange time, last date of 1081231 (last time of 1520):

Looking at the chart, on the last bar you can easily see that the lowest low of the last 5 bars is 689.0







On Dec 31, 2008 at 1520 Exchange time, the lowest low of the last five 5 minute bars is 689.0 (on second to last bar).

Everyone should agree on that.


Now, if I run this code:

 
Code
Var:PriceToTest(0); 
  
If date=1081231 and time=1520 then begin 
  PriceToTest = 689.1; 
  Value1 = CountIf( (Low of data1<= PriceToTest), 5 ); 
  Print("Value1= ",Value1, "    PriceToTest = ", PriceToTest, "    LookBack = ", LookBack); 
end;


I get

Value1= 0.00 PriceToTest = 689.10 LookBack = 5.00


which is wrong. Value 1 should be equal to 1, since there is one low (689.0) which is below 689.1


Next I change the code to this:

 
Code
Var:PriceToTest(0); 
  
If date=1081231 and time=1520 then begin 
PriceToTest = 689.1; 
Value1 = CountIf( (Low of data1<= 689.1), 5 );  //hard code 689.1 here, replacing variable PriceToTest 
Print("Value1= ",Value1, "    PriceToTest = ", PriceToTest, "    LookBack = ", LookBack); 
end;



And now it is correct:
Value1= 1.00 PriceToTest = 689.10 LookBack = 5.00


Can someone explain what is going on here? Am I misunderstanding what Countif is doing?

Follow me on Twitter Started this thread Reply With Quote
The following user says Thank You to kevinkdog for this post:

Can you help answer these questions
from other members on futures io?
Big Mo Indicator for NT8
NinjaTrader
NT8 Order Management Strategy
The Elite Circle
Multi Time Frame High/Low/Median levels
NinjaTrader
help with take profit several targets
TradeStation
How do I create Strategy with the Second Entry indicator
NinjaTrader
 
Best Threads (Most Thanked)
in the last 7 days on futures io
Is anyone actually making money?
123 thanks
ApexTraderFunding.com experience and review
11 thanks
Artificial Intelligence (AI) and Chat GPT
7 thanks
Dax market profile (FDAX, TPO)
7 thanks
Want your NinjaTrader indicator created, free?
7 thanks
 
(login for full post details)
  #2 (permalink)
 ABCTG   is a Vendor
 
 
Posts: 2,360 since Apr 2013
Thanks: 426 given, 1,578 received

kevinkdog,

you set the value for the variable PriceToTest on the very bar you call the "CountIf" function. Therefore, PriceToTest[1] should equal to 0 (and so should PriceToTest[2] etc..).

When you take a look at the CountIf code you can see that the "Test" input is back referenced within the loop and it appears the iterations with the loop counter > 0 are not true because these bars have "PriceToTest" at 0.

When you use a static value you do not have this problem as your second test confirms.

Regards,

ABCTG


kevinkdog View Post
I am directing this at any Easy Language expert, but especially @ABCTG, since he is the best EL expert I know here...

OK, I am officially stumped.

I tried the countif function on a 5 minute chart of @ES, exchange time, last date of 1081231 (last time of 1520):

Looking at the chart, on the last bar you can easily see that the lowest low of the last 5 bars is 689.0







On Dec 31, 2008 at 1520 Exchange time, the lowest low of the last five 5 minute bars is 689.0 (on second to last bar).

Everyone should agree on that.


Now, if I run this code:

 
Code
Var:PriceToTest(0); 
  
If date=1081231 and time=1520 then begin 
  PriceToTest = 689.1; 
  Value1 = CountIf( (Low of data1<= PriceToTest), 5 ); 
  Print("Value1= ",Value1, "    PriceToTest = ", PriceToTest, "    LookBack = ", LookBack); 
end;


I get

Value1= 0.00 PriceToTest = 689.10 LookBack = 5.00


which is wrong. Value 1 should be equal to 1, since there is one low (689.0) which is below 689.1


Next I change the code to this:

 
Code
Var:PriceToTest(0); 
  
If date=1081231 and time=1520 then begin 
PriceToTest = 689.1; 
Value1 = CountIf( (Low of data1<= 689.1), 5 );  //hard code 689.1 here, replacing variable PriceToTest 
Print("Value1= ",Value1, "    PriceToTest = ", PriceToTest, "    LookBack = ", LookBack); 
end;



And now it is correct:
Value1= 1.00 PriceToTest = 689.10 LookBack = 5.00


Can someone explain what is going on here? Am I misunderstanding what Countif is doing?


Follow me on Twitter Reply With Quote
The following 3 users say Thank You to ABCTG for this post:
 
(login for full post details)
  #3 (permalink)
 kevinkdog   is a Vendor
 
 
Posts: 3,464 since Jul 2012
Thanks: 1,827 given, 6,985 received


That is it, thanks!

Follow me on Twitter Started this thread Reply With Quote


futures io Trading Community Platforms and Indicators EasyLanguage Programming > CountIf Issue


Last Updated on December 8, 2020


Upcoming Webinars and Events
 

NinjaTrader Indicator Challenge!

Ongoing
     



Copyright © 2023 by futures io, s.a., Av Ricardo J. Alfaro, Century Tower, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada), info@futures.io
All information is for educational use only and is not investment advice.
There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
no new posts