// XOHCLSupRes XPVHLPFindCandleSupprtAndResistance( int bar_index, // Bar Index ... int verifications = 4 // Number of Verifications ... ) { // XOHCLSupRes result = {}; result.res = 0; result.highRes = 0; result.sup = 0; result.lowSup = 0; // XOHCL cBar = GetCandle( _Symbol, _Period, bar_index); // int tries = 0; int lastBar = bar_index; while ( result.res == 0 || result.highRes == 0 || result.sup == 0 || result.lowSup == 0) { // int bar = XPVHLPFindSupportBar(lastBar); double val = XPVHLPFindSupportValue(lastBar); // int bar1 = XPVHLPFindResistanceBar(lastBar); double val1 = XPVHLPFindResistanceValue(lastBar); // if (result.res == 0 && result.highRes == 0 && val > cBar.high && val1 > cBar.high) { // result.res = MathMin(val, val1); result.highRes = MathMax(val, val1); } else if (result.sup == 0 && result.lowSup == 0 && val < cBar.low && val1 < cBar.low) { // result.sup = MathMax(val, val1); result.lowSup = MathMin(val, val1); } else if (val > cBar.high) { // if (result.res == 0 || result.highRes == 0) { // if (result.res == 0) { result.res = val; } else if (val > result.res) { result.highRes = val; } else if (val < result.res) { // result.highRes = result.res; result.res = val; } } } else if (val < cBar.low) { // if (result.sup == 0 || result.lowSup == 0) { // if (result.sup == 0) { result.sup = val; } else if (val < result.sup) { result.lowSup = val; } else if (val > result.sup) { // result.lowSup = result.sup; result.sup = val; } } } else if (val1 > cBar.high) { // if (result.res == 0 || result.highRes == 0) { // if (result.res == 0) { result.res = val1; } else if (val1 > result.res) { result.highRes = val1; } else if (val1 < result.res) { // result.highRes = result.res; result.res = val1; } } } else if (val1 < cBar.low) { // if (result.sup == 0 || result.lowSup == 0) { // if (result.sup == 0) { result.sup = val1; } else if (val1 < result.sup) { result.lowSup = val1; } else if (val1 > result.sup) { // result.lowSup = result.sup; result.sup = val1; } } } // if (tries >= verifications) { break; } // lastBar = MathMin(bar, bar1); tries++; } // return result; } // int XPVHLPFindSupportBar( int bar_index, // Bar Index ... int verifications = 4 // Number of Verifications ... ) { // int result = -1; // int mVerified = 0; int idx = bar_index; bool founded = false; double lastValue = 0; while (!founded) { // XPVHLPReadBuffers(idx); bool isSupport = XPVHLPIsStrongSupport(idx); if (isSupport) { // if (lastValue != pvLLLBuffer[idx]) { // lastValue = pvLLLBuffer[idx]; mVerified = 0; } else if (lastValue == pvLLLBuffer[idx]) { mVerified++; } } else { mVerified = 0; } // idx++; // founded = mVerified >= verifications; if (founded) { result = idx; break; } } // return result; } // double XPVHLPFindSupportValue( int bar_index, // Bar Index ... int verifications = 4 // Number of Verifications ... ) { // double result = 0; // int supportBar = XPVHLPFindSupportBar(bar_index, verifications); if (supportBar < -1) { return result; } // return pvSLLBuffer[bar_index]; // return result; } // int XPVHLPFindResistanceBar( int bar_index, // Bar Index ... int verifications = 4 // Number of Verifications ... ) { // int result = -1; // int mVerified = 0; int idx = bar_index; bool founded = false; double lastValue = 0; while (!founded) { // XPVHLPReadBuffers(idx); bool isSupport = XPVHLPIsStrongResistance(idx); if (isSupport) { // if (lastValue != pvLHHBuffer[idx]) { // lastValue = pvLHHBuffer[idx]; mVerified = 0; } else if (lastValue == pvLHHBuffer[idx]) { mVerified++; } } else { mVerified = 0; } // idx++; // founded = mVerified >= verifications; if (founded) { result = idx; break; } } // return result; } // double XPVHLPFindResistanceValue( int bar_index, // Bar Index ... int verifications = 4 // Number of Verifications ... ) { // double result = 0; // int supportBar = XPVHLPFindResistanceBar(bar_index, verifications); if (supportBar < -1) { return result; } // return pvSHHBuffer[bar_index]; // return result; }