// // Prepare Signal ... void PrepareConditionsSignal(X121MarketConditions &conditions) { // if (!conditions.hasSignal) { return; } // bool isLong = IsLong(conditions.signal.type); // // Check Calculate TP ... if ( conditions.signal.sl > 0 && conditions.signal.tp <= 0 && conditions.signal.r2r > 0 && conditions.signal.entry > 0) { // double riskPrice = MathAbs(conditions.signal.entry - conditions.signal.sl); double riskPoint = PriceToPoint( conditions.signal.symbol, riskPrice); double rewardPoint = riskPoint * conditions.signal.r2r; double rewardPrice = PointToPrice( conditions.signal.symbol, rewardPoint); // double tp = isLong ? conditions.signal.entry + rewardPrice : conditions.signal.entry - rewardPrice; // conditions.signal.tp = tp; } // PrepareSignal(conditions.signal); // conditions.signal.supportAndResistance = conditions.supportResistances; } // // TODO: Delete This ... void DrawConditionsSignalOnChart(X121MarketConditions &conditions) { // ulong mTicket = MathRand() * 100000; // DrawSignal( mTicket, conditions.signal); // DrawSupportResistance( 0, conditions.supportResistances, conditions.signal.providers[0]); } // // Catch Trend Changes ... if (ArraySize(trendStateBuffer) > 1) { // bool isChanged = trendStateBuffer[0] != trendStateBuffer[1] && trendStateBuffer[0] != EMPTY_VALUE; if (isChanged) { // double to = trendBuffer[0]; double from = trendBuffer[1]; ENUM_XMAN_STATES state = (ENUM_XMAN_STATES)(int)trendStateBuffer[0]; datetime at = iTime( mSymbol, mPeriod, barIndex); // XValueChanged lastChange; bool hasLastChange = GetLastItem( lastChange, trendChanges); bool canAdd = !hasLastChange ? true : lastChange.at < at; // if (canAdd) { // // Here also we Free Trend Changes Sizes if // its More than 500 ... if (ArraySize(trendChanges) >= 500) { // // Retrieve Last Change model and add theme // again ... // Clean(trendChanges); // if (hasLastChange) { // Add( lastChange, trendChanges); } } // XValueChanged model; // model.to = to; model.from = from; model.at = at; // Add( model, trendChanges); // // // LogMessage( // "Trend Changed On: " + ToString(trendChangeddOn) + // "\n state: " + EnumToString(state) + // "\n from: " + ToString(lastTrend) + // "\n to: " + ToString(trend) + // "\n" // // // ); } } } // Copy( trendChanges, result.trendChanges); ArraySetAsSeries( result.trendChanges, true); // // Catch Peaks Changes ... if (ArraySize(peaksBuffer) > 1) { // bool isPeakChanged = peaksBuffer[0] != peaksBuffer[1] && peaksBuffer[0] != EMPTY_VALUE; if (isPeakChanged) { // double peak = peaksBuffer[0]; double lastPeak = peaksBuffer[1]; // datetime at = iTime( mSymbol, mPeriod, barIndex); // XValueChanged lastChange; bool hasLastChange = GetLastItem( lastChange, peakChanges); bool canAdd = !hasLastChange ? true : lastChange.at < at; // if (canAdd) { // // Here also we Free Trend Changes Sizes if // its More than 500 ... if (ArraySize(peakChanges) >= 500) { // // Retrieve Last Change model and add theme // again ... // Clean(peakChanges); // if (hasLastChange) { // Add( lastChange, peakChanges); } } // XValueChanged model; // model.to = peak; model.from = lastPeak; model.at = at; // Add( model, peakChanges); } } } // Copy( peakChanges, result.peakChanges); ArraySetAsSeries( result.peakChanges, true); // // Catch Vales Changes ... if (ArraySize(valesBuffer) > 1) { // bool isChanged = valesBuffer[0] != valesBuffer[1] && valesBuffer[0] != EMPTY_VALUE; if (isChanged) { // double peak = peaksBuffer[0]; double lastPeak = peaksBuffer[1]; // datetime at = iTime( mSymbol, mPeriod, barIndex); // XValueChanged lastChange; bool hasLastChange = GetLastItem( lastChange, peakChanges); bool canAdd = !hasLastChange ? true : lastChange.at < at; // if (canAdd) { // // Here also we Free Trend Changes Sizes if // its More than 500 ... if (ArraySize(peakChanges) >= 500) { // // Retrieve Last Change model and add theme // again ... // Clean(peakChanges); // if (hasLastChange) { // Add( lastChange, peakChanges); } } // XValueChanged model; // model.to = peak; model.from = lastPeak; model.at = at; // Add( model, peakChanges); } } } // Copy( peakChanges, result.peakChanges); ArraySetAsSeries( result.peakChanges, true);