MQL5 Wizard - Trade Signals Based on Bullish/Bearish Meeting Lines + CCI:
The MQL5 Wizard allows creating ready-made Expert Advisors based on the Standard library classes delivered together with the client terminal (see Creating Ready-Made Expert Advisors in MQL5 Wizard for the details). It allows to check your trade ideas quickly, all you need is to create your own trading signals class. The structure of this class and example can be found in the article MQL5 Wizard: How to Create a Module of Trading Signals.
The generic idea is the following: the class of trading signals is derived from CExpertSignal, the next, it's necessary to override the LongCondition() and ShortCondition() virtual methods with your own methods.
There is a book "Strategies of best traders" (in Russian), there are many trading strategies are considered there, we will focus on reversal candlestick patterns, confirmed by Stochastic, CCI, MFI and RSI oscillators.
The best way is to create the separate class, derived from CExpertSignal for checking of formation of candlestick patterns. For confirmation of trade signals, generated by candlestick patterns, it's sufficient to write the class, derived from CCandlePattern and add the necessary features (for example, confirmation by oscillators) there.
Here we will consider the signals, based on "Bullish/Bearish Meeting Lines" reversal candlestick patterns, confirmed by CCI (Commodity Channel Index) indicator. The module of trade signals is based on the CCandlePattern class, it's simple example of its use for creation of trade signals with candlestick patterns.
Author: MetaQuotes Software Corp.
This EA is surely a diamond in the rough!
I have looked at your code and see what you're doing, however it would make most sense to scrap the "voting garbage" and do the following:
Open Long Conditions
Set BuyLongAt as an input i.e. at +100. Therefore, every time the CCI passes up through +100, you buy long to an input variable of MaxTrades.
Close Long Conditions
To unwind the buy long positions, wait until CCI passes down through 0 and close all positions.
Open Short Conditions
Set SellLongAt as an input i.e. at -100. Therefore, every time the CCI passes down through -100 you sell short up to MaxTrades.
Close Short Conditions
To unwind the sell short positions, wait until the CCI passes down through 0 and close all positions.