Для оптимизации параметров также хотелось бы в тестере стратегий увидеть возможность подбора не только весовых коэффициентов, параметров индикаторов, но и возможность подбора периода (таймфрейма) по их использованию.
Таймфреймы есть не что иное как перечисления. А перечисления использовать в тестере можно. Читайте справку - https://www.metatrader5.com/ru/terminal/help/algotrading/testing
Увы, таких возможностей я что-то не обнаружил, а именно, чтобы можно было включить в параметр по оптимизации выбор от периода М1 до периода MN, по результатам оптимизации которого станет ясно, на каком таймфрейме тот или иной индикатор с таким или иным периодом усреднения и дает в работе советника лучшие результаты тестирования.
ForexMoneyMaker:
Увы, таких возможностей я что-то не обнаружил, а именно, чтобы можно было включить в параметр по оптимизации выбор от периода М1 до периода MN, по результатам оптимизации которого станет ясно, на каком таймфрейме тот или иной индикатор с таким или иным периодом усреднения и дает в работе советника лучшие результаты тестирования.
Увы, таких возможностей я что-то не обнаружил, а именно, чтобы можно было включить в параметр по оптимизации выбор от периода М1 до периода MN, по результатам оптимизации которого станет ясно, на каком таймфрейме тот или иной индикатор с таким или иным периодом усреднения и дает в работе советника лучшие результаты тестирования.
Возьмите этот код советника и скомпилируйте
//+------------------------------------------------------------------+ //| Demo_Input_Timeframe.mq5 | //| Copyright 2011, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2011, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //--- input parameters input ENUM_TIMEFRAMES timeframe=PERIOD_M15;// таймфрейм индикатора //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+
Затем откройте тестер и задайте интервалы параметра
Очень интересная идея!
Т.е. для советника, подготовленного с помощью Мастера MQL5 это может выглядеть примерно так после соответствующих добавок и коррекций в коде (input parameters и set filter parameters?//+------------------------------------------------------------------+ //| RSI_Expert-v1.1.mq5 | //| Copyright 2011, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2011, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include <Expert\Expert.mqh> //--- available signals #include <Expert\Signal\SignalRSI.mqh> //--- available trailing #include <Expert\Trailing\TrailingNone.mqh> //--- available money management #include <Expert\Money\MoneyFixedLot.mqh> //+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="RSI_Expert-v1.1"; // Document name ulong Expert_MagicNumber =16137; // 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_0_RSI_PeriodRSI=9; // Relative Strength Index(9,...) Period of calculation input ENUM_APPLIED_PRICE Signal_0_RSI_Applied =PRICE_CLOSE; // Relative Strength Index(9,...) Prices series input double Signal_0_RSI_Weight =1.0; // Relative Strength Index(9,...) Weight [0...1.0] input int Signal_1_RSI_PeriodRSI=9; // Relative Strength Index(9,...) M15 Period of calculation input ENUM_APPLIED_PRICE Signal_1_RSI_Applied =PRICE_CLOSE; // Relative Strength Index(9,...) M15 Prices series input double Signal_1_RSI_Weight =1.0; // Relative Strength Index(9,...) M15 Weight [0...1.0] input ENUM_TIMEFRAMES Signal_1_RSI_TimeFrame=PERIOD_M15; // Relative Strength Index(9,...) M15 FramePeriod of calculation //--- 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; //+------------------------------------------------------------------+ //| Initialization function of the expert | //+------------------------------------------------------------------+ int OnInit() { //--- Initializing expert if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(-2); } //--- ExtExpert.InitSignal(signal); signal.ThresholdOpen(Signal_ThresholdOpen); signal.ThresholdClose(Signal_ThresholdClose); signal.PriceLevel(Signal_PriceLevel); signal.StopLevel(Signal_StopLevel); signal.TakeLevel(Signal_TakeLevel); signal.Expiration(Signal_Expiration); //--- Creating filter CSignalRSI CSignalRSI *filter0=new CSignalRSI; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.PeriodRSI(Signal_0_RSI_PeriodRSI); filter0.Applied(Signal_0_RSI_Applied); filter0.Weight(Signal_0_RSI_Weight); //--- Creating filter CSignalRSI CSignalRSI *filter1=new CSignalRSI; if(filter1==NULL) { //--- failed printf(__FUNCTION__+": error creating filter1"); ExtExpert.Deinit(); return(-4); } signal.AddFilter(filter1); //--- Set filter parameters filter1.Period(Signal_1_RSI_TimeFrame); filter1.PeriodRSI(Signal_1_RSI_PeriodRSI); filter1.Applied(Signal_1_RSI_Applied); filter1.Weight(Signal_1_RSI_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(-5); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(-6); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(-7); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(-8); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert.ValidationSettings()) { //--- failed ExtExpert.Deinit(); return(-9); } //--- Tuning of all necessary indicators if(!ExtExpert.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(-10); } //--- ok return(0); } //+------------------------------------------------------------------+ //| Deinitialization function of the expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| "Tick" event handler function | //+------------------------------------------------------------------+ void OnTick() { ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| "Trade" event handler function | //+------------------------------------------------------------------+ void OnTrade() { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| "Timer" event handler function | //+------------------------------------------------------------------+ void OnTimer() { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+
И этого будет достаточно?

Мастер MQL5: Создание эксперта без программирования
- 2010.12.15
- MetaQuotes Software Corp.
- www.mql5.com
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
Похоже, это работает!!!!!

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, модератор!
При наложении одного индикатора на другой, имеется возможность расчета второго индикатора на основе первого. Об этом также говорится и вашей статье "Индикатор от индикатора в MQL5". Однако при генерации советника в мастере MQL5 по сигналам индикаторов, а их 20, как мы знаем, нет ни одного, который позволял бы рассчитывать сигналы одного индикатора от другого.
Вопрос №1: Будет ли эта упущенная возможность доработана в новом билде?
Вопрос №2: Будут ли новые сигналы от других индикаторов, например объема, силы и др., по которым также рассчитываются дивергенции и прочие вещи?
Вопрос №3: Будут ли дополнены в модули сигналов конвергенции (не только ведь дивергенция имеет смысл)?
Хотелось бы видеть все три опциональные возможности в новом билде. Их добавка ведь - дело несложное! :)