General Topics
Markets
Technical Topics
Brokerage Firms
Community Lounge
Site Support

# weekNumber AMIBroker

Discussion in 'Programming' started by davidp13, Jan 30, 2018.

1. ### davidp13

Good day. I'm looking to convert MT4 code into AFL, but finding it difficult.

Can anyone help? Code is below:

int _weekNumber (int nShift = 0)
{
datetime date = Time[nShift];
datetime date1 = Time[nShift+1];
int value1 = 0;
if (
(TimeMonth (date) == TimeMonth(date1) )
and ( (TimeDayOfWeek (date) == 1)
or (TimeDayOfWeek(date1) == 5) )
)
value1 = value1 + 1;
if (TimeMonth (date) != TimeMonth(date1) )
value1 = 1;
return value1;
}

Thanks

2. ### jharmon

code is flawed since it assumes a Monday or a Friday. Ever heard of holidays?

3. ### davidp13

OK thanks, but do you know how to code AFL to find the week of the month? Thanks

4. ### jharmon

You could create a simple indicator that creates a "week" counter since the start of the data, by looking when the weekday number for today is less than yesterday (indicating a week has ended) and incrementing the counter.

Code:
```function WeekCount()
{
return Cum( DayOfWeek()<=Ref(DayOfWeek(),-1) );
}
Plot( WeekCount(), _DEFAULT_NAME(), ParamColor("Color", ColorCycle ) );
```
Note that this will not work on markets that have holidays/trading breaks) over 1 week long but that's pretty much unheard of the western world (Sep 11 halted trading for a week, so this formula works for that). If your market has more than 1 week you'd need to use something like DateTimeDiff for ultimate accuracy.

Last edited: Jan 30, 2018
KeLo likes this.
5. ### jharmon

For what reason do you need to know the week of the month? Seems like a strange esoteric curve-fitted thing to want.

ET IS FREE BECAUSE OF THE FINANCIAL SUPPORT FROM THESE COMPANIES: