Возникла делема. Использую в советнике встроенные индикаторы iAO и iRSI, советник выводит их на график и с этим все ok.
Но возникла потребность немного отформатировать их внешний вид, т.е. правой мышкой по индикатору и поменять цвет, толщину линий и т.п. Руками это все форматируется, а как это сделать в советнике??? Где лежат .mq5 файлы этих индикаторов? К ним вообще доступ есть?
Заменять их аналогичными из папки Example и подключать как iCustom не хочу.
А придётся.
Вот например мне понадобилось, чтобы на индикаторе Stochastic отображались уровни, которые можно задать из советника - там появился Stochastic Custom:
Когда из эксперта вызывается стандартный iStochastic, то в визуальном режиме тестирования у этого стандартного индикатора будут ВСЕГДА отображаться два уровня: 80.0 и 20.0. Такая ситуация не годится, если эксперт использует другие уровни (например 75.0 и 25.0).
Поэтому стандартный индикатор был модифицирован: в индикаторе Stochastic Custom имеет два новых параметра:
Пример вызова данного индикатора из эксперта:
***
inputint Inp_STO_KPeriod= 5; // STO: K periodinputint Inp_STO_DPeriod= 3; // STO: D periodinputint Inp_STO_Slowing= 3; // STO: Slowinginputint Inp_STO_Level1 = 25.0; // STO: Value Level #1inputdouble Inp_STO_Level2 = 75.0; // STO: Value Level #2
***
//--- create handle of the indicator iCustom
handle_iStochastic=iCustom(m_symbol.Name(),Period(),"Stochastic Custom",
Inp_STO_KPeriod,Inp_STO_DPeriod,Inp_STO_Slowing,Inp_STO_Level1,Inp_STO_Level2);
//--- if the handle is not created if(handle_iStochastic==INVALID_HANDLE)
{
//--- tell about the failure and output the error code PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
m_symbol.Name(),
EnumToString(Period()),
GetLastError());
//--- the indicator is stopped early return(INIT_FAILED);
}
Вот например мне понадобилось, чтобы на индикаторе Stochastic отображались уровни, которые можно задать из советника - там появился Stochastic Custom:
Когда из эксперта вызывается стандартный iStochastic, то в визуальном режиме тестирования у этого стандартного индикатора будут ВСЕГДА отображаться два уровня: 80.0 и 20.0. Такая ситуация не годится, если эксперт использует другие уровни (например 75.0 и 25.0).
Поэтому стандартный индикатор был модифицирован: в индикаторе Stochastic Custom имеет два новых параметра:
Пример вызова данного индикатора из эксперта:
спасибо за подробный ответ,
а есть разница в скорости работы, нагрузке на память и проц, между встроенными индикаторами и внешними? у меня мультисимвольный и мультитаймфреймный эксперт, предельно нагруженный. т.е. подключение через iCustom что то меняет?
пробую писать эксперта пересечение MA, так при тесте на графике есть сделки, которых нет в журнале, не могу понять откуда они взялись ? может накините вариантов ?
topmett: пробую писать эксперта пересечение MA, так при тесте на графике есть сделки, которых нет в журнале, не могу понять откуда они взялись ? может накините вариантов ?
Смотри лучше историю сделок и ордеров. В журнул могут не все вызовы Print попадать.
Сгенерировал простенький советник с помощью Мастера VQL5, код приведу ниже. Помогите разобраться, почему не работает функция "Expiration of pending orders (in bars)", переводится как "Срок действия отложенных ордеров (в барах)". Устанавливаю любые значения Signal_Expiration от 1 до 1000, но все-равно отложенный ордер существует только в течении одного бара. Настройки параметров также прикладываю.
Для тестирования использую Демо-счет терминала Метатрейдер 5, build 2136.
С уважением, Владимир.
//+------------------------------------------------------------------+//| EA_MasterMQL5.mq5 |//| Copyright 2019, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2019, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Include |//+------------------------------------------------------------------+#include <Expert\Expert.mqh>
//--- available signals#include <Expert\Signal\SignalITF.mqh>
//--- available trailing#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+//| Inputs |//+------------------------------------------------------------------+//--- inputs for expertinputstring Expert_Title ="EA_MB_MasterMQL5"; // Document nameulong Expert_MagicNumber =1473; //bool Expert_EveryTick =false; ////--- inputs for main signalinputint Signal_ThresholdOpen =0; // Signal threshold value to open [0...100]inputint Signal_ThresholdClose =0; // Signal threshold value to close [0...100]inputdouble Signal_PriceLevel =0.0; // Price level to execute a dealinputdouble Signal_StopLevel =50.0; // Stop Loss level (in points)inputdouble Signal_TakeLevel =50.0; // Take Profit level (in points)inputint Signal_Expiration =4; // Expiration of pending orders (in bars)inputint Signal_ITF_GoodHourOfDay=-1; // IntradayTimeFilter(-1,...) Good hourinputint Signal_ITF_BadHoursOfDay=8389119; // IntradayTimeFilter(-1,...) Bad hours (bit-map)inputint Signal_ITF_GoodDayOfWeek=-1; // IntradayTimeFilter(-1,...) Good day of weekinputint Signal_ITF_BadDaysOfWeek=0; // IntradayTimeFilter(-1,...) Bad days of week (bit-map)inputdouble Signal_ITF_Weight =1.0; // IntradayTimeFilter(-1,...) Weight [0...1.0]//--- inputs for moneyinputdouble Money_FixRisk_Percent =10.0; // Risk percentage//+------------------------------------------------------------------+//| Global expert object |//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+//| Initialization function of the expert |//+------------------------------------------------------------------+intOnInit()
{
//--- Initializing expertif(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
{
//--- failedprintf(__FUNCTION__+": error initializing expert");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Creating signal
CExpertSignal *signal=new CExpertSignal;
if(signal==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating signal");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//---
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 CSignalITF
CSignalITF *filter0=new CSignalITF;
if(filter0==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating filter0");
ExtExpert.Deinit();
return(INIT_FAILED);
}
signal.AddFilter(filter0);
//--- Set filter parameters
filter0.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
filter0.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
filter0.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
filter0.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
filter0.Weight(Signal_ITF_Weight);
//--- Creation of trailing object
CTrailingNone *trailing=new CTrailingNone;
if(trailing==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating trailing");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add trailing to expert (will be deleted automatically))if(!ExtExpert.InitTrailing(trailing))
{
//--- failedprintf(__FUNCTION__+": error initializing trailing");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Set trailing parameters//--- Creation of money object
CMoneyFixedRisk *money=new CMoneyFixedRisk;
if(money==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating money");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add money to expert (will be deleted automatically))if(!ExtExpert.InitMoney(money))
{
//--- failedprintf(__FUNCTION__+": error initializing money");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Set money parameters
money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parametersif(!ExtExpert.ValidationSettings())
{
//--- failed
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Tuning of all necessary indicatorsif(!ExtExpert.InitIndicators())
{
//--- failedprintf(__FUNCTION__+": error initializing indicators");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- okreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Deinitialization function of the expert |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
ExtExpert.Deinit();
}
//+------------------------------------------------------------------+//| "Tick" event handler function |//+------------------------------------------------------------------+voidOnTick()
{
ExtExpert.OnTick();
}
//+------------------------------------------------------------------+//| "Trade" event handler function |//+------------------------------------------------------------------+voidOnTrade()
{
ExtExpert.OnTrade();
}
//+------------------------------------------------------------------+//| "Timer" event handler function |//+------------------------------------------------------------------+voidOnTimer()
{
ExtExpert.OnTimer();
}
//+------------------------------------------------------------------+
Это будет работать разработчики вместо OrderCloseTime()???
Мой опыт в MQL5 четвертый день, но уже хлебнул по полной!
Верните функцию OrderCloseTime(), это же позиция можно же как то программно сделать.... - ордер - потом сделка - потом позиция, или ее так трудно вычислить машинным путем позицию?
1. МЕ5 не сохраняет настройки интерфейса, которые были на момент выключения. В частности, пропадает панель настроек. Восстановить можно, но это приходится делать всякий раз при включении.
2. Делаю индикатор. Изменение настроек индикатора в МТ5 как правило приводит к сбою : существенно меняется форма линий, не удаётся изменить цвет и т.п. Причём, если настройки менять во вновь устанавливаемом индикаторе, то всё работает как задумано.
Вопросы:
1. Это только у меня так или общая проблема? 2. Если это я что-то не учитываю или не так делаю, прошу подсказать.
Если кого очень сильно не затруднит, поправьте пожалуйста код MQL4 так, чтобы он работал в ML5
Для начала Вам нужно правильно писать системные функции. Легче всего это сделать если в редакторе MetaEditor 5 меню Файл - Создать - Советник (шаблон). Сравните свой код и мой:
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Возникла делема.
Использую в советнике встроенные индикаторы iAO и iRSI, советник выводит их на график и с этим все ok.
Но возникла потребность немного отформатировать их внешний вид, т.е. правой мышкой по индикатору и поменять цвет, толщину линий и т.п. Руками это все форматируется, а как это сделать в советнике??? Где лежат .mq5 файлы этих индикаторов? К ним вообще доступ есть?
Заменять их аналогичными из папки Example и подключать как iCustom не хочу.
А придётся.
Вот например мне понадобилось, чтобы на индикаторе Stochastic отображались уровни, которые можно задать из советника - там появился Stochastic Custom:
Когда из эксперта вызывается стандартный iStochastic, то в визуальном режиме тестирования у этого стандартного индикатора будут ВСЕГДА отображаться два уровня: 80.0 и 20.0. Такая ситуация не годится, если эксперт использует другие уровни (например 75.0 и 25.0).
Поэтому стандартный индикатор был модифицирован: в индикаторе Stochastic Custom имеет два новых параметра:
Пример вызова данного индикатора из эксперта:
А придётся.
Вот например мне понадобилось, чтобы на индикаторе Stochastic отображались уровни, которые можно задать из советника - там появился Stochastic Custom:
Когда из эксперта вызывается стандартный iStochastic, то в визуальном режиме тестирования у этого стандартного индикатора будут ВСЕГДА отображаться два уровня: 80.0 и 20.0. Такая ситуация не годится, если эксперт использует другие уровни (например 75.0 и 25.0).
Поэтому стандартный индикатор был модифицирован: в индикаторе Stochastic Custom имеет два новых параметра:
Пример вызова данного индикатора из эксперта:
спасибо за подробный ответ,
а есть разница в скорости работы, нагрузке на память и проц, между встроенными индикаторами и внешними?
у меня мультисимвольный и мультитаймфреймный эксперт, предельно нагруженный.
т.е. подключение через iCustom что то меняет?
пробую писать эксперта пересечение MA, так при тесте на графике есть сделки, которых нет в журнале, не могу понять откуда они взялись ? может накините вариантов ?
Всем доброго дня и большого профита!
Сгенерировал простенький советник с помощью Мастера VQL5, код приведу ниже. Помогите разобраться, почему не работает функция "Expiration of pending orders (in bars)", переводится как "Срок действия отложенных ордеров (в барах)". Устанавливаю любые значения Signal_Expiration от 1 до 1000, но все-равно отложенный ордер существует только в течении одного бара. Настройки параметров также прикладываю.
Для тестирования использую Демо-счет терминала Метатрейдер 5, build 2136.
С уважением, Владимир.
Это будет работать разработчики вместо OrderCloseTime()???
Мой опыт в MQL5 четвертый день, но уже хлебнул по полной!
Верните функцию OrderCloseTime(), это же позиция можно же как то программно сделать.... - ордер - потом сделка - потом позиция, или ее так трудно вычислить машинным путем позицию?
Всем добрый день!
Если кого очень сильно не затруднит, поправьте пожалуйста код MQL4 так, чтобы он работал в ML5
Наблюдаю неестественное поведение платформы.
1. МЕ5 не сохраняет настройки интерфейса, которые были на момент выключения. В частности, пропадает панель настроек. Восстановить можно, но это приходится делать всякий раз при включении.
2. Делаю индикатор. Изменение настроек индикатора в МТ5 как правило приводит к сбою : существенно меняется форма линий, не удаётся изменить цвет и т.п.
Причём, если настройки менять во вновь устанавливаемом индикаторе, то всё работает как задумано.
Вопросы:
1. Это только у меня так или общая проблема?
2. Если это я что-то не учитываю или не так делаю, прошу подсказать.
Всем добрый день!
Если кого очень сильно не затруднит, поправьте пожалуйста код MQL4 так, чтобы он работал в ML5
Для начала Вам нужно правильно писать системные функции. Легче всего это сделать если в редакторе MetaEditor 5 меню Файл - Создать - Советник (шаблон). Сравните свой код и мой:
Когда исправите, продолжим далее ...