Модуль усреднения отрицательной позиции для генерации советника через мастер MQL5

 
Всем привет.

Хочу реализовать для мастера MQL5 (для генерации советника из визарда) модуль усреднения.

Реализация будет следующая, при генерации нового сигнала проверить открытую позицию, если она убыточная ликвидировать минус усреднением.

Но я не до конца понимаю как.

Через модуль сигналов это не реализуешь, там веса.

Через модуль трейлингстопа, как я понял так же не получится, т.к. там можно модифицировать только свойства открытой позиции (tp/sl).

В манименеджменте так же нельзя это реализовать.

Получается единственный способ "долить", это создать свой класс унаследованный от CExpert и переопределить метод Processing?

virtual bool      Processing(void);

Но тогда через визард создавать такие помощники не выйдет :(

Направьте ход моих мыслей в правильное русло...

 
White Rabbit:
Всем привет.

Хочу реализовать для мастера MQL5 (для генерации советника из визарда) модуль усреднения.

Реализация будет следующая, при генерации нового сигнала проверить открытую позицию, если она убыточная ликвидировать минус усреднением.

Но я не до конца понимаю как.

Через модуль сигналов это не реализуешь, там веса.

Через модуль трейлингстопа, как я понял так же не получится, т.к. там можно модифицировать только свойства открытой позиции (tp/sl).

В манименеджменте так же нельзя это реализовать.

Получается единственный способ "долить", это создать свой класс унаследованный от CExpert и переопределить метод Processing?

Но тогда через визард создавать такие помощники не выйдет :(

Направьте ход моих мыслей в правильное русло...

Структура СБ эксперта заточена вроде под один сигнал одна сделка. Т.е. такова что для реализации не только этой задачи но и многих других надо сам класс cexpert модифицировать. Но можно, это не сложнее чем сигнал новый.
 
Aleksey Mavrin:
Структура СБ эксперта заточена вроде под один сигнал одна сделка. Т.е. такова что для реализации не только этой задачи но и многих других надо сам класс cexpert модифицировать. Но можно, это не сложнее чем сигнал новый.

Я абсолютно согласен, что не сложно.

Вопрос в другом, что при обновлении платформы файлы стандартной поставки могут быть перезаписаны, что сломает работу при компиляции, чего очень не хотелось бы.

Как быть в этой ситуации?

 
White Rabbit:

Я абсолютно согласен, что не сложно.

Вопрос в другом, что при обновлении платформы файлы стандартной поставки могут быть перезаписаны, что сломает работу при компиляции, чего очень не хотелось бы.

Как быть в этой ситуации?

Наследование
 

Я затрудняюсь сказать, куда можно приткнуть усреднение. Люблю смотреть статью Мастер MQL5: Новая версия

Мастер MQL5: Новая версия
Мастер MQL5: Новая версия
  • www.mql5.com
В терминал MetaTrader 5 продолжают вноситься улучшения, добавляется новый функционал. В очередном (439) билде MetaTrader 5 обновился и Мастер MQL5, который позволяет создавать советники с еще более гибкими торговыми правилами. В этой статье мы покажем новые возможности Мастера MQL5 и расскажем об изменениях в архитектуре экспертов, получаемых...
 
Aleksey Mavrin:
Наследование
Как бы Вы реализовали наследование, без нарушения работы визарда в будущем? Можно пожалуйста услышать Вашу логику действий.
 

Как-то в 2017 я делал попытки.

class CExpertAveraging : public CExpert

Это были наброски - просто позволял открывать несколько позиций в одном направлении. 


Советник сгенерированный Мастером MQL5:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMACD.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingKVN.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title            ="1";         // Document name
ulong                    Expert_MagicNumber      =2595;        //
bool                     Expert_EveryTick        =false;       //
//--- inputs for main signal
input int                Signal_ThresholdOpen    =10;          // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose   =10;          // Signal threshold value to close [0...100]
input double             Signal_PriceLevel       =0.0;         // Price level to execute a deal
input double             Signal_StopLevel        =50.0;        // Stop Loss level (in points)
input double             Signal_TakeLevel        =50.0;        // Take Profit level (in points)
input int                Signal_Expiration       =4;           // Expiration of pending orders (in bars)
input int                Signal_MACD_PeriodFast  =12;          // MACD(12,24,9,PRICE_CLOSE) Period of fast EMA
input int                Signal_MACD_PeriodSlow  =24;          // MACD(12,24,9,PRICE_CLOSE) Period of slow EMA
input int                Signal_MACD_PeriodSignal=9;           // MACD(12,24,9,PRICE_CLOSE) Period of averaging of difference
input ENUM_APPLIED_PRICE Signal_MACD_Applied     =PRICE_CLOSE; // MACD(12,24,9,PRICE_CLOSE) Prices series
input double             Signal_MACD_Weight      =1.0;         // MACD(12,24,9,PRICE_CLOSE) Weight [0...1.0]
//--- inputs for trailing
input ushort             Trailing_MA_TrailingStop=25;          // Trailing Stop
input ushort             Trailing_MA_TrailingStep=5;           // Trailing Step
//--- inputs for money
input double             Money_FixLot_Percent    =10.0;        // Percent
input double             Money_FixLot_Lots       =0.1;         // Fixed volume
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;

этот же советник после замены:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\ExpertAveraging.mqh>
//--- available signals
#include <Expert\Signal\SignalMACD.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingKVN.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title            ="1";         // Document name
ulong                    Expert_MagicNumber      =2595;        //
bool                     Expert_EveryTick        =false;       //
//--- inputs for main signal
input int                Signal_ThresholdOpen    =10;          // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose   =10;          // Signal threshold value to close [0...100]
input double             Signal_PriceLevel       =0.0;         // Price level to execute a deal
input double             Signal_StopLevel        =50.0;        // Stop Loss level (in points)
input double             Signal_TakeLevel        =50.0;        // Take Profit level (in points)
input int                Signal_Expiration       =4;           // Expiration of pending orders (in bars)
input int                Signal_MACD_PeriodFast  =12;          // MACD(12,24,9,PRICE_CLOSE) Period of fast EMA
input int                Signal_MACD_PeriodSlow  =24;          // MACD(12,24,9,PRICE_CLOSE) Period of slow EMA
input int                Signal_MACD_PeriodSignal=9;           // MACD(12,24,9,PRICE_CLOSE) Period of averaging of difference
input ENUM_APPLIED_PRICE Signal_MACD_Applied     =PRICE_CLOSE; // MACD(12,24,9,PRICE_CLOSE) Prices series
input double             Signal_MACD_Weight      =1.0;         // MACD(12,24,9,PRICE_CLOSE) Weight [0...1.0]
//--- inputs for trailing
input ushort             Trailing_MA_TrailingStop=25;          // Trailing Stop
input ushort             Trailing_MA_TrailingStep=5;           // Trailing Step
//--- inputs for money
input double             Money_FixLot_Percent    =10.0;        // Percent
input double             Money_FixLot_Lots       =0.1;         // Fixed volume
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpertAveraging ExtExpert;
Мастер MQL5: Создание эксперта без программирования
Мастер MQL5: Создание эксперта без программирования
  • www.mql5.com
При создании автоматических торговых систем возникает необходимость написания алгоритмов анализа рыночной ситуации и генерации торговых сигналов, алгоритмов сопровождения открытых позиций, систем управления капиталом и контроля риска торговли. После того как код модулей написан самой сложной задачей является компоновка всех частей и отладка...
Файлы:
 
White Rabbit:
Как бы Вы реализовали наследование, без нарушения работы визарда в будущем? Можно пожалуйста услышать Вашу логику действий.
В вашем случае визард я бы просто обошел - вручную меняя cexpert на mycexpert в коде сова после сборки кода визардом.
 
Vladimir Karputov:

Как-то в 2017 я делал попытки.

Это были наброски - просто позволял открывать несколько позиций в одном направлении. 


Советник сгенерированный Мастером MQL5:

этот же советник после замены:

Благодарю, я к такому же варианту пока пришел, с переопределенным процессингом.

Если будут еще варианты, буду рад услышать.

 
White Rabbit:

Благодарю, я к такому же варианту пока пришел, с переопределенным процессингом.

Если будут еще варианты, буду рад услышать.

Это минимальный достаточный вариант. По хорошему надо вообще вместо cexpert свой писать, т.к. там не только процессинг не универсален. А вам обязательно чтоб в визарде работало? Я думал это только тем, кто программировать совсем не умеет.
 
Aleksey Mavrin:
Это минимальный достаточный вариант. По хорошему надо вообще вместо cexpert свой писать, т.к. там не только процессинг не универсален. А вам обязательно чтоб в визарде работало? Я думал это только тем, кто программировать совсем не умеет.

На данный момент - да, необходимо это для быстрых проверок гипотез и гентестирования.

Причина обращения: