xyz999: 2) Если оптимизация (бэктест) проводилась за период 10 месяцев и при этом выбиралась опция 1/4 форвард теста, как например, то как мне нужно понимать:
Я нашел ответ на второй свой вопрос. Однако там НЕТ ОТВЕТОВ НА ПЕРВЫЙ И ТРЕТИЙ ВОПРОСЫ.
Я бы тоже их хотел иметь.
Хотел бы знать результаты и соотношения имеющие место у других трейдеров. Так как полученные мною результаты очень настораживают. Я ученый в области автоматического управления и МОДЕЛИРОВАНИЯ НЕСТАЦИОНАРНЫХ ПРОЦЕССОВ, к которым относится такжне график движения цены на рынке. Я много лет моделировал нестационарные процессы и то, как работает тестер никак не вкладыватся в мой многолетний опыт. Что-то здесь не так. То ли я неверно пользуюсь тестером то ли он неверно работает. Давайте вместе разберемся.
У меня проведение бектеста строго по периоду оптимизации показывает 200% прибыли от той, что при тех же параметрах мы имели во время оптимизации. А при выборе иных оптимизационных параметров проводя тестирование опять же по периоду оптимизации мы получаем прибыль в несколько раз менее. Такого не должно быть в принципе. Именно поэтому возникли у меня вопросы.
xyz999: Я нашел ответ на второй свой вопрос. Однако там НЕТ ОТВЕТОВ НА ПЕРВЫЙ И ТРЕТИЙ ВОПРОСЫ. Я бы тоже их хотел иметь.
Ну, это уже не ко мне. Как говорится, "Чем могу" (с). От самой темы я далек. Попробуйте поиском по форуму, может где уже форвард-тестирование и обсуждалось. Или, если считаете, что тема очень значимая, создайте новую тематическую ветку. А то в общей ветке вопросы быстро затеряются.
Взял тело индикатора Custom Moving Average и внутри поставил буфер MFI .
Поменял где надо цена.Вот и все.
Сделал тебе и как експерт,толко индюк и комент-для проверки.Нормално.
Спасибо за то, что не оставили сообщение без ответа. Увы тестер бракует по-прежнему сглаживание других индикаторов. Условием для моего советника служит значения двух индикаторов - MFI и DEMA одновременно. Внедрил ваш алгоритм с MFI в советник - тщетно - не смог прогнать для оптимизации глобальных переменных.
В статье о советнике https://www.mql5.com/ru/articles/100 говориться об условий по открытию позиций, но отсутствуют условия их закрытия.
bool Buy_opened=false; // переменные, в которых будет храниться информация bool Sell_opened=false; // о наличии соответствующих открытых позицийif(PositionSelect(_Symbol)==true) // есть открытая позиция
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Buy_opened=true; //это длинная позиция
}
elseif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
Sell_opened=true; // это короткая позиция
}
}
bool Buy_Condition_1=...
bool Buy_Condition_2=...
bool Buy_Condition_3=...
if(Buy_Condition_1 || Buy_Condition_2)
{
if(Buy_Condition_3)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Уже есть позиция на покупку!!!");
return; // не добавлять к открытой позиции на покупку
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=10; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
}
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
return; // закрыл
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена bid
mrequest.sl = 0;
mrequest.tp = 0;
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_SELL; // ордер на продажу // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=10; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
Вместо вопросительных знаков ставил PositionSelect(_Symbol) с значением true. Не помогло.
Вопрос. Что можно изменить по минимуму - дабы иметь возможность задать условия закрытия позиций ?
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
Спасибо, как чувствовал, что ответ очень прост и что он рядом. Однако возник еще один вопрос по части вопросительных знаков.
По алгоритму.
При соответствующих условиях + отсутствие позиции - позиция открывается, а при иных условиях и наличия открытой позиции - открытая позиция закрывается.
Если не ошибаюсь - наличие позиции, а именно Buy_opened
if(Buy_Condition_1 || Buy_Condition_2)
{
if(Buy_Condition_3)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Уже есть позиция на покупку!!!");
return; // не добавлять к открытой позиции на покупку
}
равной единице - вызывает алерт и return (возвращает к началу), а равной нулю - открывает ордер на покупку.
Вопрос. Что необходимо написать вместо вопросительных знаков - условие имеющегося открытого ордера, чтобы советник не открывал позицию (в моем случае - открытие ордера на продажу) ?
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
return; // закрыл
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена bid
mrequest.sl = 0;
mrequest.tp = 0;
В настоящий момент прописал также Buy_opened, поскольку условия этого определения связаны с PositionSelect(_Symbol)
Понимаю, что вопросы ничего не значат, поскольку можно быстро перепробывать все возможные логические варианты и протестить, но проблема в том, что баг тестера не позволяет мне это сделать, но есть возможность реально диагностировать на М1 в режиме реальной торговли.
Понимаю, что вопросы ничего не значат, поскольку можно быстро перепробывать все возможные логические варианты и протестить, но проблема в том, что баг тестера не позволяет мне это сделать, но есть возможность реально диагностировать на М1 в режиме реальной торговли.
Не совсем понял Ваш вопрос.
А что за баг в тестере Вы обнаружили, который не позволяет провести тест?
А что за баг в тестере Вы обнаружили, который не позволяет провести тест?
Описывал ранее, либо в ветке индикатор. Dema ссылающийся на хэндл индикатора MFI - не отображается в окне MFI, и следовательно -тестер не работает, но работает сам советник. Тоже самое и с МА, АМА...!
Про вопрос. Что нужно написать вместо вопросительных знаков, чтобы советник "понимал", что имеется открытая позиция и не открывал ордер!
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
// Return убрал благодаря форуму ))
}
Lester: Описывал ранее, либо в ветке индикатор. Dema ссылающийся на хэндл индикатора MFI - не отображается в окне MFI, и следовательно - советник не работает. Тоже самое и с МА, АМА...!
Про вопрос. Что нужно написать вместо вопросительных знаков, чтобы советник "понимал", что имеется открытая позиция и не открывал ордер!
Если есть позиция (PositionSelect(_Symbol)) и все остальные условия выполняются, то закрыть позицию. Если return из Вашего примера не убирать, то условие должно выглядеть так:
if(!PositionSelect(_Symbol))
{
return;
}
что означает, если позиции нет, то выйти. Если не вышли, то программа будет выполнять код, который идёт за этим блоком.
Но я бы поставил проверку на наличие/отсутствие позиции до проверок условий на закрытие.
Клиентский терминал / Тестер стратегий / Работа с тестером / Форвард-тестирование
Спасибо.
Да, по этому линку
http://www.metatrader5.com/ru/terminal/help/tester/tester_using/forward_testing
Я нашел ответ на второй свой вопрос. Однако там НЕТ ОТВЕТОВ НА ПЕРВЫЙ И ТРЕТИЙ ВОПРОСЫ.
Я бы тоже их хотел иметь.
Хотел бы знать результаты и соотношения имеющие место у других трейдеров. Так как полученные мною результаты очень настораживают. Я ученый в области автоматического управления и МОДЕЛИРОВАНИЯ НЕСТАЦИОНАРНЫХ ПРОЦЕССОВ, к которым относится такжне график движения цены на рынке. Я много лет моделировал нестационарные процессы и то, как работает тестер никак не вкладыватся в мой многолетний опыт. Что-то здесь не так. То ли я неверно пользуюсь тестером то ли он неверно работает. Давайте вместе разберемся.
У меня проведение бектеста строго по периоду оптимизации показывает 200% прибыли от той, что при тех же параметрах мы имели во время оптимизации. А при выборе иных оптимизационных параметров проводя тестирование опять же по периоду оптимизации мы получаем прибыль в несколько раз менее. Такого не должно быть в принципе. Именно поэтому возникли у меня вопросы.
Ну, это уже не ко мне. Как говорится, "Чем могу" (с). От самой темы я далек. Попробуйте поиском по форуму, может где уже форвард-тестирование и обсуждалось. Или, если считаете, что тема очень значимая, создайте новую тематическую ветку. А то в общей ветке вопросы быстро затеряются.
В терминале тоже есть справочные материалы. F1.
Сделано-очен тупо поделал.
Взял тело индикатора Custom Moving Average и внутри поставил буфер MFI .
Поменял где надо цена.Вот и все.
Сделал тебе и как експерт,толко индюк и комент-для проверки.Нормално.
Еще раз- благодарю за сообщения.
Вместо вопросительных знаков ставил PositionSelect(_Symbol) с значением true. Не помогло.
Вопрос. Что можно изменить по минимуму - дабы иметь возможность задать условия закрытия позиций ?В статье о советнике https://www.mql5.com/ru/articles/100 говориться об условий по открытию позиций, но отсутствуют условия их закрытия.
Вместо вопросительных знаков ставил PositionSelect(_Symbol) с значением true. Не помогло.
Вопрос. Что можно изменить по минимуму - дабы иметь возможность задать условия закрытия позиций ?У Вас после Alert стоит return. Позиция не закрывалась видимо из-за этого возврата. Уберите и попробуйте снова.
Однако возник еще один вопрос по части вопросительных знаков.
По алгоритму.
При соответствующих условиях + отсутствие позиции - позиция открывается, а при иных условиях и наличия открытой позиции - открытая позиция закрывается.
Если не ошибаюсь - наличие позиции, а именно Buy_opened
равной единице - вызывает алерт и return (возвращает к началу), а равной нулю - открывает ордер на покупку.
Вопрос. Что необходимо написать вместо вопросительных знаков - условие имеющегося открытого ордера, чтобы советник не открывал позицию (в моем случае - открытие ордера на продажу) ?
В настоящий момент прописал также Buy_opened, поскольку условия этого определения связаны с PositionSelect(_Symbol)
Понимаю, что вопросы ничего не значат, поскольку можно быстро перепробывать все возможные логические варианты и протестить, но проблема в том, что баг тестера не позволяет мне это сделать, но есть возможность реально диагностировать на М1 в режиме реальной торговли.
...
Понимаю, что вопросы ничего не значат, поскольку можно быстро перепробывать все возможные логические варианты и протестить, но проблема в том, что баг тестера не позволяет мне это сделать, но есть возможность реально диагностировать на М1 в режиме реальной торговли.
Не совсем понял Ваш вопрос.
А что за баг в тестере Вы обнаружили, который не позволяет провести тест?
Не совсем понял Ваш вопрос.
А что за баг в тестере Вы обнаружили, который не позволяет провести тест?
Про вопрос. Что нужно написать вместо вопросительных знаков, чтобы советник "понимал", что имеется открытая позиция и не открывал ордер!
Описывал ранее, либо в ветке индикатор. Dema ссылающийся на хэндл индикатора MFI - не отображается в окне MFI, и следовательно - советник не работает. Тоже самое и с МА, АМА...!
Про вопрос. Что нужно написать вместо вопросительных знаков, чтобы советник "понимал", что имеется открытая позиция и не открывал ордер!
Если есть позиция (PositionSelect(_Symbol)) и все остальные условия выполняются, то закрыть позицию. Если return из Вашего примера не убирать, то условие должно выглядеть так:
что означает, если позиции нет, то выйти. Если не вышли, то программа будет выполнять код, который идёт за этим блоком.
Но я бы поставил проверку на наличие/отсутствие позиции до проверок условий на закрытие.