Новая версия платформы MetaTrader 4 build 910: Улучшения в Библиотеке кодов и доработка интерфейса для Windows 10 - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В новом Bild 910 появилась проблема в тестере.
В советнике есть такие строки (параметры советника):
enum PeR { M1=1, M5=5, M15=15, M30=30, H1=60, H4=240, D1=1440, W1=10080, MN1=43200 }; // Список периодов для работы
input PeR Gl_Per = D1; // Период для Индикатора
input PeR Gl_Per_Dop = W1; // Период для Доп ордеров
enum BuySell { Auto=9, Buy=1, Sell=-1 }; // Режим торговли
input BuySell BS=Auto;
Тестируем советника.
Для оптимизации выбраны параметры "Gl_Per" и "Gl_Per_Dop"
смотрим результат оптимизации и видим:
41 1440.44 430 65.82 3.35 1006.60 9.77% 0.00000000 Gl_Per=0 Gl_Per_Dop=0 Fix=1.1 Prof=1.3 Yes_Test=1 Start_Ich=0 Gl_Risk=0.2
85 1355.64 286 52.26 4.74 843.71 8.20% 0.00000000 Gl_Per=0 Gl_Per_Dop=0 Fix=1.4 Prof=1.6 Yes_Test=1 Start_Ich=0 Gl_Risk=0.2
58 1333.39 317 51.63 4.21 849.45 8.26% 0.00000000 Gl_Per=0 Gl_Per_Dop=0 Fix=1.4 Prof=1.8 Yes_Test=1 Start_Ich=0 Gl_Risk=0.2
Почему Gl_Per и Gl_Per_Dop = 0, должен быть указан период D1 или W1 и.т.д.
Раньше всё работало нормально (в предыдущем bild).
В дополнение: при выборе свойств эксперта - не возможно стало выбрать параметр "Gl_Per" и "Gl_Per_Dop".
На табло одни нули (((.
Свойства эксперта - видны значения параметров Gl_Per и Gl_Per_Dop W1 и D1 а при выборе = 0 0 0 0 0 0 )))
В новом Bild 910 появилась проблема в тестере.
В советнике есть такие строки (параметры советника):
enum PeR { M1=1, M5=5, M15=15, M30=30, H1=60, H4=240, D1=1440, W1=10080, MN1=43200 }; // Список периодов для работы
input PeR Gl_Per = D1; // Период для Индикатора
input PeR Gl_Per_Dop = W1; // Период для Доп ордеров
enum BuySell { Auto=9, Buy=1, Sell=-1 }; // Режим торговли
input BuySell BS=Auto;
Тестируем советника.
Для оптимизации выбраны параметры "Gl_Per" и "Gl_Per_Dop"
смотрим результат оптимизации и видим:
41 1440.44 430 65.82 3.35 1006.60 9.77% 0.00000000 Gl_Per=0 Gl_Per_Dop=0 Fix=1.1 Prof=1.3 Yes_Test=1 Start_Ich=0 Gl_Risk=0.2
85 1355.64 286 52.26 4.74 843.71 8.20% 0.00000000 Gl_Per=0 Gl_Per_Dop=0 Fix=1.4 Prof=1.6 Yes_Test=1 Start_Ich=0 Gl_Risk=0.2
58 1333.39 317 51.63 4.21 849.45 8.26% 0.00000000 Gl_Per=0 Gl_Per_Dop=0 Fix=1.4 Prof=1.8 Yes_Test=1 Start_Ich=0 Gl_Risk=0.2
Почему Gl_Per и Gl_Per_Dop = 0, должен быть указан период D1 или W1 и.т.д.
Раньше всё работало нормально (в предыдущем bild).
Нужны дополнительные подробности.
Мы не можем воспоизвести описываемую Вами проблему
В дополнение: при выборе свойств эксперта - не возможно стало выбрать параметр "Gl_Per" и "Gl_Per_Dop".
На табло одни нули (((.
Свойства эксперта - видны значения параметров Gl_Per и Gl_Per_Dop W1 и D1 а при выборе = 0 0 0 0 0 0 )))
Похоже, где-то затирается память
Не могли бы Вы дать Ваш ex4 для проверки? Он будет сразу же уничтожен после исследований
Нужны дополнительные подробности.
Мы не можем воспоизвести описываемую Вами проблему
Вот пример - простой советник но с параметрами ENUM.
//=========================================================
enum PerH { M1=1,M5=5,M15=15,M30=30,H1=60,H4=240,D1=1440,W1=10080 };
input PerH Per= M30;
extern double StopLoss = 30;
extern double TakeProfit = 75;
extern double MovingPeriod1 = 5;
extern double MovingPeriod2 = 75;
extern double MovingPeriod3 = 85;
extern double Risk = 1;
input bool Yes_Sv2 = true;
bool BuyOne=true,SellOne=true;
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void CheckForOpen()
{
double ma1,ma2,ma3,macd1,macd2;
int res;
//----
ma1=iMA(NULL,Per,MovingPeriod1,0,MODE_EMA,PRICE_CLOSE,1);
ma2=iMA(NULL,Per,MovingPeriod2,0,MODE_LWMA,PRICE_LOW,1);
ma3=iMA(NULL,Per,MovingPeriod3,0,MODE_LWMA,PRICE_LOW,1);
macd1=iMACD(NULL,Per,15,26,1,PRICE_CLOSE,MODE_MAIN,1);
macd2=iMACD(NULL,Per,15,26,1,PRICE_CLOSE,MODE_MAIN,2);
//---- buy
if(ma1>ma2 && ma1>ma3 && macd1>0 && BuyOne && macd2<=macd1 && (!Yes_Sv2 || (macd2<=0 && Yes_Sv2)))
{
res=OrderSend(Symbol(),OP_BUY,Lots(),Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",111,0,Blue);
BuyOne=false; SellOne=true;
return;
}
//---- sell
if(ma1<ma2 && ma1<ma3 && macd1<0 && SellOne && macd2>=macd1 && (!Yes_Sv2 || (macd2>=0 && Yes_Sv2)))
{
res=OrderSend(Symbol(),OP_SELL,Lots(),Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",222,0,Red);
SellOne=false; BuyOne=true;
return;
}
}
//+------------------------------------------------------------------+
//| Start function |
//+------------------------------------------------------------------+
void start()
{
if(Bars<100 || IsTradeAllowed()==false) return;
CheckForOpen();
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size |
//+------------------------------------------------------------------+
double Lots()
{
double Lots;
double acc_free_margin=AccountFreeMargin(),calc_margin=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
Lots=acc_free_margin/calc_margin;
if(Lots<0.1)
Lots=NormalizeDouble(Lots,2);
else
{
if(Lots<1) Lots=NormalizeDouble(Lots,1);
else Lots=NormalizeDouble(Lots,0);
}
Lots=Risk*Lots/100;
return(Lots);
}
//================================================
Попробуйте протестировать с параметром "Per"
Вот пример - простой советник но с параметрами ENUM.
Попробуйте протестировать с параметром "Per"
Сразу же так и сделали. Эксперт такой же простой, параметры скопировали Ваши.
У Вас на этом эксперте воспроизводится? Дайте нам этот ex4, собранный Вашим компилятором. А также подробности, какая ОС, какие права доступа, сколько оперативной памяти, параметры тестирования (торговый сервер, символ, период, даты тестирования)
Сразу же так и сделали. Эксперт такой же простой, параметры скопировали Ваши.
У Вас на этом эксперте воспроизводится? Дайте нам этот ex4, собранный Вашим компилятором. А также подробности, какая ОС, какие права доступа, сколько оперативной памяти, параметры тестирования (торговый сервер, символ, период, даты тестирования)
Я похоже рано поднял волну, после перезагрузки и удаления лишних программ из памяти - дефект пропал, и выбор параметров идет нормально.
На ПК пока стоит: ОС - ХР, ОЗУ - 3Гб сервер Alpari-demo, а cимвол EURUSD.
Для информации как проявлялось себя проблема:
При открытии свойств эксперта в первую секунду - таблица свойств открывалась и все входные параметры были видны и не пустые. Но через секунду или чуть менее (в процессе активации таблицы) значения в реквизите "Per" уже были пустыми, т.е. = пробелу, пусто было также в параметре старт и стоп этого реквизита.
Ну а при выборе значений реквизита - все 8-мь вариантов были нулевыми см первый пост( https://www.mql5.com/ru/forum/66900/page3#comment_2057881 ).
Может это связано с нехваткой оперативной памяти в моём ПК, а может ещё с чем то.
Что-то есть во входных параметрах перечисляемого типа, вот и сейчас пробую разные варианты этого советника: оптимизирую первый смотрю результат оптимизации - всё нормально переменная данные по переменной Per видны , затем тестирую второй но без оптимизации, и вижу что результат оптимизации первого варианта меняются, а именно, данные по переменным перечисляемого типа искажены: Per= 0 или Per=3735552 ??? Это связано с тем, что при тесте второго советника перечисляемые типы первого наверное удаляются (т.е. перечисляемый тип потерял свои елементы ) и поэтому они не видны в результатах его прошлой оптимизации.
Ну ладно это просто мысли в слух - если будут полезными - хорошо - а нет так извините старого маразматика ( более 60 лет уже ) можно и поворчать по стариковски ))).
Функция определения нового бара в новом билде в тестере стала давать ошибку - Ошибка копирования времени, номер ошибки =4073
Проверил простеньким экспертом в тестере на 15-минутках по ценам открытия:
Ошибок рантайма не было, но результаты "порадовали". ))) Всегда копируется самый последний имеющийся в истории бар, и пофиг, что дело происходит в тестере.
ЗЫ. В МТ5 тоже проверил, там всё в порядке.
Кстати. Давно хотел написать. В метаэдиторе из меню "Файл" можно открыть общий каталог данных. А из терминала-то почему нельзя? Что в пятёрке, что в четвёрке. Неудобно же по проводнику лазить.
Кстати. Давно хотел написать. В метаэдиторе из меню "Файл" можно открыть общий каталог данных. А из терминала-то почему нельзя? Что в пятёрке, что в четвёрке. Неудобно же по проводнику лазить.
Потому, что общий каталог данных это каталог в который пишут и читают файлы советники, индикаторы или скрипты. Соответственно найти его надо программисту, а не трейдеру. По сути трейдеру пофигу куда что пишется и откуда читается, а программисту это обязательно надо, при отладке программы, для проверки что написано и что будет прочитано.