Всем привет.
Хочу реализовать для мастера MQL5 (для генерации советника из визарда) модуль усреднения.
Реализация будет следующая, при генерации нового сигнала проверить открытую позицию, если она убыточная ликвидировать минус усреднением.
Но я не до конца понимаю как.
Через модуль сигналов это не реализуешь, там веса.
Через модуль трейлингстопа, как я понял так же не получится, т.к. там можно модифицировать только свойства открытой позиции (tp/sl).
В манименеджменте так же нельзя это реализовать.
Получается единственный способ "долить", это создать свой класс унаследованный от CExpert и переопределить метод Processing?
Но тогда через визард создавать такие помощники не выйдет :(
Направьте ход моих мыслей в правильное русло...
Структура СБ эксперта заточена вроде под один сигнал одна сделка. Т.е. такова что для реализации не только этой задачи но и многих других надо сам класс cexpert модифицировать. Но можно, это не сложнее чем сигнал новый.
Я абсолютно согласен, что не сложно.
Вопрос в другом, что при обновлении платформы файлы стандартной поставки могут быть перезаписаны, что сломает работу при компиляции, чего очень не хотелось бы.
Как быть в этой ситуации?
Я абсолютно согласен, что не сложно.
Вопрос в другом, что при обновлении платформы файлы стандартной поставки могут быть перезаписаны, что сломает работу при компиляции, чего очень не хотелось бы.
Как быть в этой ситуации?
Я затрудняюсь сказать, куда можно приткнуть усреднение. Люблю смотреть статью Мастер MQL5: Новая версия
- www.mql5.com
Наследование
Как-то в 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;
- www.mql5.com
Как-то в 2017 я делал попытки.
Это были наброски - просто позволял открывать несколько позиций в одном направлении.
Советник сгенерированный Мастером MQL5:
этот же советник после замены:
Благодарю, я к такому же варианту пока пришел, с переопределенным процессингом.
Если будут еще варианты, буду рад услышать.
Благодарю, я к такому же варианту пока пришел, с переопределенным процессингом.
Если будут еще варианты, буду рад услышать.
Это минимальный достаточный вариант. По хорошему надо вообще вместо cexpert свой писать, т.к. там не только процессинг не универсален. А вам обязательно чтоб в визарде работало? Я думал это только тем, кто программировать совсем не умеет.
На данный момент - да, необходимо это для быстрых проверок гипотез и гентестирования.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хочу реализовать для мастера MQL5 (для генерации советника из визарда) модуль усреднения.
Реализация будет следующая, при генерации нового сигнала проверить открытую позицию, если она убыточная ликвидировать минус усреднением.
Но я не до конца понимаю как.
Через модуль сигналов это не реализуешь, там веса.
Через модуль трейлингстопа, как я понял так же не получится, т.к. там можно модифицировать только свойства открытой позиции (tp/sl).
В манименеджменте так же нельзя это реализовать.
Получается единственный способ "долить", это создать свой класс унаследованный от CExpert и переопределить метод Processing?
Но тогда через визард создавать такие помощники не выйдет :(
Направьте ход моих мыслей в правильное русло...