Hallo anyone can help me
I want to create formula
Logica:
High > 3% (in 5 day)
And then
Example
Day1 high = 2%
Day2 high = 3%
Day3 high = 1%
Day4 high = 10%
Day5 high = 4%
High > 3% = 3
Result = 3/5day
= 60%
How to create logica for amibroker?? Help
Formula excel logica
= countif(A1:A5; “>3”)/5
Take a look at Sum () and IIf ().
function CountIf_Percent(array, threshold, period) {
/// @link https://forum.amibroker.com/t/help-logica-for-amibroker/13262
local count_if, if_true;
if_true = IIf(array > threshold, 1, 0);
count_if = Sum(if_true, period);
return count_if / period;
}
days = 5;
threshold = 3;
array = /*your array here*/;
pcnt = CountIf_Percent(array, threshold, days);
1 Like
Tomasz
June 16, 2019, 12:42pm
3
CountIf of array elements greater than 3 for 5 bars is simply
Sum( array > 3, 5 );
You don't need to use IIf because comparison by itself gives 1 or 0 depending if condition is met or not.
2 Likes
Since it was me using IIf
I just want to mention that it was added for better understanding since OP appears to be new to AB and many newbies having problems with (understanding) array (conditions)....
So @Jimmysaputraa , once you get familiar with how AFL/arrays work you can make code faster/less complicated by not adding redundant code doing things twice.
So as suggested by @Tomasz here is alternative without IIf() (Note: both if_true
versions are correct).
function CountIf_Percent(array, threshold, period) {
/// @link https://forum.amibroker.com/t/help-logica-for-amibroker/13262
local count_if, if_true;
if_true = array > threshold;
count_if = Sum(if_true, period);
return count_if / period;
}
days = 5;
threshold = 3;
array = /*your array here*/;
pcnt = CountIf_Percent(array, threshold, days);
As aside also read here to understand difference between if-else
statement and IIf
function.
3 Likes
Tomasz
Closed
June 16, 2019, 4:49pm
5
Thread is closed until original poster proves that he purchased the software.