Mohamed Mostafa Mohamed Sonbol:
hello
Anyone have the code for this? i know it's simple but my mind is somehow blocked.
let's say i have an array contains few double elements,
I know one of these elements and need to get the closest hi and closest low to this element.
I don't want to use sorting and indexing,
thank you.
Interesting!
This is a possible solution for your problem:
//+------------------------------------------------------------------+ //| Return the index of the closest lower element < target in the | //| unsorted list. | //+------------------------------------------------------------------+ template<typename T> int FindClosestLow(const T &array[], const T target) { T min = NULL; T highest_min = NULL; int minIndex = -1; for(int i = 0; i < ArraySize(array); i++) { if(array[i] < target) { min = array[i]; if(minIndex == -1 || min > highest_min) { highest_min = min; minIndex = i; } } } return minIndex; } //+------------------------------------------------------------------+ //| Return the index of the closest higher element > target in the | //| unsorted list. | //+------------------------------------------------------------------+ template<typename T> int FindClosestHigh(const T &array[], const T target) { T max = NULL; T lowest_max = NULL; int maxIndex = -1; for(int i = 0; i < ArraySize(array); i++) { if(array[i] > target) { max = array[i]; if(maxIndex == -1 || max < lowest_max) { lowest_max = max; maxIndex = i; } } } return maxIndex; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { int array[] = { 4, 9, 2, 4, 1, 6, 4 }; Print("array:"); ArrayPrint(array); Print("--------Find closest element higher > target---------"); for(int target = -1; target <= 10; target++) { int index = FindClosestHigh(array, target); int element = (index > -1) ? array[index] : INT_MIN; PrintFormat("FindClosestHigh(%d) element = %d", target, element); } } //+------------------------------------------------------------------+ // sample output: /* --------Find closest element higher > target--------- array: 4 9 2 4 1 6 4 FindClosestHigh(-1) element = 1 FindClosestHigh(0) element = 1 FindClosestHigh(1) element = 2 FindClosestHigh(2) element = 4 FindClosestHigh(3) element = 4 FindClosestHigh(4) element = 6 FindClosestHigh(5) element = 6 FindClosestHigh(6) element = 9 FindClosestHigh(7) element = 9 FindClosestHigh(8) element = 9 FindClosestHigh(9) element = -2147483648 FindClosestHigh(10) element = -2147483648 */
Files:
FindClosestHigh.mq5
3 kb
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
hello
Anyone have the code for this? i know it's simple but my mind is somehow blocked.
let's say i have an array contains few double elements,
I know one of these elements and need to get the closest hi and closest low to this element.
I don't want to use sorting and indexing,
thank you.