Solomon
Active Member
- 282
- 295
Mình đang viết code xác định High và Low của 1 cấu trúc và lưu vào Array. Có đoạn code xác định như sau hình như sử dụng trên MQL5, đọc hoài mà không hiểu được cái logic của nó là ntn. Nhờ các bác giúp đỡ giải ngố giúp ạ. Em cảm ơn.
int LocalExtremeBar(int length, int Start, double d){ // d=direction= +1 or -1
if (d > 0) return( LocalExtremeArray(High, length, Start, d) );
return( LocalExtremeArray(Low, length, Start, d) );
}
int LocalExtremeArray(double arr[], int length, int iStart, double d){
while(true){
int iPrev = iStart; iStart = ArrayExtrema(arr, length, iStart, d);
if (iStart == iPrev) return iStart;
}
//NOTREACHED
}
int ArrayExtrema(double arr[], int length, int iStart, double d){
int iExtreme = iStart; double value = arr[iExtreme];
int iLimit = MathMin(iStart + length, ArraySize(arr));
for(iStart++; iStart<iLimit; iStart++) if((arr[iStart]-value) *d>= 0.){
iExtreme = iStart; value = arr[iExtreme]; } // largest index (>=)
return iExtreme;
}
int LocalExtremeBar(int length, int Start, double d){ // d=direction= +1 or -1
if (d > 0) return( LocalExtremeArray(High, length, Start, d) );
return( LocalExtremeArray(Low, length, Start, d) );
}
int LocalExtremeArray(double arr[], int length, int iStart, double d){
while(true){
int iPrev = iStart; iStart = ArrayExtrema(arr, length, iStart, d);
if (iStart == iPrev) return iStart;
}
//NOTREACHED
}
int ArrayExtrema(double arr[], int length, int iStart, double d){
int iExtreme = iStart; double value = arr[iExtreme];
int iLimit = MathMin(iStart + length, ArraySize(arr));
for(iStart++; iStart<iLimit; iStart++) if((arr[iStart]-value) *d>= 0.){
iExtreme = iStart; value = arr[iExtreme]; } // largest index (>=)
return iExtreme;
}
Giới thiệu sách Trading hay
Naked Forex - Phương Pháp Price Action Tinh Gọn
Naked Forex được đánh giá cao trên toàn cầu (theo Amazon) vì đã cung cấp một cẩm nang thực thụ cho những nhà giao dịch theo trường phái Price Action
Bài viết liên quan