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
Các Phương Pháp Price Action Kinh Điển
Bộ sách tổng hợp các phương pháp Price Action truyền thống và hiện đại, với các hướng dẫn cụ thể và dễ áp dụng cho nhà giao dịch
Bài viết liên quan