Version 1.44
2025.03.30
+Add new parameter check only ticks
Version 1.43
2025.03.26
-Fix bug on input Timeframe
Version 1.42
2025.03.17
+ Added _Point to Eval
Version 1.37
2025.03.13
+Fixed bug in the DeMarker indicatorg
Version 1.36
2025.03.12
New version that fixes the time bugs in the files generated by the rule plotter indicator.
Version 1.35
2025.02.22
+ Support to code generator of Rule Plotter
Version 1.34
2025.02.18
+ Do not allow the user to use void strategies.
Version 1.33
2025.02.12
+More 10 Strategies Correlation
Version 1.32
2025.02.10
+Use Others Symbol on Secondary Strategy to Make Robots of Strategy Correlation
Version 1.31
2025.02.09
+Use Others Timeframes to Secondary Strategies
Version 1.30
2025.02.08
Use Other Strategies Combined
Version 1.29
2025.01.19
+ A parameter to select the timeframe of the strategy signals has been added.
Version 1.28
2025.01.19
+ Parameter to select the symbol for placing trade orders instead of using the current chart's symbol. While analyzing the current chart, you can send orders to another chart that is not running the robot. This is useful for analyzing custom symbols like Renko charts.
Version 1.27
2025.01.18
New Feature: Signal Reversal in Rule Plotter Indicator!
Now the Rule Plotter Expert allows reversing all signals generated by configured strategies. When creating strategies with the 4 main signals (buy, sell, close buy, close sell), you can configure the Expert to operate in the opposite direction of each signal.
This functionality is especially useful in optimizations, allowing you to identify if a strategy with negative results can become profitable by reversing the signals. With this update, you have even more control to fine-tune and validate the efficiency of your strategies in the market.
Version 1.26
2025.01.06
-Deny Open Position if Close Signal is Active.
Version 1.25
2024.12.14
Added library for the Rule Plotter Code Generator:
+ bool Import(const string json, const int instance=0);
+ int RulePlotterOnInit(const int instance=0);
+ void RulePlotterOnTick(const int instance=0);
+ void SetLot(const double lot, const int instance=0);
+ void SetTake(const double take, const int instance=0);
+ void SetTakeUnitType(const ENUM_UNIT_TYPE takeUnitType, const int instance=0);
+ void SetTakeUnitFrom(const ENUM_PRICE_FROM takeUnitFrom, const int instance=0);
+ void SetStop(const double stop, const int instance=0);
+ void SetStopUnitType(const ENUM_UNIT_TYPE stopUnitType, const int instance=0);
+ void SetStopUnitFrom(const ENUM_PRICE_FROM stopUnitFrom, const int instance=0);
+ void SetStopAtrPeriod(const int stopAtrPeriod, const int instance=0);
+ void SetStopStdDevPeriod(const int stopStdDevPeriod, const int instance=0);
+ void SetStopStdDevShift(const int stopStdDevShift, const int instance=0);
+ void SetStopStdDevMethod(const ENUM_MA_METHOD stopStdDevMethod, const int instance=0);
+ void SetStopStdDevApplied(const ENUM_APPLIED_PRICE stopStdDevApplied, const int instance=0);
+ void SetCheckRule(const ENUM_CHECK checkRule, const int instance=0);
+ void SetGeneralTimeframe(const ENUM_TIMEFRAMES generalTimeframe, const int instance=0);
+ void SetBreakeven(const uint breakeven, const int instance=0);
+ void SetTrailingUse(const bool trailingUse, const int instance=0);
+ void SetTrailingStart(const double trailingStart, const int instance=0);
+ void SetTrailingStartUnitType(const ENUM_UNIT_TYPE trailingStartUnitType, const int instance=0);
+ void SetTrailingStartUnitFrom(const ENUM_PRICE_FROM trailingStartUnitFrom, const int instance=0);
+ void SetTrailingDistance(const double trailingDistance, const int instance=0);
+ void SetTrailingDistanceUnitType(const ENUM_UNIT_TYPE trailingDistanceUnitType, const int instance=0);
+ void SetTrailingDistanceUnitFrom(const ENUM_TRAILING_DISTANCE_FROM trailingDistanceUnitFrom, const int instance=0);
+ void SetWaitPositionClose(const bool waitPositionClose, const int instance=0);
+ void SetMagic(const ulong magic, const int instance=0);
+ void SetDailyTake(const uint dailyTake, const int instance=0);
+ void SetDailyStop(const uint dailyStop, const int instance=0);
+ void SetTradeInJanuary(const ENUM_TRADE_ALLOWED tradeInJanuary, const int instance=0);
+ void SetTradeInFebruary(const ENUM_TRADE_ALLOWED tradeInFebruary, const int instance=0);
+ void SetTradeInMarch(const ENUM_TRADE_ALLOWED tradeInMarch, const int instance=0);
+ void SetTradeInApril(const ENUM_TRADE_ALLOWED tradeInApril, const int instance=0);
+ void SetTradeInMay(const ENUM_TRADE_ALLOWED tradeInMay, const int instance=0);
+ void SetTradeInJune(const ENUM_TRADE_ALLOWED tradeInJune, const int instance=0);
+ void SetTradeInJuly(const ENUM_TRADE_ALLOWED tradeInJuly, const int instance=0);
+ void SetTradeInAugust(const ENUM_TRADE_ALLOWED tradeInAugust, const int instance=0);
+ void SetTradeInSeptember(const ENUM_TRADE_ALLOWED tradeInSeptember, const int instance=0);
+ void SetTradeInOctober(const ENUM_TRADE_ALLOWED tradeInOctober, const int instance=0);
+ void SetTradeInNovember(const ENUM_TRADE_ALLOWED tradeInNovember, const int instance=0);
+ void SetTradeInDecember(const ENUM_TRADE_ALLOWED tradeInDecember, const int instance=0);
+ void SetMondayTrade(const ENUM_TRADE_ALLOWED mondayTrade, const int instance=0);
+ void SetMondayHourStart(const ENUM_TIME_HOUR mondayHourStart, const int instance=0);
+ void SetMondayMinuteStart(const ENUM_TIME_MINUTE mondayMinuteStart, const int instance=0);
+ void SetMondayHourEnd(const ENUM_TIME_HOUR mondayHourEnd, const int instance=0);
+ void SetMondayMinuteEnd(const ENUM_TIME_MINUTE mondayMinuteEnd, const int instance=0);
+ void SetMondayUseTimeToClose(const bool mondayUseTimeToClose, const int instance=0);
+ void SetMondayHourToClose(const ENUM_TIME_HOUR mondayHourToClose, const int instance=0);
+ void SetMondayMinuteToClose(const ENUM_TIME_MINUTE mondayMinuteToClose, const int instance=0);
+ void SetTuesdayTrade(const ENUM_TRADE_ALLOWED tuesdayTrade, const int instance=0);
+ void SetTuesdayHourStart(const ENUM_TIME_HOUR tuesdayHourStart, const int instance=0);
+ void SetTuesdayMinuteStart(const ENUM_TIME_MINUTE tuesdayMinuteStart, const int instance=0);
+ void SetTuesdayHourEnd(const ENUM_TIME_HOUR tuesdayHourEnd, const int instance=0);
+ void SetTuesdayMinuteEnd(const ENUM_TIME_MINUTE tuesdayMinuteEnd, const int instance=0);
+ void SetTuesdayUseTimeToClose(const bool tuesdayUseTimeToClose, const int instance=0);
+ void SetTuesdayHourToClose(const ENUM_TIME_HOUR tuesdayHourToClose, const int instance=0);
+ void SetTuesdayMinuteToClose(const ENUM_TIME_MINUTE tuesdayMinuteToClose, const int instance=0);
+ void SetWednesdayTrade(const ENUM_TRADE_ALLOWED wednesdayTrade, const int instance=0);
+ void SetWednesdayHourStart(const ENUM_TIME_HOUR wednesdayHourStart, const int instance=0);
+ void SetWednesdayMinuteStart(const ENUM_TIME_MINUTE wednesdayMinuteStart, const int instance=0);
+ void SetWednesdayHourEnd(const ENUM_TIME_HOUR wednesdayHourEnd, const int instance=0);
+ void SetWednesdayMinuteEnd(const ENUM_TIME_MINUTE wednesdayMinuteEnd, const int instance=0);
+ void SetWednesdayUseTimeToClose(const bool wednesdayUseTimeToClose, const int instance=0);
+ void SetWednesdayHourToClose(const ENUM_TIME_HOUR wednesdayHourToClose, const int instance=0);
+ void SetWednesdayMinuteToClose(const ENUM_TIME_MINUTE wednesdayMinuteToClose, const int instance=0);
+ void SetThursdayTrade(const ENUM_TRADE_ALLOWED thursdayTrade, const int instance=0);
+ void SetThursdayHourStart(const ENUM_TIME_HOUR thursdayHourStart, const int instance=0);
+ void SetThursdayMinuteStart(const ENUM_TIME_MINUTE thursdayMinuteStart, const int instance=0);
+ void SetThursdayHourEnd(const ENUM_TIME_HOUR thursdayHourEnd, const int instance=0);
+ void SetThursdayMinuteEnd(const ENUM_TIME_MINUTE thursdayMinuteEnd, const int instance=0);
+ void SetThursdayUseTimeToClose(const bool thursdayUseTimeToClose, const int instance=0);
+ void SetThursdayHourToClose(const ENUM_TIME_HOUR thursdayHourToClose, const int instance=0);
+ void SetThursdayMinuteToClose(const ENUM_TIME_MINUTE thursdayMinuteToClose, const int instance=0);
+ void SetFridayTrade(const ENUM_TRADE_ALLOWED fridayTrade, const int instance=0);
+ void SetFridayHourStart(const ENUM_TIME_HOUR fridayHourStart, const int instance=0);
+ void SetFridayMinuteStart(const ENUM_TIME_MINUTE fridayMinuteStart, const int instance=0);
+ void SetFridayHourEnd(const ENUM_TIME_HOUR fridayHourEnd, const int instance=0);
+ void SetFridayMinuteEnd(const ENUM_TIME_MINUTE fridayMinuteEnd, const int instance=0);
+ void SetFridayUseTimeToClose(const bool fridayUseTimeToClose, const int instance=0);
+ void SetFridayHourToClose(const ENUM_TIME_HOUR fridayHourToClose, const int instance=0);
+ void SetFridayMinuteToClose(const ENUM_TIME_MINUTE fridayMinuteToClose, const int instance=0);
+ void SetSaturdayTrade(const ENUM_TRADE_ALLOWED saturdayTrade, const int instance=0);
+ void SetSaturdayHourStart(const ENUM_TIME_HOUR saturdayHourStart, const int instance=0);
+ void SetSaturdayMinuteStart(const ENUM_TIME_MINUTE saturdayMinuteStart, const int instance=0);
+ void SetSaturdayHourEnd(const ENUM_TIME_HOUR saturdayHourEnd, const int instance=0);
+ void SetSaturdayMinuteEnd(const ENUM_TIME_MINUTE saturdayMinuteEnd, const int instance=0);
+ void SetSaturdayUseTimeToClose(const bool saturdayUseTimeToClose, const int instance=0);
+ void SetSaturdayHourToClose(const ENUM_TIME_HOUR saturdayHourToClose, const int instance=0);
+ void SetSaturdayMinuteToClose(const ENUM_TIME_MINUTE saturdayMinuteToClose, const int instance=0);
+ void SetSundayTrade(const ENUM_TRADE_ALLOWED sundayTrade, const int instance=0);
+ void SetSundayHourStart(const ENUM_TIME_HOUR sundayHourStart, const int instance=0);
+ void SetSundayMinuteStart(const ENUM_TIME_MINUTE sundayMinuteStart, const int instance=0);
+ void SetSundayHourEnd(const ENUM_TIME_HOUR sundayHourEnd, const int instance=0);
+ void SetSundayMinuteEnd(const ENUM_TIME_MINUTE sundayMinuteEnd, const int instance=0);
+ void SetSundayUseTimeToClose(const bool sundayUseTimeToClose, const int instance=0);
+ void SetSundayHourToClose(const ENUM_TIME_HOUR sundayHourToClose, const int instance=0);
+ void SetSundayMinuteToClose(const ENUM_TIME_MINUTE sundayMinuteToClose, const int instance=0);
+ void SetTimeTypeToTimeAllowed(const ENUM_TIME_TYPE timeTypeToTimeAllowed, const int instance=0);
Version 1.24
2024.12.01
+ Trailing use parameter true/false
+ Trailing start parameter is back
Version 1.23
2024.12.01
+ Add trailing by ATR
+ Add trailing by points
+ Add trailing by pips
+ Add trailing by money
+ Add trailing by standard deviation
+ Add trailing by percent of price open
+ Add trailing by percent balance
+ Add trailing by candle size
- Remove trailing start
Version 1.22
2024.11.16
+ Add Stop and Take based on Money
+ Add Stop and Take based on Percentage on Balance
+ Add Stop and Take based on Pips
+ Add Stop and Take based on Points
+ Add Stop and Take based on Ticks
+ Add Stop and Take based on Percentage of Position's Open Price
+ Add Stop and Take based on Candle Size
+ Add Stop and Take based on Average True Range (ATR)
+ Add Stop and Take based on Standard Deviation
+ Add Stop and Take base price from Position's Open Price
+ Add Stop and Take base price from Above or Below The Candle
Version 1.21
2024.11.10
+ Add Daily Profit input
+ Add Daily Loss input
+ Add an alert in Rule Plotter when the strategy was not previously created by the Rule Plotter Indicator
- fix bug in /portable versions of metatrader
- fix bug that prevents closing all positions when a closing signal appears, symbolized by the "bomb"
Version 1.20
2024.08.22
+ Added the First() function in the Rule Plotter language
Version 1.14
2024.07.14
+ Fixed the bug that removed spaces from the names of indicators involved in logical operations using parentheses in AND/OR operations
Version 1.12
2024.05.25
Fixed visual bug in the strategy viewer
Version 1.11
2024.05.10
Control of days, months, and times has been added.
Version 1.10
2024.05.05
Added Trailing Stop
Version 1.9
2024.03.10
- Prevent strategy zero from being filled with the default value
Version 1.8
2024.03.09
+ Breakeven Input has been added, where zero means Breakeven will be disabled.
Version 1.7
2024.02.22
Now it's possible to define a signal rule to close the position.
Version 1.6
2024.02.19
Compatibility with more indicators
Version 1.3
2024.01.31
In netting accounts, trades will no longer close with the opposite signal.
Version 1.2
2024.01.07
- Fixed program freezing bug
Version 1.1
2024.01.06
- Fix bug of too many oscillators in the strategy tester visual mode
This is a really interesting EA that can run any strategy you create using the companion (FREE) rule-based Rule Plotter strategy builder indicator. What's even more remarkable is I had an issue running this EA and the creator, Francisco, connected to my PC to investigate the issue and he found the cause, which was related to my MT5 installation being non-standard. It works perfectly now. Amazing support and product.